【产品名称】:多店版
【产品版本】:v3.0
用户自提和桌码订单都是可以微信平台自动发货的,但是用户充值就没有不能自动发货。
进入源码看了之后才发现用户充值这里是有bug导致无法自动发货
经过排查找到原因
app/jobs/order/MiniOrderJob.php
doJob方法得到的$out_trade_no参数为空
自提、桌码、后台发货这个订单号都是有的,但是用户充值这个参数就是空,所以提交充值发货信息的时候导致微信平台返回结果:小程序订单处理失败,原因:微信接口异常:code = 268485195 msg = 微信支付单号形式下 transaction_id 字段必须设置
最后在 app/services/user/UserRechargeServices.php 中 rechargeSuccess 方法中找到trade_no订单号
从上图可以看到去数据库中拿到了订单但是订单中的trade_no字段为空,但是充值完成后这个字段是有值的,也不知道为什么,没有太多时间去深究,可能这个时候还没有存进去吧。
最后发现trade_no订单号在$other参数里面,所以修改很简单,只需要在 rechargeSuccess 方法中加入一句
$order['trade_no'] = $order['trade_no'] ?: $other['trade_no'];
即可,如下图: