【產(chǎn)品名稱】:多店版
【產(chǎn)品版本】:v3.0
用戶自提和桌碼訂單都是可以微信平臺自動發(fā)貨的,但是用戶充值就沒有不能自動發(fā)貨。
進入源碼看了之后才發(fā)現(xiàn)用戶充值這里是有bug導致無法自動發(fā)貨
經(jīng)過排查找到原因
app/jobs/order/MiniOrderJob.php
doJob方法得到的$out_trade_no參數(shù)為空
自提、桌碼、后臺發(fā)貨這個訂單號都是有的,但是用戶充值這個參數(shù)就是空,所以提交充值發(fā)貨信息的時候導致微信平臺返回結果:小程序訂單處理失敗,原因:微信接口異常:code = 268485195 msg = 微信支付單號形式下 transaction_id 字段必須設置
最后在 app/services/user/UserRechargeServices.php 中 rechargeSuccess 方法中找到trade_no訂單號
從上圖可以看到去數(shù)據(jù)庫中拿到了訂單但是訂單中的trade_no字段為空,但是充值完成后這個字段是有值的,也不知道為什么,沒有太多時間去深究,可能這個時候還沒有存進去吧。
最后發(fā)現(xiàn)trade_no訂單號在$other參數(shù)里面,所以修改很簡單,只需要在 rechargeSuccess 方法中加入一句
$order['trade_no'] = $order['trade_no'] ?: $other['trade_no'];
即可,如下圖: