【產品名稱】:多店版
【產品版本】: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'];
即可,如下圖: