Forráskód Böngészése

fix 支付宝支付能正常启动

Administrator 1 éve
szülő
commit
3e6dc5604c

+ 55 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/alipay/AlipayTradeWapPayController.java

@@ -0,0 +1,55 @@
+package com.ruoyi.web.controller.alipay;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.system.service.IAlipayService;
+import io.swagger.annotations.ApiOperation;
+import org.apache.ibatis.logging.Log;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * 支付宝支付
+ * @Author: tjf
+ * @Date: 2024/1/18 10:00
+ * @Describe:
+ */
+@CrossOrigin
+@RestController
+@RequestMapping("/ali/pay")
+public class AlipayTradeWapPayController {
+
+    @Autowired
+    private IAlipayService alipayService;
+
+    @ApiOperation("统一收单下单并支付接口调用")
+    @GetMapping("/scanPay")
+    public String tradePagePay() throws Exception {
+        System.out.println("统一收单下单并支付接口调用");
+        /*
+        支付宝开放平台接收 request 请求对象后
+        会为开发者生成一个html形式的form表单,包含自动提交的脚本
+         */
+        String formStr = alipayService.tradeCreate();
+        /*
+        将form表单字符串返回给前端
+        前端自动提交脚本
+        表单会自动提交到 action熟悉只想的支付宝开放平台中 为用户展示一个支付页面
+         */
+        return formStr;
+    }
+    /**
+     * 支付宝回调
+     *
+     * @param params
+     * @return
+     */
+    @ApiOperation("交易通知")
+    @PostMapping("/tradeNotify")
+    public String tradeNotify(@RequestParam Map<String, String> params) {
+        System.out.println("支付通知,正在执行,通知参数:{}"+JSONObject.toJSONString(params));
+        return alipayService.tradeNotify(params);
+    }
+
+}

+ 17 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -89,4 +89,20 @@ wx:
   # 回调接口地址
   # 回调接口地址
   notify-url: https://xxxx/a/biz/wxpay/payNotify
   notify-url: https://xxxx/a/biz/wxpay/payNotify
   # 证书地址
   # 证书地址
-  key-path: module-app/src/main/resources/cert/apiclient_key.pem
+  key-path: module-app/src/main/resources/cert/apiclient_key.pem
+# 支付宝支付相关参数
+ali:
+# 应用ID ,APPID
+   app-id: 2021000
+  # 商户PID
+   seller-id: 208862198
+  # 支付宝网关
+   gateway-url: https://openapi.alipaydev.com/gateway.do
+  #商户私钥 RSA2私钥
+   merchant-private-key: /IE7GuL7ncnxUFofSBQpS7vdbvVNqmuI+1aT8ratWN9QvPdjjrKXmo79iR+KHe+gz2NsC8nnjsV5sTA21mbnnnO3IUg1qJkbpL7lgKSE3GjH/f+8IGgllIKac/2UfWxbjaVjuSCxND5yHgpZLagO6DxkKID68czt/r602avcJtJ1x6TMwrYyvVrtuSBvy/9iNJPKN8aIt596znIAX+8XXJx7UJ9B1NwoaAUbwvu0Wdk4v9Vw55IOZGIUHVwfW3K3ol2QWPlxIb8cxK4pwvcnk0+dcZ2cU7YDNO0DYYoy4sIXLBvn52TR/FPAgMBAAECggEAQ8itCkCVOKb4O3g3WGCcwXAbQSjMcTuJAZGhEd5auKc0n4ZNYFVKmUg2tDhdzHoQbpV+sDUBZS9+5RVX538+AcKHlZaDCsmzEIHvG86MtYVTry69zZtzfEMASdvwH+VmJZD16NR8ctLJxPk4+iTYm1v1jONojizF4MuEV37NYs1CXcDPzg3iW3QYuTCgqzyD6U1XB8BwpzzxA0spvU97TuTtsuqom57fZVTwvqeyIUcR9t86m4Yt4oSH5k1cWc+rxvcsa+tIoXFo8x4NO/RB0H5Pnpxr5RkLz+PfJ2P4TnN2XunZHFI5GfuxWS6Dry81aV2yKeFp/sDUDED65h8wYQKBgQDPv/sZihsfRhFaCwAr/NWTgv12/rPbPULbsCOVO2mS7KDn4gM4b9xqUVtCmwjVAPVSK4K3RipcmKA4rNa0KH+0Ku109L5ydlErcHTnLJwFirwGezKHwCzT+yBYATLKg4NRJmDDcMJtTQA2tmA3YIC7HKFfjUqnWUR6z6bhucl/GQKBgQCg0q7HtX/a0FjB2RyCSnH03Ujeq250FuLPC/F5EiRx5YkGDnSvvaGdCwXHEYRwN75FIMAssi5hs1EU3OQVYgEtnGDwKvKgmdZySL4g+TfZezmMeoyokZV33KI/3lk16x9IYAR9LCGCMyghWbEd+4EM/WJJavdQ6vShC/sGy69IpwKBgHkhcwMdJ1tAu3VI3LzJGq57vdXYBH5cZdM6DEVC8vebyOXrPf12G4pSDWf0hV3MxT036Wt7GdALnb/t5vH8exlNvk5nNXP/0KwHUeJIfGAu2BrfUkMcpgajceReLoMt0y9JtTm/UV3xe6JrDAa92dE/jEfuVgzlW6xPzvnmHbphAoGAWHCDvT+KeAJrTO7gRqY51LZ8BDeyHhUX1VR0Dmhzsk7P84yvjpVx8rLFEpwHgM6my80e4XV7HC9IP3jZ1Qh4LWT5yhlUJA11aJOoOunSVL72/tHF2E13LNsgPo8/7+7E3UAwN8W1B6yqPOzeAeb1KPeOvWEdcFpE/OthuHL6ibECgYEArFSKaurnzbs01mFICz5P5kDoytM3cII9oZsDktdUVtB6roaVc4gbP4BSCwUH3Abkkm8mNJdcXZB0gRmn+JGhJ0m6CvGCLEefmMndxHuYQAtDYJO78XvAPHokx80U0RSWRQZ6/fEygHctmu9Bj/kHYXiH1lxIo1Dbcu4rvJb9LXc=
+  # 支付宝公钥
+   public-key: /+BlPxc8HG/4p2r+Z4EIzU7gFKkuE1I2xnDdJ+Dm1l//vYsArvtNwIKpOr0/oNfsNLhxhrswX7WEW3tyQopEU//KAhTXpsT0KTeKo8dxpl4FOJ9jrnkdVnxg/I2xY/oM7LeGoREiecJulcCa5cZbEct1OdnLzeQVomLlXUhBXZWyx1OVyzaQDk+X+yA2VY90uPvFcqFRBR5k3Y3fN7/39CTQvYWl+wvMcY4TFwO4j7hvLim9vgI3iyn2rOObMkGTJPlL9VNU5hBnRflBSjWAwIDAQAB
+  # 接口内容加密密钥 对此密钥
+   content-key: +ZyQ==
+  #页面跳转同步通知页面   测试地址  后期需要修改为实际地址
+   return-url: https://www.baidu.com/

+ 90 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/ali/AliPayBean.java

@@ -0,0 +1,90 @@
+package com.ruoyi.system.domain.ali;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author: tjf
+ * @Date: 2024/1/18 10:12
+ * @Describe:
+ */
+@Component
+@ConfigurationProperties(prefix = "ali")
+public class AliPayBean {
+    private String appId;
+    private String sellerId;
+    private String gatewayUrl;
+    private String merchantPrivateKey;
+    private String publicKey;
+    private String contentKey;
+    private String returnUrl;
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
+    public String getSellerId() {
+        return sellerId;
+    }
+
+    public void setSellerId(String sellerId) {
+        this.sellerId = sellerId;
+    }
+
+    public String getGatewayUrl() {
+        return gatewayUrl;
+    }
+
+    public void setGatewayUrl(String gatewayUrl) {
+        this.gatewayUrl = gatewayUrl;
+    }
+
+    public String getMerchantPrivateKey() {
+        return merchantPrivateKey;
+    }
+
+    public void setMerchantPrivateKey(String merchantPrivateKey) {
+        this.merchantPrivateKey = merchantPrivateKey;
+    }
+
+    public String getPublicKey() {
+        return publicKey;
+    }
+
+    public void setPublicKey(String publicKey) {
+        this.publicKey = publicKey;
+    }
+
+    public String getContentKey() {
+        return contentKey;
+    }
+
+    public void setContentKey(String contentKey) {
+        this.contentKey = contentKey;
+    }
+
+    public String getReturnUrl() {
+        return returnUrl;
+    }
+
+    public void setReturnUrl(String returnUrl) {
+        this.returnUrl = returnUrl;
+    }
+
+    @Override
+    public String toString() {
+        return "AliPayBean{" +
+                "appId='" + appId + '\'' +
+                ", sellerId='" + sellerId + '\'' +
+                ", gatewayUrl='" + gatewayUrl + '\'' +
+                ", merchantPrivateKey='" + merchantPrivateKey + '\'' +
+                ", publicKey='" + publicKey + '\'' +
+                ", contentKey='" + contentKey + '\'' +
+                ", returnUrl='" + returnUrl + '\'' +
+                '}';
+    }
+}

+ 24 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/IAlipayService.java

@@ -0,0 +1,24 @@
+package com.ruoyi.system.service;
+
+import java.util.Map;
+
+/**
+ * @Author: tjf
+ * @Date: 2024/1/18 10:03
+ * @Describe:
+ */
+public interface IAlipayService {
+    /**
+     * 支付宝开放平台接收 request请求对象后
+     * @return
+     */
+    String tradeCreate() throws Exception;
+
+    /**
+     * 支付宝回调
+     *
+     * @param params
+     * @return
+     */
+    String tradeNotify(Map<String, String> params);
+}

+ 80 - 9
ruoyi-admin/src/main/java/com/ruoyi/web/controller/alipay/AlipayTradeWapPay.java → ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AlipayServiceImpl.java

@@ -1,29 +1,50 @@
-package com.ruoyi.web.controller.alipay;
+package com.ruoyi.system.service.impl;
 
 
-import com.alipay.api.AlipayApiException;
-import com.alipay.api.AlipayClient;
-import com.alipay.api.DefaultAlipayClient;
-import com.alipay.api.AlipayConfig;
-import com.alipay.api.response.AlipayTradeWapPayResponse;
+import com.alipay.api.*;
 import com.alipay.api.domain.AlipayTradeWapPayModel;
 import com.alipay.api.domain.AlipayTradeWapPayModel;
+import com.alipay.api.internal.util.AlipaySignature;
 import com.alipay.api.request.AlipayTradeWapPayRequest;
 import com.alipay.api.request.AlipayTradeWapPayRequest;
+import com.alipay.api.response.AlipayTradeWapPayResponse;
+import com.ruoyi.system.domain.ali.AliPayBean;
+import com.ruoyi.system.domain.wx.WxPayV3Bean;
+import com.ruoyi.system.service.IAlipayService;
+import org.springframework.stereotype.Service;
 
 
-public class AlipayTradeWapPay {
+import javax.annotation.Resource;
+import java.util.Map;
 
 
-    public  void AlipayApi() throws AlipayApiException {
+/**
+ * @Author: tjf
+ * @Date: 2024/1/18 10:04
+ * @Describe:
+ */
+@Service
+public class AlipayServiceImpl implements IAlipayService {
+    @Resource
+    private AliPayBean aliPayBean;
+    /**
+     * 支付宝开放平台接收 request请求对象后
+     * @return
+     */
+    @Override
+    public String tradeCreate() throws Exception {
         String privateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCdEgdHzKCYUjMUW9eNkVU6I6JWstTRCw5w6typSld7LKF0mCCnz0GFrxx4p+28rQzp8V9ONH/UH81qFSrQQIZPMdJQITNqJNidC7ypMcarruZhvmwa/9O1U/teKbelMuBtWoke0deAl6YmNXcc5t1EU2mYbwF3ITYBylxRpQ5Mea6ScERP0kxfyTGkQ8K1TdrvXHvr0HePbl2TDBCN88B/QwTx0wIL1cdBSriewftiZ+PITctYlXtPqtKe/WEWl4vk+pfLYDH/q6XkR4zrxXkHhyV0JHZSeO2FNsMdcv3zImbaWAHdbiQj5gaWywXaMdnOaYyFKSSKStbYnWue6HHLAgMBAAECggEAPqYeOUkpFRhUP16Sj2jUcagc7C/QKsEaNXe4I93/HqYij/rNq6FDJSs/U/DHJmZvrDAWL39JLTayHAntVbsm1xesJ0HW3BNuQtWXnnS4JWpRgdMOE4bOzph8voYtNbshQPzHjH9uUWAraToSFHkQ8FvE1oQQNZANlpE8WWRYW6/bftFEkVi+VeJUH8xEhFUkwuMZ5w7ERnMCjqnzdtBYLFA3pAJQkyv0XLEj5Bs/IetF4Q4+IopeI/H7+vFwRmDnZvNDdgWOyFnWsuvW1rhJjhYF/B56MWZwP/KfbZdI3YjMdYpveULzesk4wlG5xuzmFsS3AKw2nm/Rq/HtQmIRgQKBgQDoJnPwii3nmiO/FA35pkVNvGWSBtHheRnwhUvwqd1p68/sxNPe5LiBP8zwr1hTtUT+zy5TZQLF3HIlzARIH6NVEh5YTFK3OkJu18w64IrAEKCMfO3U2lYaDIDHrPqkMMFYKKyNJA6cUkCG5g3QXNuFXqUPUjOJjAFTrRqGyVE3mwKBgQCtNPpz8nux/y+X6ggRDdeI2bpr+BrMQKT1DF/an9k8twP1i0S+RBkCEoRlSJ6gELE24dA6ZuU9tnE0FO14eM2cUviqHU3pkyUj9rcpHxlYBokCyr8q5EnTruYsAzoydcc99CiHD3QC2LDdFb5iGh+OGn+Gql5S2T6A5nO4zNKJkQKBgQDKvgJVGSg78way8n2+AHLYD+eYnzIeutdnkdIfbQn8XkApZEAwkgl8f06pCEmYWV/XNPMdS8MfL4XU8pbusgq/2eH8dTNr54prKTWoWb9zO1IrP1Opp8C4YSD6wVvnltjT+DmxzcKgzMijxzhbNy1UDbMTbVOrFUV3YV8gRaMTbwKBgBUfOMua7mqua+diqskpnvcZVhqEjwAJghRABhBrHdrBlsIC0cdCFqqiB3Myf+WVI4dF0lbM5Xe5H+TyCGOAl9JQa/KS0EWDpCvWkk95c2XApkSo5NceL8KYuYj0e8xbgIiVlbuirssKEcdkN2tPNDnoEVUiwY3o4C5n7ATFNYeBAoGBAKrFwAfpj70UC1jRmYJ/FL7h5M+CPIkweT+biD5YGC0T9ijrgKUm2LV1rCQyo70nGDP7/wK15XiuOk69oZCF/bdjNTpNpYA1j1sC1oHuq746zh/4protfOdb+mk6rVWwYF++swttQ5pcmu2W/l+ufd8edbkzMl/a2zi0kvVrnx2x";
         String privateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCdEgdHzKCYUjMUW9eNkVU6I6JWstTRCw5w6typSld7LKF0mCCnz0GFrxx4p+28rQzp8V9ONH/UH81qFSrQQIZPMdJQITNqJNidC7ypMcarruZhvmwa/9O1U/teKbelMuBtWoke0deAl6YmNXcc5t1EU2mYbwF3ITYBylxRpQ5Mea6ScERP0kxfyTGkQ8K1TdrvXHvr0HePbl2TDBCN88B/QwTx0wIL1cdBSriewftiZ+PITctYlXtPqtKe/WEWl4vk+pfLYDH/q6XkR4zrxXkHhyV0JHZSeO2FNsMdcv3zImbaWAHdbiQj5gaWywXaMdnOaYyFKSSKStbYnWue6HHLAgMBAAECggEAPqYeOUkpFRhUP16Sj2jUcagc7C/QKsEaNXe4I93/HqYij/rNq6FDJSs/U/DHJmZvrDAWL39JLTayHAntVbsm1xesJ0HW3BNuQtWXnnS4JWpRgdMOE4bOzph8voYtNbshQPzHjH9uUWAraToSFHkQ8FvE1oQQNZANlpE8WWRYW6/bftFEkVi+VeJUH8xEhFUkwuMZ5w7ERnMCjqnzdtBYLFA3pAJQkyv0XLEj5Bs/IetF4Q4+IopeI/H7+vFwRmDnZvNDdgWOyFnWsuvW1rhJjhYF/B56MWZwP/KfbZdI3YjMdYpveULzesk4wlG5xuzmFsS3AKw2nm/Rq/HtQmIRgQKBgQDoJnPwii3nmiO/FA35pkVNvGWSBtHheRnwhUvwqd1p68/sxNPe5LiBP8zwr1hTtUT+zy5TZQLF3HIlzARIH6NVEh5YTFK3OkJu18w64IrAEKCMfO3U2lYaDIDHrPqkMMFYKKyNJA6cUkCG5g3QXNuFXqUPUjOJjAFTrRqGyVE3mwKBgQCtNPpz8nux/y+X6ggRDdeI2bpr+BrMQKT1DF/an9k8twP1i0S+RBkCEoRlSJ6gELE24dA6ZuU9tnE0FO14eM2cUviqHU3pkyUj9rcpHxlYBokCyr8q5EnTruYsAzoydcc99CiHD3QC2LDdFb5iGh+OGn+Gql5S2T6A5nO4zNKJkQKBgQDKvgJVGSg78way8n2+AHLYD+eYnzIeutdnkdIfbQn8XkApZEAwkgl8f06pCEmYWV/XNPMdS8MfL4XU8pbusgq/2eH8dTNr54prKTWoWb9zO1IrP1Opp8C4YSD6wVvnltjT+DmxzcKgzMijxzhbNy1UDbMTbVOrFUV3YV8gRaMTbwKBgBUfOMua7mqua+diqskpnvcZVhqEjwAJghRABhBrHdrBlsIC0cdCFqqiB3Myf+WVI4dF0lbM5Xe5H+TyCGOAl9JQa/KS0EWDpCvWkk95c2XApkSo5NceL8KYuYj0e8xbgIiVlbuirssKEcdkN2tPNDnoEVUiwY3o4C5n7ATFNYeBAoGBAKrFwAfpj70UC1jRmYJ/FL7h5M+CPIkweT+biD5YGC0T9ijrgKUm2LV1rCQyo70nGDP7/wK15XiuOk69oZCF/bdjNTpNpYA1j1sC1oHuq746zh/4protfOdb+mk6rVWwYF++swttQ5pcmu2W/l+ufd8edbkzMl/a2zi0kvVrnx2x";
         String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAogc/9hKx6FAM6btKymkkFh932UfOPal4DgxXGstpFUG5Ehc+dMqm6e0CoMfNjZ4IBTRttE/OaBP/mW+YI53Tb+ND2rb22BqG+5JMp1WBJ4Tdz6DTKsbTRfN0Hrv1HiBglpgaJZs6Oymt1b43jnpL1bWsUULBnI+PWamlIottHK2IHC3/d5jN/9gz6TP6VkPnmokiBr0Hfcmv7jMjWsVsOf1wh5Jk/I7VSc+H314EO83Z1Cd+jS7lXLhHz105ORKUQf0dZD0VBa9Nl1aOMGZThrpcA9S6B3KfE8f66fIFLkhG/7IM7zSSsR0G8aLxiORCN9vpf38qwxBrWuugJtJqqwIDAQAB";
         String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAogc/9hKx6FAM6btKymkkFh932UfOPal4DgxXGstpFUG5Ehc+dMqm6e0CoMfNjZ4IBTRttE/OaBP/mW+YI53Tb+ND2rb22BqG+5JMp1WBJ4Tdz6DTKsbTRfN0Hrv1HiBglpgaJZs6Oymt1b43jnpL1bWsUULBnI+PWamlIottHK2IHC3/d5jN/9gz6TP6VkPnmokiBr0Hfcmv7jMjWsVsOf1wh5Jk/I7VSc+H314EO83Z1Cd+jS7lXLhHz105ORKUQf0dZD0VBa9Nl1aOMGZThrpcA9S6B3KfE8f66fIFLkhG/7IM7zSSsR0G8aLxiORCN9vpf38qwxBrWuugJtJqqwIDAQAB";
+        //封装签名过程
         AlipayConfig alipayConfig = new AlipayConfig();
         AlipayConfig alipayConfig = new AlipayConfig();
         alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");
         alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");
         alipayConfig.setAppId("9021000134610854");
         alipayConfig.setAppId("9021000134610854");
-
         alipayConfig.setPrivateKey(privateKey);
         alipayConfig.setPrivateKey(privateKey);
         alipayConfig.setFormat("json");
         alipayConfig.setFormat("json");
         alipayConfig.setAlipayPublicKey(alipayPublicKey);
         alipayConfig.setAlipayPublicKey(alipayPublicKey);
         alipayConfig.setCharset("UTF-8");
         alipayConfig.setCharset("UTF-8");
         alipayConfig.setSignType("RSA2");
         alipayConfig.setSignType("RSA2");
         AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
         AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
+        ////支付宝公共参数
         AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
         AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
+        ///同步跳转地址,仅支持http/https
+        request.setReturnUrl("");
+        //封装参数
         AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
         AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
         model.setOutTradeNo("70501111111S001111119");
         model.setOutTradeNo("70501111111S001111119");
         model.setTotalAmount("9.00");
         model.setTotalAmount("9.00");
@@ -31,6 +52,8 @@ public class AlipayTradeWapPay {
         model.setProductCode("QUICK_WAP_WAY");
         model.setProductCode("QUICK_WAP_WAY");
         model.setSellerId("2088102147948060");
         model.setSellerId("2088102147948060");
         request.setBizModel(model);
         request.setBizModel(model);
+
+        //执行请求,调用支付宝
         AlipayTradeWapPayResponse response = alipayClient.pageExecute(request, "POST");
         AlipayTradeWapPayResponse response = alipayClient.pageExecute(request, "POST");
         // 如果需要返回GET请求,请使用
         // 如果需要返回GET请求,请使用
         // AlipayTradeWapPayResponse response = alipayClient.pageExecute(request, "GET");
         // AlipayTradeWapPayResponse response = alipayClient.pageExecute(request, "GET");
@@ -44,5 +67,53 @@ public class AlipayTradeWapPay {
             // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
             // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
             // System.out.println(diagnosisUrl);
             // System.out.println(diagnosisUrl);
         }
         }
+        return pageRedirectionData;
+    }
+
+    @Override
+    public String tradeNotify(Map<String, String> params) {
+        String result = "failure";
+        try {
+            //异步通知验签
+            boolean signVerified = AlipaySignature.rsaCheckV1(params,
+                    aliPayBean.getPublicKey(),
+                    AlipayConstants.CHARSET_UTF8,
+                    AlipayConstants.SIGN_TYPE_RSA2);
+            if (!signVerified) {
+                // TODO 验签失败则记录异常日志,并在response中返回failure.
+                System.out.println("支付成功,异步通知验签失败!");
+                return result;
+            }
+            System.out.println("支付成功,异步通知验签成功!");
+            //TODO 验签成功后,按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验
+            //1.验证out_trade_no 是否为商家系统中创建的订单号
+            String outTradeNo = params.get("out_trade_no");
+            //2.判断 total_amount 是否确实为该订单的实际金额
+            String totalAmount = params.get("total_amount");
+            //3.校验通知中的 seller_id是否为 out_trade_no 这笔单据的对应的操作方
+            String sellerId = params.get("seller_id");
+            if (!sellerId.equals(aliPayBean.getSellerId())) {
+                System.out.println("商家PID校验失败");
+
+                return result;
+            }
+            //4.验证 app_id 是否为该商家本身
+            String appId = params.get("app_id");
+            if (!appId.equals(aliPayBean.getAppId())){
+                System.out.println("app_id校验失败");
+                return result;
+            }
+            //在支付宝的业务通知中,只有交易通知状态为 TRADE_SUCCESS 或 TRADE_FINISHED 时,支付宝才会认定为买家付款成功
+            String tradeStatus = params.get("trade_status");
+            if (!"TRADE_SUCCESS".equals(tradeStatus) && !"TRADE_FINISHED".equals(tradeStatus)){
+                System.out.println("未支付成功");
+                return result;
+            }
+            //TODO 处理自身业务
+            result = "success";
+        } catch (AlipayApiException e) {
+            e.printStackTrace();
+        }
+        return result;
     }
     }
 }
 }