利用定时器的方式实现主动查询订单支付状态
1 //创建一个定时器主动查询订单支付状态
2 Timer timer = new Timer();
3 timer.schedule(new TimerTask() {
4
5 //最大重试次数
6 int MAX_RETRY = 5;
7
8 @Override
9 public void run() {
10
11 MAX_RETRY--;
12
13 //检查订单系统
14 WxpOrderDTO wxpOrderDTO =
15 wxpOrderMapper.selectWxpOrder(orderNo);
16
17 if (wxpOrderDTO.getStatus().equals("1")) {
18
19 //取消定时器(订单支付成功)
20 timer.cancel();
21
22 } else {
23
24 //查询订单状态
25 WxMpPayResult payResult = wxMpService.getJSSDKPayResult(null, orderNo);
26 if (payResult.getReturn_code().equals("SUCCESS")) {
27
28 //已经支付,更新订单状态
29 if (payResult.getResult_code().equals("SUCCESS")) {
30 wxpOrderMapper.updateOrderStatus(orderNo);
31 }
32
33 }
34
35 }
36
37 if (MAX_RETRY == 0) {
38
39 //取消定时器(用户取消支付)
40 timer.cancel();
41
42 }
43
44
45 }
46
47 }, 2000, 5000); 1 //创建一个定时器主动查询订单支付状态 2 Timer timer = new Timer(); 3 timer.schedule(new TimerTask() { 4 5 //最大重试次数 6 int MAX_RETRY = 5; 7 8 @Override 9 public void run() { 10 11 MAX_RETRY--; 12 13 //检查订单系统 14 WxpOrderDTO wxpOrderDTO = 15 wxpOrderMapper.selectWxpOrder(orderNo); 16 17 if (wxpOrderDTO.getStatus().equals("1")) { 18 19 //取消定时器(订单支付成功) 20 timer.cancel(); 21 22 } else { 23 24 //查询订单状态 25 WxMpPayResult payResult = wxMpService.getJSSDKPayResult(null, orderNo); 26 if (payResult.getReturn_code().equals("SUCCESS")) { 27 28 //已经支付,更新订单状态 29 if (payResult.getResult_code().equals("SUCCESS")) { 30 wxpOrderMapper.updateOrderStatus(orderNo); 31 } 32 33 } 34 35 } 36 37 if (MAX_RETRY == 0) { 38 39 //取消定时器(用户取消支付) 40 timer.cancel(); 41 42 } 43 44 45 } 46 47 }, 2000, 5000);
哈哈,具体要根据自己的业务来做啊,这里提供一个思路,O(∩_∩)O哈哈~
1 //创建一个定时器主动查询订单支付状态 2 Timer timer = new Timer(); 3 timer.schedule(new TimerTask() { 4 5 //最大重试次数 6 int MAX_RETRY = 5; 7 8 @Override 9 public void run() { 10 11 MAX_RETRY--; 12 13 //检查订单系统 14 WxpOrderDTO wxpOrderDTO = 15 wxpOrderMapper.selectWxpOrder(orderNo); 16 17 if (wxpOrderDTO.getStatus().equals("1")) { 18 19 //取消定时器(订单支付成功) 20 timer.cancel(); 21 22 } else { 23 24 //查询订单状态 25 WxMpPayResult payResult = wxMpService.getJSSDKPayResult(null, orderNo); 26 if (payResult.getReturn_code().equals("SUCCESS")) { 27 28 //已经支付,更新订单状态 29 if (payResult.getResult_code().equals("SUCCESS")) { 30 wxpOrderMapper.updateOrderStatus(orderNo); 31 } 32 33 } 34 35 } 36 37 if (MAX_RETRY == 0) { 38 39 //取消定时器(用户取消支付) 40 timer.cancel(); 41 42 } 43 44 45 } 46 47 }, 2000, 5000); 哈哈,具体要根据自己的业务来做啊,这里提供一个思路,O(∩_∩)O哈哈~