最近有用户遇到支付成功但是订单却显示已关闭的情况,下面是一系列检查和寻找原因的过程
查看支付代码
- PaymentController.php
- YzyController.php
- AutoJob.php
- AutoAuditOrders.php
由于版本比较老,所以AutoAuditOrders.php还没有合并到AutoJob.php
搜索log,发现如下异常信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[2019-01-08 17:09:03] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:10:03] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:11:03] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:12:02] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:13:03] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:14:03] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:15:03] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:16:04] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:17:03] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:18:03] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:19:02] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:20:03] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:21:04] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type [2019-01-08 17:22:03] local.INFO: 【有赞云】审计订单时更新支付单和订单异常:Undefined index: pay_type |
重新到代码中寻找关键词pay_type
发现出现在下面代码中
1 |
$payment->pay_way = $trade['response']['qr_trades']['pay_type'] == 'ALIPAY' ? 2 : 1; // 1-微信、2-支付宝 |
应该是在返回的json文件中格式有变化导致无法找到pay_type值
调取YZY的回调日志,发现目前pay_type已经变更到根节点
修改后代码如下
1 |
$payment->pay_way = $trade['response']['pay_type'] == 'ALIPAY' ? 2 : 1; // 1-微信、2-支付宝 |
总结
这个问题比较特殊难以察觉是因为只有当用户不通过支付页扫码支付,而是通过手动打开二维码链接页面支付时才会每隔一分钟定时查询支付状态,而因为代码错误,导致回调执行中断不能执行后续操作,而15分钟后因为没有查询到支付状态而关闭订单。
There are no comments yet