|
@@ -3,15 +3,28 @@ package com.yunzhi.niucai.controller;
|
3
|
3
|
import com.alipay.easysdk.factory.Factory;
|
4
|
4
|
import com.alipay.easysdk.kernel.Config;
|
5
|
5
|
import com.alipay.easysdk.payment.app.models.AlipayTradeAppPayResponse;
|
|
6
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
7
|
+import com.yunzhi.niucai.common.BaseController;
|
|
8
|
+import com.yunzhi.niucai.common.CommConstants;
|
6
|
9
|
import com.yunzhi.niucai.common.ResponseBean;
|
7
|
10
|
import com.yunzhi.niucai.config.InterceptorConfig;
|
|
11
|
+import com.yunzhi.niucai.entity.TaCustomer;
|
|
12
|
+import com.yunzhi.niucai.entity.TaOrder;
|
|
13
|
+import com.yunzhi.niucai.entity.TaShopApp;
|
|
14
|
+import com.yunzhi.niucai.service.ITaOrderService;
|
|
15
|
+import com.yunzhi.niucai.service.ITaShopAppService;
|
8
|
16
|
import com.yunzhi.niucai.vo.LoginParam;
|
9
|
17
|
import io.swagger.annotations.Api;
|
10
|
18
|
import io.swagger.annotations.ApiOperation;
|
11
|
19
|
import io.swagger.annotations.ApiParam;
|
|
20
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
21
|
+import org.springframework.beans.factory.annotation.Value;
|
12
|
22
|
import org.springframework.web.bind.annotation.*;
|
13
|
23
|
|
14
|
24
|
import javax.servlet.http.HttpServletRequest;
|
|
25
|
+import java.math.BigInteger;
|
|
26
|
+import java.security.SecureRandom;
|
|
27
|
+import java.util.Date;
|
15
|
28
|
import java.util.Iterator;
|
16
|
29
|
import java.util.Map;
|
17
|
30
|
|
|
@@ -19,52 +32,71 @@ import java.util.Map;
|
19
|
32
|
@Api(tags = "登入/登出")
|
20
|
33
|
@RestController
|
21
|
34
|
@RequestMapping("/aliPay")
|
22
|
|
-public class AliPayController {
|
|
35
|
+public class AliPayController extends BaseController {
|
23
|
36
|
|
24
|
|
- @GetMapping("/create")
|
|
37
|
+ @Autowired
|
|
38
|
+ public ITaShopAppService iTaShopAppService;
|
|
39
|
+
|
|
40
|
+ @Autowired
|
|
41
|
+ private ITaOrderService taOrderService;
|
|
42
|
+
|
|
43
|
+ @Value("${aliPay.notifyUrl}")
|
|
44
|
+ private String aliPayNotifyUrl;
|
|
45
|
+
|
|
46
|
+ @PostMapping("/create")
|
25
|
47
|
@ApiOperation(value = "创建订单", notes = "创建订单", httpMethod = "POST", response = ResponseBean.class)
|
26
|
|
- public ResponseBean create() throws Exception {
|
27
|
|
- Factory.setOptions(getOptions());
|
28
|
|
- AlipayTradeAppPayResponse pay = Factory.Payment.App().pay("测试", "12345678", "1");
|
|
48
|
+ public ResponseBean create(HttpServletRequest request, @RequestBody TaOrder taOrder) throws Exception {
|
|
49
|
+ Factory.setOptions(getOptions(taOrder));
|
|
50
|
+ String outTradeNo = "ALI" + System.currentTimeMillis() + randomString(5);
|
|
51
|
+ AlipayTradeAppPayResponse pay = Factory.Payment.App().pay("支付宝支付", outTradeNo, String.valueOf(taOrder.getAmount() / 100));
|
|
52
|
+ // 更新商户订单号并改为支付中
|
|
53
|
+ taOrder.setOutTradeNo(outTradeNo);
|
|
54
|
+ taOrder.setStatus(CommConstants.SRTATUS_PAYING);
|
|
55
|
+ taOrderService.updateById(taOrder);
|
29
|
56
|
return ResponseBean.success(pay);
|
30
|
57
|
}
|
31
|
58
|
|
32
|
|
- public Config getOptions() {
|
|
59
|
+ public String randomString(int length) {
|
|
60
|
+ String str = new BigInteger(130, new SecureRandom()).toString(32);
|
|
61
|
+ return str.substring(0, length);
|
|
62
|
+ }
|
|
63
|
+
|
|
64
|
+ public Config getOptions(TaOrder taOrder) throws Exception {
|
33
|
65
|
Config config = new Config();
|
34
|
66
|
config.protocol = "https";
|
35
|
67
|
config.gatewayHost = "openapi.alipay.com";
|
36
|
68
|
config.signType = "RSA2";
|
37
|
69
|
|
38
|
|
- config.appId = "2021001190647352";
|
39
|
|
-
|
|
70
|
+ TaShopApp taShopApp = iTaShopAppService.getOne(new QueryWrapper<TaShopApp>().eq("shop_id", taOrder.getShopId()));
|
|
71
|
+ config.appId = taShopApp.getAppid();
|
40
|
72
|
// 私钥
|
41
|
|
- config.merchantPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCsQCrrvTMjGfUay2yJv9DbjhkA7CBwcuWWaFosTfhKgaY+KGsLaY1DWvLgx3bQ85PZQoMRewzdPkZZw3nRAgt0SqI1sP3/ix0aRALNuQ3Y4386LqNieHObsjCvNaT5O1sETdPuceyH8Wny0tT8zCxfmKCuDOAJbUrN0Tx0jPHf42bucepKx7BNGwtSNGppOvdXqZgZ3px77lbGsiTibKJXi+w6fjYx2ZI7+QaK36177xMzYhct4IT0r5FXjKUz7wlsebvU72gNVLOeDBVMWb0GvX2FpnZ2XsT+Dn7vxfY1Tp/HEy9K/646TrM/h53wxoUTxVWYPj6dZEVQBFNskXlVAgMBAAECggEBAIEo5IY8KropXqcm3k40LPJVDN6qMHDhVtJ/kQ4jsQh9SyDUwd+e2DQnYHO4XZm066o/u3RCJpVHew0YDKHyvJAI3rUP8IXL1Ji7YrbMClwVynLgQdc2psmaxfK7cOcJ4OfLTB1CA7C0D1PrT5X3q1ZLZkDcmqm28B6AxKpIfZ349TxsAJPG7LhKJgkNcgign7qvU9L0CQB9PoMNDgsvOLH5gisW3hVqDveQuYTgUCafr0LeKTL5AAG5rw9TzGzkjlnOPTWZL+Lhfw9CIFzrdj0iyT7IrcgAiAZ4k47EGZnOT3ter5f1sd/YIVAjYdFORyA7BM8yIlr06oz6RkCuMQkCgYEA2U/M6iSc7L9f5ogsl/zwV3RAjTq5tcFcu4Zr591hvm0y8+NneSeDClwy9rq+AC3+kPEbYD1V0as4AbKetVLoCb7WZegQn5DeYCAfLpPmVlcQ+6UQSEdKVgff2xXxbF+EJwANsZJp/+fcS5ySS5TqVneU1xvyirBDs0czTa10EFMCgYEAyuqp+b4grQhFs5KISlUbNPFtsm9/RimBuRbEp3pEpGrHYzvb8Gn4p89FnQKvM05WFQkvLZ/g5nh/wbDavzWSF+5rQaaymYntLxhbXPqMaRxWIjQtTU0gP4pgOQ/Pzm7Sj3tL/XEK51CyTsFN+bOooK7JRQ5aDUWo0cmcoWCdOrcCgYASfGZbGKg8v37h9n2MpFixp9MB8JfxrTQ9Q48UV1HESDfIZXTc6o6MKBGxyWr2SvNX0xrYEf+l6WHHSzGTDS1t/szwOFCJsmIoXTMp3C0A9UEdlwoOi/n33Y2ebnxuEqYER03i6CiaO1gTGoubYFya5GtF7TuxrpLjwk/L8NBpvwKBgQCU4BSzcgYhTYduF509BDIA5v03xEwZ2wwdExJXWgKQqvL84IceXXGdFRqa9sQ6HUhVCLb/f2SPU2tQXYQwc4prWnaA5V/1/FbzjahCkGSCHdMoJyXxqBt34vt0AiDR8Uc1FB4NpWl9ixw3YeXmxSR8N6DdtIjnYetZd9UeJXdWAwKBgQDOFZRNcWNFxo97dXNTmAUhfOts3pRpooXUjqy9SpDsmfxn7EUTGEzo6V036a6bHYBW0XG8RozRv6AAkU2hmN2RBZRCiCaz1l++4wNxnVp64kxTP2M+VvqH8P+aRfRRlny1kBedpbVDF+w4nHBL7sZDCyOR0aer1VcEuL3n5zcnvA==";
|
42
|
|
-
|
|
73
|
+ config.merchantPrivateKey = taShopApp.getMerchantPrivateKey();
|
43
|
74
|
//支付宝公钥字符串
|
44
|
|
- config.alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkH7Ka+0aQDGjegXicoe7Sks+5LccNe4JQ/j61r3fa7dFmFPstKIVogjDre+Ua3Q+YXqJoYTsT5BL5aNrfWfI+B1xk66E/shOk18WhP8xwIjZhgjKDGh73fJzHMSeDqbatJzbyoeNgGimBx4ljg2Io1tT4IznRGT9zqbvLcS+72QNbnCp7DEjL6FD9gS0Wjfb+Fn+qWd8koOCGcX+JsQfKXNyUBG7AAcdcfht+/qJ6QR1XH1nMaXEid0rWgmjG6bqY/jKL0Y08lc6GdMrZw1TM7E4GcUL+qvBCsnbH2keC/3YZrUMpJw7wWhEgz6h3549SftFUh0SOLBQGWK5VVFEHQIDAQAB";
|
45
|
|
-
|
46
|
|
- //可设置异步通知接收服务地址(可选)
|
47
|
|
- config.notifyUrl = "http://127.0.0.1:8080/aliPay/callback";
|
48
|
|
-
|
49
|
|
- //可设置AES密钥,调用AES加解密相关接口时需要(可选)
|
50
|
|
-// config.encryptKey = "<-- 请填写您的AES密钥,例如:aa4BtZ4tspm2wnXLb1ThQA== -->";
|
51
|
|
-
|
|
75
|
+ config.alipayPublicKey = taShopApp.getAlipayPublicKey();
|
|
76
|
+ //可设置异步通知接收服务地址
|
|
77
|
+ config.notifyUrl = aliPayNotifyUrl;
|
52
|
78
|
return config;
|
53
|
79
|
}
|
54
|
80
|
|
55
|
81
|
@GetMapping("/callback")
|
56
|
82
|
public void callback(HttpServletRequest request){
|
57
|
|
- // 查看支付宝回调并调整业务,等调试在完善
|
58
|
|
- Map<String, String[]> parameterMap = request.getParameterMap();
|
59
|
|
- for (Iterator iter = parameterMap.entrySet().iterator(); iter.hasNext();) {
|
60
|
|
- Map.Entry element = (Map.Entry) iter.next();
|
61
|
|
- Object strKey = element.getKey();
|
62
|
|
- String[] strArr = (String[])element.getValue();
|
63
|
|
- System.out.println(strKey);
|
64
|
|
- for (String str : strArr) {
|
65
|
|
- System.out.println(str);
|
66
|
|
- }
|
|
83
|
+ String tradeNo = request.getParameter("trade_no");
|
|
84
|
+ String appId = request.getParameter("app_id");
|
|
85
|
+ String outTradeNo = request.getParameter("out_trade_no");
|
|
86
|
+ String tradeStatus = request.getParameter("trade_status");
|
|
87
|
+ TaOrder taOrder = taOrderService.getOne(new QueryWrapper<TaOrder>().eq("out_trade_no", outTradeNo));
|
|
88
|
+ // 支付失败
|
|
89
|
+ if (!tradeStatus.equals(CommConstants.TRADE_STATUS_SUCCESS)){
|
|
90
|
+ taOrder.setStatus(CommConstants.SRTATUS_EFFECTIVE);
|
|
91
|
+ taOrderService.updateById(taOrder);
|
|
92
|
+ return;
|
67
|
93
|
}
|
|
94
|
+ // 支付成功
|
|
95
|
+ //创建订单支付
|
68
|
96
|
|
|
97
|
+ // 更新为已支付状态
|
|
98
|
+ taOrder.setIsPayed(true);
|
|
99
|
+ taOrder.setStatus(CommConstants.SRTATUS_EFFECTIVE);
|
|
100
|
+ taOrderService.updateById(taOrder);
|
69
|
101
|
}
|
70
|
102
|
}
|