Procházet zdrojové kódy

集成支付宝扫码支付

zhengqiang před 5 roky
rodič
revize
17171ee1dd

+ 4 - 2
pom.xml

@@ -21,6 +21,8 @@
 		<netty-all.version>4.1.6.Final</netty-all.version>
 		<lombok.version>1.16.12</lombok.version>
 		<fastjson.version>1.2.29</fastjson.version>
+		<alipay.version>4.8.10.ALL</alipay.version>
+		<ijpay.version>2.3.2</ijpay.version>
 	</properties>
 
 	<dependencies>
@@ -168,7 +170,7 @@
 		<dependency>
 			<groupId>com.github.javen205</groupId>
 			<artifactId>IJPay-All</artifactId>
-			<version>2.3.2</version>
+			<version>${ijpay.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>com.jfinal</groupId>
@@ -178,7 +180,7 @@
 		<dependency>
 			<groupId>com.alipay.sdk</groupId>
 			<artifactId>alipay-sdk-java</artifactId>
-			<version>3.3.4.ALL</version>
+			<version>${alipay.version}</version>
 		</dependency>
 		<!--支付相关 end-->
 

+ 27 - 0
src/main/java/com/jpsoft/epay/modules/business/controller/MobileApiController.java

@@ -357,4 +357,31 @@ public class MobileApiController {
 
         return msgResult;
     }
+
+    @PostMapping(value="prepareAliPay")
+    public MessageResult<Map> prepareAliPay(String roomId, String buyType, Integer num, BigDecimal amount){
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        try {
+            Map<String,Object> dataMap = new HashMap<>();
+
+            RechargeRecord record = createRechargeRecord(roomId,buyType,num,amount);
+
+            if(record!=null){
+                dataMap.put("recordId",record.getId());
+            }
+
+            msgResult.setResult(true);
+
+            msgResult.setData(dataMap);
+        }
+        catch(Exception ex){
+            log.error(ex.getMessage(),ex);
+
+            msgResult.setMessage(ex.getMessage());
+            msgResult.setResult(false);
+        }
+
+        return msgResult;
+    }
 }

+ 9 - 13
src/main/java/com/jpsoft/epay/modules/pay/alipay/AlipayController.java

@@ -2,9 +2,7 @@ package com.jpsoft.epay.modules.pay.alipay;
 
 
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
-import com.alipay.api.AlipayApiException;
 import com.alipay.api.AlipayClient;
 import com.alipay.api.DefaultAlipayClient;
 import com.alipay.api.internal.util.AlipaySignature;
@@ -13,7 +11,6 @@ import com.alipay.api.response.AlipayTradePrecreateResponse;
 import com.ijpay.alipay.AliPayApi;
 import com.jpsoft.epay.modules.base.entity.RechargeRecord;
 import com.jpsoft.epay.modules.base.service.RechargeRecordService;
-import com.jpsoft.epay.modules.business.controller.DemoController;
 import com.jpsoft.epay.modules.business.service.RechargeService;
 import com.jpsoft.epay.modules.common.dto.MessageResult;
 import com.jpsoft.epay.modules.communication.server.protocol.MeterReceivePacket;
@@ -45,7 +42,6 @@ public class AlipayController {
 
     private Logger logger = LoggerFactory.getLogger(getClass());
 
-
     @Autowired
     private AliPayProperties aliPayProperties;
 
@@ -55,20 +51,18 @@ public class AlipayController {
     @Autowired
     private RechargeService rechargeService;
 
-
     @ApiOperation(value = "支付宝扫码支付")
     @GetMapping("/tradePrecreatePay")
-    public MessageResult tradePrecreatePay(@RequestParam("rechargeRecordId") String rechargeRecordId) {
+    public MessageResult tradePrecreatePay(String recordId) {
 
         MessageResult result = new MessageResult();
-        try {
-
 
+        try {
             AlipayClient alipayClient = new DefaultAlipayClient(aliPayProperties.getServiceUrl(), aliPayProperties.getAppId(), aliPayProperties.getPrivateKey(), "json", aliPayProperties.getInputCharset(), aliPayProperties.getZfbPublicKey(), aliPayProperties.getSignType());
             AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
             request.setNotifyUrl(aliPayProperties.getNotifyUrl());
 
-            RechargeRecord rechargeRecord = rechargeRecordService.get(rechargeRecordId);
+            RechargeRecord rechargeRecord = rechargeRecordService.get(recordId);
 
             if (rechargeRecord == null) {
                 throw new Exception("订单不存在");
@@ -93,7 +87,6 @@ public class AlipayController {
             maps.put("extend_params", extendParams);
             request.putOtherTextParam("app_auth_token", aliPayProperties.getAppAuthToken());*/
             //把订单信息转换为json对象的字符串
-
             String postdata = JSONObject.toJSONString(maps);
             request.setBizContent(postdata);
             AlipayTradePrecreateResponse response = alipayClient.execute(request);
@@ -101,11 +94,15 @@ public class AlipayController {
             JSONObject jsonObject = JSONObject.parseObject(body);
             String alipayTradePrecreateResponse = jsonObject.getString("alipay_trade_precreate_response");
             JSONObject jsonResponse = JSONObject.parseObject(alipayTradePrecreateResponse);
+
             if (!jsonResponse.getString("code").equals("10000")) {
                 throw new Exception(jsonResponse.getString("sub_msg"));
             }
+
             String qr_code = jsonObject.getJSONObject("alipay_trade_precreate_response").getString("qr_code");
             result.setResult(true);
+
+            log.warn("qr_code=" + qr_code);
             result.setData(qr_code);
 
         } catch (Exception e) {
@@ -118,9 +115,8 @@ public class AlipayController {
 
     }
 
-    @RequestMapping("/payNotify")
-    @ResponseBody
-    public String notifyUrl(HttpServletRequest request) {
+    @RequestMapping(value="/payNotify")
+    public String payNotify(HttpServletRequest request) {
         try {
             // 获取支付宝POST过来反馈信息
             Map<String, String> params = AliPayApi.toMap(request);

+ 12 - 0
src/main/resources/application-dev.yml

@@ -24,3 +24,15 @@ wx:
   pay:
     appId: wxc0ddd6a415c535d9
     appSecret: 042fe6c9c970c1d9fe585dccfca89221
+
+alipay:
+  serviceUrl: https://openapi.alipaydev.com/gateway.do
+  appId: 2016080600180410
+  publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzMBfmTqqpt4dMcuz8DpyrEtruu/G7+Gvkd0j99QX4mzcRLx4Wg9IicOIiZGSdgzLMKIxBmk0eKiqqbuBjOsrS/XU+SvsTNlT1O/ZY0w30HEWrb/pvmo58HSY76cevWqLqW19+fUax7HG811mF4lq4YkHNAWArqByEjoFYbKHbtqS0ReXFJ9SE5TaqZSVOieiu3bYPkw5HEGmnYZMhWH3Gvt6tK2peLSM8mEMY5qp3zlGew3sq1KtcDkvO2UCuAmEkAnCDZ1zoYYt45cvcmwaHozGKHGOtOe0EAitpZyLZW3dP5/yBFfWk+MdaA1kZe5gNr8ePY5ht+Sd+DizMEINiQIDAQAB
+  privateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDMwF+ZOqqm3h0xy7PwOnKsS2u678bv4a+R3SP31BfibNxEvHhaD0iJw4iJkZJ2DMswojEGaTR4qKqpu4GM6ytL9dT5K+xM2VPU79ljTDfQcRatv+m+ajnwdJjvpx69aoupbX359RrHscbzXWYXiWrhiQc0BYCuoHISOgVhsodu2pLRF5cUn1ITlNqplJU6J6K7dtg+TDkcQaadhkyFYfca+3q0ral4tIzyYQxjmqnfOUZ7DeyrUq1wOS87ZQK4CYSQCcINnXOhhi3jly9ybBoejMYocY6057QQCK2lnItlbd0/n/IEV9aT4x1oDWRl7mA2vx49jmG35J34OLMwQg2JAgMBAAECggEBALpSXSxdPKn4+ew0iJwVNAEh6PkF9ayZXWGJMY/2y31avt81+vdJbSMgcoFtnTAb2FN7ZM2Gsx8RrawjW3LXFmFbZeERXUlZg3YEhXhdBXWDU7XtLFIA7JSqJfn/xHNuH4Wgg8EQkLwkRP11gs/sVvzB63Ilh8Jhcyyu6/LJuYDfeXu/50sgkQn0xXjjJdwiez9iX//wraYYcWsSCCbwM3QZ0MRc3TCP04QfZsF+fnPM83/g2yzun8fmvB5zDtYhlHwau52CiZpTHOxCCkZx0tubVyPG9jmLJ8eg+/hIfOKzHi2HiNsOQlOgLj8inUkM2qW3JlU7VcHduB7MWjkDIAECgYEA6HLVEDDT61xQNIUbnBWQ0FpHBQjsG/388Uy/xKfchUkOfzA0kNId+Nrd3hhLtl3i7ta6KNu2vDNS5iEbg7SCVsgqBZ0enLLIrymyJ94pHbUeFTAqgP4pnoWglx3ttMsERCKcqt55NJY3gfLtVjBTgGgY1Kfxh9SYFC6CQ4v4V4kCgYEA4X8kv8vVg4ivoXk/gEsKXPYdXG6O3sClq7pf/kaecV0caV89rARXkDP324nLUMxvGKY0sNa373VhAFav4Hv3kGqrJ0NfEd/XiXXT3Zq3njN5V5xqjZZRsySimyFoBetYMTjN2dtPxTC/65OvQPC8BdHaSZDMQQQSFznKG9y4hgECgYEAieTFXIt6zB7BPcbQ8DEi7VcA1o3Kc3ii+wqKoMDr4u3J+c3BAUCEo0JDaCOFlrPvkbw0R1S//Ll9riNpzSHiSFUKCLaCmHa+8pqLo3b5cTQmmm8uZ8NfMTkYYU1R3HSrHThjNEIyKO4ME7zm6sBUaNJYGJ9gezG03hQRFr0MH/ECgYAKAXZD/Gtw9rO0WojyzGGdVl5fJ5i3UZ0ITbDMu510Mkl8c3ltFJQ+FdA9sZOP9kJHubhE0IJA4dh4B2CueVG22sTVbSvewyvxMYVBJAhZwLb1qD8iITVm2Y1NjOHswVCcfoTD0fNsMImTjm4MV6JAL9ubwA0QJXoYBbxuGBEoAQKBgDj0LpamjOv/gRDo96C8AKqACqWoHtVWvYaOrgsFVJWRsmkcrQu2nMHNyFlyJ1DcXbVkulILrUDth8+2jmbxrkmW+9Y8aX5vaKEmrNOOWiSgau3VxeJU+VedDYJl1IVpfs4k4ymMkkAGa1ZlMYHgeP20krHMzAn/NNeVvHUEXcR4
+  zfbPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlU5CIAwwMmDnDPUHQaxiqZh2y6VE11DFTYVZygLEUbZuSCATO2fGkY8hv3fhLj8Wj+QT4kRfJrK+/v1QKcZ7a5UaoaASOPOGEf8X9p+lfuA863luUPiD+k4W6QMjOXoPdY4G4JC9lFe5FT05NqVYHXGIIqXTWSIqLyWDlv7elj8D1HS06H+ArzAjbSyR47IaKJCMnpqLGHJ6ZQGM+6DEcOpdZAULjhguZ891eTtawVndDOaYToCDK4MpW9mEifpKRB8JZptqr2zQhFBm7iADyMsIM1xwko2N6mKJYyYZJ9QzhTindSQBGw0Pbt1480iqeoQOHo+z0HPmikIsuiu65QIDAQAB
+  inputCharset: UTF-8
+  mchId: 2088102170202580
+  # appAuthToken: 201906BBbc7d6558596f4bbc9f056c01b8aebX48
+  signType: RSA2
+  notifyUrl: http://18891j25i6.iok.la/epay-server/aliPay/payNotify

+ 14 - 1
src/main/resources/application-test.yml

@@ -23,4 +23,17 @@ springfox:
   documentation:
     swagger:
       v2:
-        host: 58.54.251.155:8088
+        host: 58.54.251.155:8088
+
+#测试环境
+alipay:
+  serviceUrl: https://openapi.alipay.com/gateway.do
+  appId: 2018080860921471
+  privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDNILPaO4vo6SW+PesgNwiS2K1sXpPiBJChKgozQyaDwPWktDNJCHgqEAgHyHpry+de8lbr4vZA7HAO3mR7YTrckHJptJWiR7JlrO8f9stBFVNS5ZwQJiaxAITg6ODYk0GF5ppbR70A6tMQxIN5y0nYl+edIN+QDVU66rvHRp88ik2A083UmlnKJHYM8E1d4KXKxcqyRhkIyt9lLX4ZxwptcmtcP6SfYfbiwV2RoPW1Ymighxw6WI221oLcY0nZhfSTY+jmZoaPxYhnTfpurUaB+gKqRSW+F6rolcURaZA3bh3rlQcJ1vJWY0dsELjakfvbwltKCAp2ANh5HbJWnHWlAgMBAAECggEAA2iUtH6iz4b4QpYCzzE66j3Be/iCWpIa2SK6sqld/Xh6XHdGFuOWI5TKnV5+ckYcHR7HxPmrf96t6gFWCBrQgJPB4vHGPsEUPM5H1u8h5330OX9pPXd00yIgEyCrg83Gm/P+AqBJirdcNH4fdSmkm33CsoC2Vk1yah02a5RH1xiplKK+L+xCUR2bV+z3mx1ALugyarrxSD/o9faVTSW5K/oZZAs02oUkzA+eRLeNza9eyCKzHThdRxJhfLniQYFNFl1vaJkZ68iBX16CAAYEWiCAq5kxmiblTidf1iOEoI1L4LUfq+23yespxWIRricclUzUI2R4KyAwSg45Z5JvIQKBgQD7838ukANLR+Xzwi3YX4+/X3ysv7UO8aY99KEIfBLf70Rehs1jDjKXdjbaWH6s+r83dzb3MEfpwLC+cvfDctKiQUhlGFG+k/hNdEY01NjIoV9l8GIjdLjtE+lJyBspga0sCxZYJYJYIu6i1kI/sGclxObTp95uNHivloUFuhpELQKBgQDQbJQihSGyRSROr0zLA0lOwbR4tGvk5yRYmGJRejOA1kU8hWEemtLpmgxu7XsFcMg5gVqqHMI+EfePfn1lKetdrtcpDpuYDgmb1LvBPp2hVx4RiUHu7c7EKo10HQc6Q4YTBaMH+WVb/aJSLfCLctr4yLb9Wwav3NWjTavXrbUKWQKBgHoJd5EWMIJGURvA8nPb1cTce4cxVIHoip134Ig7kOjm/DbNFK7mMZsrp2Ybd0BSNEypcfZJbIvMyc914IzLETuGY4qUPQQSqDLcHyV384k6oPq/dMm3v9sVyenzAzUXmsm6lRgdEwWd5fj5zx0KVOv2c9gRd6vpvotOXSBpBFABAoGBAIArpVUtJbGpT1CMAN9/X99sw3zPBuK3OeS5oQyV54I9Qkqbg0P81eMN9sNoixSnbJngcE7YbKMbDXBSyu4hPzpXQL1g3FI/n60Sv3tw9CK5niYOkFtMJrD/sglLqJwt1g9wkfdfaPOPH/kFgz1eHkaLt+xJw+z2EvLf2uNBUWnRAoGATydp5cEKbNSbF3XhFhzqZZjVzywdpQjSLfKj9+h9f9bX7kfdp5SeLQgfzxfxXn/GSaUipizHl2SOnhnMLgpxN9YAwm5Gj6PXjLTcQqxhdvNppy1z8a/4UzbDXeO6aHmsjlYAT8ikQAGCG0PxUD8/dUOFpdXbQZFrzSIw0aQb1Zk=
+  zfbPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo3gaIrAD47mfSBmye1c8GLIRF4H3sl0MhT1OHIO0FqwtDqyxpHkrpOQADQggEzgv1nO82V+ChQxHUeaQ7W987+s1cnwtm7ZVML8DxVtji1va1ahBKL62dBommOoIt4fRIO2upbnF6r3NjB/3MCTZUIE03xIqc+aUeNdRO7eAMpm6sHjBfSimFwXlyTaEsAsnTK4hkOzdvoldHry6A3375kE3msj8Z48Nko7AFedOToPfJNolap+i7qWv3VOhnWLrAZH/Jgq/uHQmx8r29BeBl9AT4EwxDN5mVVKDOYsWW1efmrhKXO3wvzInhB6qQ8L1uBCWKhw1eGHCvlCjTHxBYQIDAQAB
+  inputCharset: UTF-8
+  mchId: 2088132815112480
+  appAuthToken: 201906BBbc7d6558596f4bbc9f056c01b8aebX48
+  signType: RSA2
+  notifyUrl: http://18891j25i6.iok.la:40309/epay-server/aliPay/payNotify
+  body: 测试

+ 0 - 14
src/main/resources/application.yml

@@ -94,19 +94,6 @@ pagehelper:
   supportMethodsArguments: true
   params: count=countSql
 
-#测试环境
-#alipay:
-  serviceUrl: https://openapi.alipay.com/gateway.do
-  appId: 2018080860921471
-  privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDNILPaO4vo6SW+PesgNwiS2K1sXpPiBJChKgozQyaDwPWktDNJCHgqEAgHyHpry+de8lbr4vZA7HAO3mR7YTrckHJptJWiR7JlrO8f9stBFVNS5ZwQJiaxAITg6ODYk0GF5ppbR70A6tMQxIN5y0nYl+edIN+QDVU66rvHRp88ik2A083UmlnKJHYM8E1d4KXKxcqyRhkIyt9lLX4ZxwptcmtcP6SfYfbiwV2RoPW1Ymighxw6WI221oLcY0nZhfSTY+jmZoaPxYhnTfpurUaB+gKqRSW+F6rolcURaZA3bh3rlQcJ1vJWY0dsELjakfvbwltKCAp2ANh5HbJWnHWlAgMBAAECggEAA2iUtH6iz4b4QpYCzzE66j3Be/iCWpIa2SK6sqld/Xh6XHdGFuOWI5TKnV5+ckYcHR7HxPmrf96t6gFWCBrQgJPB4vHGPsEUPM5H1u8h5330OX9pPXd00yIgEyCrg83Gm/P+AqBJirdcNH4fdSmkm33CsoC2Vk1yah02a5RH1xiplKK+L+xCUR2bV+z3mx1ALugyarrxSD/o9faVTSW5K/oZZAs02oUkzA+eRLeNza9eyCKzHThdRxJhfLniQYFNFl1vaJkZ68iBX16CAAYEWiCAq5kxmiblTidf1iOEoI1L4LUfq+23yespxWIRricclUzUI2R4KyAwSg45Z5JvIQKBgQD7838ukANLR+Xzwi3YX4+/X3ysv7UO8aY99KEIfBLf70Rehs1jDjKXdjbaWH6s+r83dzb3MEfpwLC+cvfDctKiQUhlGFG+k/hNdEY01NjIoV9l8GIjdLjtE+lJyBspga0sCxZYJYJYIu6i1kI/sGclxObTp95uNHivloUFuhpELQKBgQDQbJQihSGyRSROr0zLA0lOwbR4tGvk5yRYmGJRejOA1kU8hWEemtLpmgxu7XsFcMg5gVqqHMI+EfePfn1lKetdrtcpDpuYDgmb1LvBPp2hVx4RiUHu7c7EKo10HQc6Q4YTBaMH+WVb/aJSLfCLctr4yLb9Wwav3NWjTavXrbUKWQKBgHoJd5EWMIJGURvA8nPb1cTce4cxVIHoip134Ig7kOjm/DbNFK7mMZsrp2Ybd0BSNEypcfZJbIvMyc914IzLETuGY4qUPQQSqDLcHyV384k6oPq/dMm3v9sVyenzAzUXmsm6lRgdEwWd5fj5zx0KVOv2c9gRd6vpvotOXSBpBFABAoGBAIArpVUtJbGpT1CMAN9/X99sw3zPBuK3OeS5oQyV54I9Qkqbg0P81eMN9sNoixSnbJngcE7YbKMbDXBSyu4hPzpXQL1g3FI/n60Sv3tw9CK5niYOkFtMJrD/sglLqJwt1g9wkfdfaPOPH/kFgz1eHkaLt+xJw+z2EvLf2uNBUWnRAoGATydp5cEKbNSbF3XhFhzqZZjVzywdpQjSLfKj9+h9f9bX7kfdp5SeLQgfzxfxXn/GSaUipizHl2SOnhnMLgpxN9YAwm5Gj6PXjLTcQqxhdvNppy1z8a/4UzbDXeO6aHmsjlYAT8ikQAGCG0PxUD8/dUOFpdXbQZFrzSIw0aQb1Zk=
-  zfbPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo3gaIrAD47mfSBmye1c8GLIRF4H3sl0MhT1OHIO0FqwtDqyxpHkrpOQADQggEzgv1nO82V+ChQxHUeaQ7W987+s1cnwtm7ZVML8DxVtji1va1ahBKL62dBommOoIt4fRIO2upbnF6r3NjB/3MCTZUIE03xIqc+aUeNdRO7eAMpm6sHjBfSimFwXlyTaEsAsnTK4hkOzdvoldHry6A3375kE3msj8Z48Nko7AFedOToPfJNolap+i7qWv3VOhnWLrAZH/Jgq/uHQmx8r29BeBl9AT4EwxDN5mVVKDOYsWW1efmrhKXO3wvzInhB6qQ8L1uBCWKhw1eGHCvlCjTHxBYQIDAQAB
-  inputCharset: UTF-8
-  mchId: 2088132815112480
-  appAuthToken: 201906BBbc7d6558596f4bbc9f056c01b8aebX48
-  signType: RSA2
-  notifyUrl: http://18891j25i6.iok.la:40309/epay-server/aliPay/payNotify
-  body: 测试
-
 
 #沙箱环境
 alipay:
@@ -120,7 +107,6 @@ alipay:
   signType: RSA2
   notifyUrl: http://18891j25i6.iok.la:40309/epay-server/aliPay/payNotify
 
-
 wx:
   pay:
     appId: wxe598c699aa68cffe