杨杰 4 år sedan
förälder
incheckning
3e5a98f482

+ 9 - 6
src/main/java/com/llisoft/pay/service/AliPayService.java

@@ -1,6 +1,5 @@
 package com.llisoft.pay.service;
 
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 
@@ -149,7 +148,7 @@ public class AliPayService {
 		}
 		logger.info("请求支付宝查询接口返回: {}", result);
 		// {"alipay_trade_query_response":{"code":"10000","msg":"Success","buyer_logon_id":"ipb***@sandbox.com","buyer_pay_amount":"0.00","buyer_user_id":"2088102170394382","buyer_user_type":"PRIVATE","invoice_amount":"0.00","out_trade_no":"1529637131201603","point_amount":"0.00","receipt_amount":"0.00","send_pay_date":"2018-06-22 11:12:23","total_amount":"12.00","trade_no":"2018062221001004380200826678","trade_status":"TRADE_SUCCESS"},"sign":"gnWtxKDDhkRmoWnfwLVs2RGtt4GbiY+xaVs5+G47D5e9SnQHqGnElKme4jlDdnqhAroX3aqyJLVexohBjzA+DlpRzDhIu5EZLXnDr/B2FZEVjyiU66ImVH6vSyWyOVEjbGIgmVhUslhXqXYK5KxAx3QAdLrJLQeMO/gUdjs0qWcGO9yTU/suDy0YcdLSLlFyUutwD2MBz4Ri0tBk+uHjpxXoTZeb9/lQ7e4BixwCy+wB3hcESWN1b/m77YLKztmbLy67auhxzP9TRwQQ+6WRrTdMe/9rouIt6AW9T+6XSFd/LwL73Qo+1MfQa+iEUx2Iq+AYekhSgVyLJMRgz/qoZA=="}
-		Map<String, Object> resultMap = JsonUtil.toObject(result, HashMap.class);
+		Map<String, Object> resultMap = JsonUtil.toObject(result, Map.class, String.class, Object.class);
 		Map<String, String> map = (Map<String, String>) resultMap.get("alipay_trade_query_response");
 		if(!"10000".equals(map.get("code"))) {
 			logger.error("支付宝查询: 接口状态异常: {}", map);
@@ -157,10 +156,14 @@ public class AliPayService {
 		}
 		// 验证支付宝交易状态
 		if(!this.checkStatus(map)) {
-			logger.error("支付宝查询: 交易状态异常: {}", map);
+			logger.error("支付宝处理: 交易状态异常: {}", map);
 			return false;
 		}
-		return this.dispose(map);
+		// 完成支付
+		String tradenum = map.get("trade_no"); // 支付宝交易号
+		int totalAmount = DecimalUtil.toInt(map.get("total_amount"));	// 实际支付金额
+		payService.finish(paynum, tradenum, totalAmount, PayService.FLAG_NOTIFY);
+		return true;
 	}
 	
 	/**
@@ -172,12 +175,12 @@ public class AliPayService {
 	public boolean dispose(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;
 		}
 		// 完成支付

+ 3 - 0
src/main/java/com/llisoft/pay/service/PayService.java

@@ -137,6 +137,9 @@ public class PayService {
 	 */
 	public boolean check(int orderId) throws Exception {
 		Item pay = payDao.selectByOrderIdLast(orderId);
+		if(Objects.isNull(pay)) {
+			return false;
+		}
 		// 未支付状态,去第三方验证
 		if (pay.getPayStatus() == STATUS_WAIT) {
 			if(pay.getPayType() == TYPE_ALI) {