diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/bean/AssistOrder.java b/pay-java-common/src/main/java/com/egzosn/pay/common/bean/AssistOrder.java index 67f95f5..52cb462 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/bean/AssistOrder.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/bean/AssistOrder.java @@ -29,6 +29,12 @@ public class AssistOrder implements Order { * 交易类型 */ private TransactionType transactionType; + + /** + * 异步回调通知 + */ + private String notifyUrl; + /** * 订单附加信息,可用于预设未提供的参数,这里会覆盖以上所有的订单信息, */ @@ -122,5 +128,11 @@ public class AssistOrder implements Order { getAttrs().put(key, value); } + public String getNotifyUrl() { + return notifyUrl; + } + public void setNotifyUrl(String notifyUrl) { + this.notifyUrl = notifyUrl; + } } diff --git a/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java b/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java index d46bc98..e942664 100644 --- a/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java +++ b/pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java @@ -13,6 +13,7 @@ import com.egzosn.pay.common.bean.BillType; import com.egzosn.pay.common.bean.MethodType; import com.egzosn.pay.common.bean.NoticeParams; import com.egzosn.pay.common.bean.NoticeRequest; +import com.egzosn.pay.common.bean.OrderParaStructure; import com.egzosn.pay.common.bean.PayMessage; import com.egzosn.pay.common.bean.PayOrder; import com.egzosn.pay.common.bean.PayOutMessage; @@ -72,6 +73,10 @@ public class FuiouPayService extends BasePayService { * 3.4订单退款 */ public static final String URL_NewSmpRefundGate = "newSmpRefundGate.do"; + /** + * 异步通知 + */ + public static final String BACK_NOTIFY_URL = "back_notify_url"; /** @@ -199,7 +204,12 @@ public class FuiouPayService extends BasePayService { parameters.put("md5", sign); return parameters; } - + private Map initNotifyUrl(Map parameters, AssistOrder order) { + OrderParaStructure.loadParameters(parameters, BACK_NOTIFY_URL, payConfigStorage.getNotifyUrl()); + OrderParaStructure.loadParameters(parameters, BACK_NOTIFY_URL, order.getNotifyUrl()); + OrderParaStructure.loadParameters(parameters, BACK_NOTIFY_URL, order); + return parameters; + } /** * 按序添加请求参数 * @@ -222,8 +232,7 @@ public class FuiouPayService extends BasePayService { //商户接受支付结果通知地址 parameters.put("page_notify_url", payConfigStorage.getReturnUrl()); //商户接受的支付结果后台通知地址 //非必填 - parameters.put("back_notify_url", StringUtils.isBlank(payConfigStorage.getNotifyUrl()) ? "" : payConfigStorage.getNotifyUrl()); - + initNotifyUrl(parameters, order); if (null != order.getExpirationTime()) { parameters.put("order_valid_time", DateUtils.minutesRemaining(order.getExpirationTime()) + "m"); } diff --git a/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java b/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java index 1cda4f4..42f82f3 100644 --- a/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java +++ b/pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java @@ -31,6 +31,7 @@ import com.egzosn.pay.common.bean.BillType; import com.egzosn.pay.common.bean.MethodType; import com.egzosn.pay.common.bean.NoticeParams; +import com.egzosn.pay.common.bean.OrderParaStructure; import com.egzosn.pay.common.bean.PayMessage; import com.egzosn.pay.common.bean.PayOrder; import com.egzosn.pay.common.bean.PayOutMessage; @@ -166,6 +167,21 @@ public class UnionPayService extends BasePayService { return String.format(FILE_TRANS_URL, getReqUrl()); } + /** + * 后台通知地址 + * + * @param parameters 预订单信息 + * @param order 订单 + * @return 预订单信息 + */ + private Map initNotifyUrl(Map parameters, AssistOrder order) { + //后台通知地址 + OrderParaStructure.loadParameters(parameters, SDKConstants.param_backUrl, payConfigStorage.getNotifyUrl()); + OrderParaStructure.loadParameters(parameters, SDKConstants.param_backUrl, order.getNotifyUrl()); + OrderParaStructure.loadParameters(parameters, SDKConstants.param_backUrl, order); + return parameters; + } + /** * 银联全渠道系统,产品参数,除了encoding自行选择外其他不需修改 @@ -182,11 +198,11 @@ public class UnionPayService extends BasePayService { //商户代码 params.put(SDKConstants.param_merId, payConfigStorage.getPid()); - DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); //订单发送时间 - params.put(SDKConstants.param_txnTime, df.format(System.currentTimeMillis())); + params.put(SDKConstants.param_txnTime, DateUtils.formatDate(new Date(), DateUtils.YYYYMMDDHHMMSS)); //后台通知地址 params.put(SDKConstants.param_backUrl, payConfigStorage.getNotifyUrl()); + //交易币种 params.put(SDKConstants.param_currencyCode, "156"); //接入类型,商户接入填0 ,不需修改(0:直连商户, 1: 收单机构 2:平台商户) @@ -282,7 +298,7 @@ public class UnionPayService extends BasePayService { Map params = this.getCommonParam(); UnionTransactionType type = (UnionTransactionType) order.getTransactionType(); - + initNotifyUrl(params, order); //设置交易类型相关的参数 type.convertMap(params); @@ -645,7 +661,7 @@ public class UnionPayService extends BasePayService { String responseStr = getHttpRequestTemplate().postForObject(this.getBackTransUrl(), params, String.class); JSONObject response = UriVariables.getParametersToMap(responseStr); - if (this.verify(response)) { + if (this.verify(new NoticeParams(response))) { final UnionRefundResult refundResult = UnionRefundResult.create(response); if (SDKConstants.OK_RESP_CODE.equals(refundResult.getRespCode())) { return refundResult;