|
@@ -53,6 +53,9 @@ public class AliPayService {
|
|
|
|
|
|
@Autowired
|
|
|
private PayService payService;
|
|
|
+ @Autowired
|
|
|
+ private AppService appService;
|
|
|
+
|
|
|
private AlipayClient alipayClient;
|
|
|
|
|
|
|
|
@@ -156,41 +159,57 @@ public class AliPayService {
|
|
|
}
|
|
|
// 验证支付宝交易状态
|
|
|
if(!this.checkStatus(map)) {
|
|
|
- logger.error("支付宝处理: 交易状态异常: {}", map);
|
|
|
+ logger.error("支付宝查询: 交易状态异常: {}", map);
|
|
|
return false;
|
|
|
}
|
|
|
// 完成支付
|
|
|
String tradenum = map.get("trade_no"); // 支付宝交易号
|
|
|
int totalAmount = DecimalUtil.toInt(map.get("total_amount")); // 实际支付金额
|
|
|
- payService.finish(paynum, tradenum, totalAmount, PayService.FLAG_NOTIFY);
|
|
|
- return true;
|
|
|
+ return payService.finish(paynum, tradenum, totalAmount, PayService.FLAG_NOTIFY);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 处理通知
|
|
|
+ * 处理同步回调
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public String doReturn(Map<String, String> map) throws Exception {
|
|
|
+ // 验证签名
|
|
|
+ if(!this.checkSign(map)) {
|
|
|
+ logger.error("支付宝同步回调: 签名验证失败: {}", map);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ // 通过接口查询订单 (同步回调不可靠)
|
|
|
+ String payNum = map.get("out_trade_no");
|
|
|
+ if(this.query(payNum)) {
|
|
|
+ return appService.returnUrl(payNum);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理异步通知
|
|
|
* @param map
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
- public boolean dispose(Map<String, String> map) throws Exception {
|
|
|
+ public boolean doNotify(Map<String, String> map) throws Exception {
|
|
|
// 验证签名
|
|
|
if(!this.checkSign(map)) {
|
|
|
- logger.error("支付宝处理: 签名验证失败: {}", map);
|
|
|
+ logger.error("支付宝异步通知: 签名验证失败: {}", map);
|
|
|
return false;
|
|
|
}
|
|
|
// 验证支付宝交易状态
|
|
|
if(!this.checkStatus(map)) {
|
|
|
- logger.error("支付宝处理: 交易状态异常: {}", map);
|
|
|
+ logger.error("支付宝异步通知: 交易状态异常: {}", map);
|
|
|
return false;
|
|
|
}
|
|
|
// 完成支付
|
|
|
String paynum = map.get("out_trade_no"); // paynum
|
|
|
String tradenum = map.get("trade_no"); // 支付宝交易号
|
|
|
int totalAmount = DecimalUtil.toInt(map.get("total_amount")); // 实际支付金额
|
|
|
- payService.finish(paynum, tradenum, totalAmount, PayService.FLAG_NOTIFY);
|
|
|
- return true;
|
|
|
+ return payService.finish(paynum, tradenum, totalAmount, PayService.FLAG_NOTIFY);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 验证签名
|
|
|
* @param map
|