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