利用定时器的方式实现主动查询订单支付状态

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哈哈~
经验分享 程序员 微信小程序 职场和发展