Skip to content

Commit 0faa301

Browse files
committed
提供支付订单直接设置异步回调地址
1 parent 47b2bf9 commit 0faa301

File tree

3 files changed

+44
-7
lines changed

3 files changed

+44
-7
lines changed

pay-java-common/src/main/java/com/egzosn/pay/common/bean/AssistOrder.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ public class AssistOrder implements Order {
2929
* 交易类型
3030
*/
3131
private TransactionType transactionType;
32+
33+
/**
34+
* 异步回调通知
35+
*/
36+
private String notifyUrl;
37+
3238
/**
3339
* 订单附加信息,可用于预设未提供的参数,这里会覆盖以上所有的订单信息,
3440
*/
@@ -122,5 +128,11 @@ public void addAttr(String key, Object value) {
122128
getAttrs().put(key, value);
123129
}
124130

131+
public String getNotifyUrl() {
132+
return notifyUrl;
133+
}
125134

135+
public void setNotifyUrl(String notifyUrl) {
136+
this.notifyUrl = notifyUrl;
137+
}
126138
}

pay-java-fuiou/src/main/java/com/egzosn/pay/fuiou/api/FuiouPayService.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.egzosn.pay.common.bean.MethodType;
1414
import com.egzosn.pay.common.bean.NoticeParams;
1515
import com.egzosn.pay.common.bean.NoticeRequest;
16+
import com.egzosn.pay.common.bean.OrderParaStructure;
1617
import com.egzosn.pay.common.bean.PayMessage;
1718
import com.egzosn.pay.common.bean.PayOrder;
1819
import com.egzosn.pay.common.bean.PayOutMessage;
@@ -72,6 +73,10 @@ public class FuiouPayService extends BasePayService<FuiouPayConfigStorage> {
7273
* 3.4订单退款
7374
*/
7475
public static final String URL_NewSmpRefundGate = "newSmpRefundGate.do";
76+
/**
77+
* 异步通知
78+
*/
79+
public static final String BACK_NOTIFY_URL = "back_notify_url";
7580

7681

7782
/**
@@ -199,7 +204,12 @@ public Map<String, Object> orderInfo(PayOrder order) {
199204
parameters.put("md5", sign);
200205
return parameters;
201206
}
202-
207+
private Map<String, Object> initNotifyUrl(Map<String, Object> parameters, AssistOrder order) {
208+
OrderParaStructure.loadParameters(parameters, BACK_NOTIFY_URL, payConfigStorage.getNotifyUrl());
209+
OrderParaStructure.loadParameters(parameters, BACK_NOTIFY_URL, order.getNotifyUrl());
210+
OrderParaStructure.loadParameters(parameters, BACK_NOTIFY_URL, order);
211+
return parameters;
212+
}
203213
/**
204214
* 按序添加请求参数
205215
*
@@ -222,8 +232,7 @@ private Map<String, Object> getOrderInfo(PayOrder order) {
222232
//商户接受支付结果通知地址
223233
parameters.put("page_notify_url", payConfigStorage.getReturnUrl());
224234
//商户接受的支付结果后台通知地址 //非必填
225-
parameters.put("back_notify_url", StringUtils.isBlank(payConfigStorage.getNotifyUrl()) ? "" : payConfigStorage.getNotifyUrl());
226-
235+
initNotifyUrl(parameters, order);
227236
if (null != order.getExpirationTime()) {
228237
parameters.put("order_valid_time", DateUtils.minutesRemaining(order.getExpirationTime()) + "m");
229238
}

pay-java-union/src/main/java/com/egzosn/pay/union/api/UnionPayService.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
import com.egzosn.pay.common.bean.MethodType;
3333
import com.egzosn.pay.common.bean.NoticeParams;
34+
import com.egzosn.pay.common.bean.OrderParaStructure;
3435
import com.egzosn.pay.common.bean.PayMessage;
3536
import com.egzosn.pay.common.bean.PayOrder;
3637
import com.egzosn.pay.common.bean.PayOutMessage;
@@ -166,6 +167,21 @@ public String getFileTransUrl() {
166167
return String.format(FILE_TRANS_URL, getReqUrl());
167168
}
168169

170+
/**
171+
* 后台通知地址
172+
*
173+
* @param parameters 预订单信息
174+
* @param order 订单
175+
* @return 预订单信息
176+
*/
177+
private Map<String, Object> initNotifyUrl(Map<String, Object> parameters, AssistOrder order) {
178+
//后台通知地址
179+
OrderParaStructure.loadParameters(parameters, SDKConstants.param_backUrl, payConfigStorage.getNotifyUrl());
180+
OrderParaStructure.loadParameters(parameters, SDKConstants.param_backUrl, order.getNotifyUrl());
181+
OrderParaStructure.loadParameters(parameters, SDKConstants.param_backUrl, order);
182+
return parameters;
183+
}
184+
169185

170186
/**
171187
* 银联全渠道系统,产品参数,除了encoding自行选择外其他不需修改
@@ -182,11 +198,11 @@ private Map<String, Object> getCommonParam() {
182198
//商户代码
183199
params.put(SDKConstants.param_merId, payConfigStorage.getPid());
184200

185-
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
186201
//订单发送时间
187-
params.put(SDKConstants.param_txnTime, df.format(System.currentTimeMillis()));
202+
params.put(SDKConstants.param_txnTime, DateUtils.formatDate(new Date(), DateUtils.YYYYMMDDHHMMSS));
188203
//后台通知地址
189204
params.put(SDKConstants.param_backUrl, payConfigStorage.getNotifyUrl());
205+
190206
//交易币种
191207
params.put(SDKConstants.param_currencyCode, "156");
192208
//接入类型,商户接入填0 ,不需修改(0:直连商户, 1: 收单机构 2:平台商户)
@@ -282,7 +298,7 @@ public Map<String, Object> orderInfo(PayOrder order) {
282298
Map<String, Object> params = this.getCommonParam();
283299

284300
UnionTransactionType type = (UnionTransactionType) order.getTransactionType();
285-
301+
initNotifyUrl(params, order);
286302

287303
//设置交易类型相关的参数
288304
type.convertMap(params);
@@ -645,7 +661,7 @@ public UnionRefundResult unionRefundOrConsumeUndo(RefundOrder refundOrder, Union
645661
String responseStr = getHttpRequestTemplate().postForObject(this.getBackTransUrl(), params, String.class);
646662
JSONObject response = UriVariables.getParametersToMap(responseStr);
647663

648-
if (this.verify(response)) {
664+
if (this.verify(new NoticeParams(response))) {
649665
final UnionRefundResult refundResult = UnionRefundResult.create(response);
650666
if (SDKConstants.OK_RESP_CODE.equals(refundResult.getRespCode())) {
651667
return refundResult;

0 commit comments

Comments
 (0)