|
@@ -163,9 +163,34 @@ public class WebsiteUserOrderService extends CrudService<WebsiteUserOrderDao, We
|
|
|
|
|
|
public String payAsyncNotify(Map<String, String> paramMap) {
|
|
|
logger.info("zfb payAsyncNotify 进来了 {}", JSONObject.toJSONString(paramMap));
|
|
|
- boolean signVerified = false; //调用SDK验证签名
|
|
|
try {
|
|
|
- signVerified = AlipaySignature.rsaCheckV1(paramMap, alipayUtil.alipay_public_key, alipayUtil.charset, alipayUtil.sign_type);
|
|
|
+ // 交易状态
|
|
|
+ String trade_status = paramMap.get("trade_status");
|
|
|
+ String out_trade_no = paramMap.get("out_trade_no");
|
|
|
+ String total_amount = paramMap.get("total_amount");
|
|
|
+ String gmt_payment = paramMap.get("gmt_payment");
|
|
|
+ boolean signVerified = AlipaySignature.rsaCheckV1(paramMap, alipayUtil.alipay_public_key, alipayUtil.charset, alipayUtil.sign_type);
|
|
|
+ if (signVerified) {
|
|
|
+ // TODO 验签成功后,按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验,校验成功后在response中返回success并继续商户自身业务处理,校验失败返回failure
|
|
|
+ if ("TRADE_SUCCESS".equals(trade_status) || "TRADE_FINISHED".equals(trade_status)) {
|
|
|
+ WebsiteUserOrder where = new WebsiteUserOrder();
|
|
|
+ where.setOrderNumber(out_trade_no);
|
|
|
+ where.setPayStatus(Constants.orderPayStatus.WAIT);
|
|
|
+ WebsiteUserOrder websiteUserOrder = dao.get(where);
|
|
|
+ if (websiteUserOrder == null) {
|
|
|
+ logger.error("zfb payAsyncNotify error {}订单不存在未支付", out_trade_no);
|
|
|
+ } else {
|
|
|
+ if (!total_amount.equals(websiteUserOrder.getPayPrice().toString())) {
|
|
|
+ logger.error("zfb payAsyncNotify amount不相等 {} {}", total_amount, websiteUserOrder.getPayPrice().toString());
|
|
|
+ return "failure";
|
|
|
+ }
|
|
|
+ websiteUserOrder.setPayStatus(Constants.orderPayStatus.PAY_SUCCESS);
|
|
|
+ websiteUserOrder.setPayDate(DateUtils.parseDateByFormat(gmt_payment, "yyyy-MM-dd HH:mm:ss"));
|
|
|
+ super.update(websiteUserOrder);
|
|
|
+ }
|
|
|
+ return "success";
|
|
|
+ }
|
|
|
+ }
|
|
|
} catch (AlipayApiException e) {
|
|
|
logger.error("zfb payAsyncNotify error {}", e);
|
|
|
return "failure";
|