- 功能說(shuō)明
- 根據(jù)微信小程序規(guī)定,特定類型的小程序需要在平臺(tái)完成發(fā)貨信息錄入及確認(rèn)收貨流程后方可進(jìn)行資金結(jié)算。這次對(duì)接側(cè)重點(diǎn)在于資金解凍,只對(duì)接了小程序發(fā)貨管理 發(fā)貨信息錄入接口。如果需要確定收貨和事件功能,請(qǐng)自行對(duì)接小程序確認(rèn)收貨組件和相關(guān)消息推送事件。
- 適用范圍
- 小程序后臺(tái)左側(cè)菜單欄有發(fā)貨信息管理的
- 對(duì)接說(shuō)明
- 下載附加文件,在程序根目錄解壓文件
- 按自己需求對(duì)接以下功能
- 附加文件說(shuō)明
- MiniOrderShippingListen 小程序發(fā)貨管理事件,處理小程序發(fā)貨管理接口所需參數(shù)
- MiniOrderShippingJob 接受事件整合好的參數(shù),通過(guò)隊(duì)列異步調(diào)用微信小程序發(fā)貨管理接口
- \services\easywechat\orderShipping 對(duì)接小程序發(fā)貨管理接口
1. 在MiniProgramService中添加發(fā)貨信息錄入接口
- 添加引用
use crmeb\services\easywechat\orderShipping\OrderClient;
- 在構(gòu)造方法中注冊(cè)orderShipping服務(wù),如下圖
$this->service->register(new \crmeb\services\easywechat\orderShipping\ServiceProvider);
- 添加order方法獲取OrderClient對(duì)象,如下圖
/**
* @return OrderClient *
*/
public function order(){
return $this->service->order_ship;
}
- 添加發(fā)貨信息錄入接口
/**
* 上傳訂單
* @param array $order_key 訂單號(hào)(商城訂單好)
* @param int $logistics_type 物流模式,發(fā)貨方式枚舉值:1、實(shí)體物流配送采用快遞公司進(jìn)行實(shí)體物流配送形式 2、同城配送 3、虛擬商品,虛擬商品,例如話費(fèi)充值,點(diǎn)卡等,無(wú)實(shí)體配送形式 4、用戶自提
* @param array $shipping_list 物流信息列表,發(fā)貨物流單列表,支持統(tǒng)一發(fā)貨(單個(gè)物流單)和分拆發(fā)貨(多個(gè)物流單)兩種模式,多重性: [1, 10]
* @param string $payer_openid 支付者,支付者信息
* @param int $delivery_mode 發(fā)貨模式,發(fā)貨模式枚舉值:1、UNIFIED_DELIVERY(統(tǒng)一發(fā)貨)2、SPLIT_DELIVERY(分拆發(fā)貨) 示例值: UNIFIED_DELIVERY
* @param bool $is_all_delivered 分拆發(fā)貨模式時(shí)必填,用于標(biāo)識(shí)分拆發(fā)貨模式下是否已全部發(fā)貨完成,只有全部發(fā)貨完成的情況下才會(huì)向用戶推送發(fā)貨完成通知。示例值: true/false
* @return array *
* @throws HttpException
*/
public function uploadShippingInfo(array $order_key, int $logistics_type, array $shipping_list, string $payer_openid, string $path, int $delivery_mode = 1, bool $is_all_delivered = true, $type = '')
{
return $this->order()->uploadShippingInfo($order_key, $logistics_type, $shipping_list, $payer_openid, $path, $delivery_mode, $is_all_delivered);
}
2. 配置小程序發(fā)貨管理開(kāi)關(guān)
- 在MiniOrderShippingListen事件中,通過(guò) order_shipping_open 字段判斷是否推送小程序發(fā)貨信息接口,當(dāng)字段判斷為true時(shí)推送,否則不推送。下面sql是將此開(kāi)關(guān)放到小程序配置里面,也可以在總后臺(tái) 維護(hù)->配置管理 中自行配置。總之,當(dāng)配置于代碼邏輯相對(duì)應(yīng)即可。
- 注意,配置完后要在后臺(tái)保存一下配置數(shù)據(jù),更新緩存。否則讀取不到數(shù)據(jù)
INSERT INTO `eb_system_config` (`config_classify_id`, `config_name`, `config_key`, `config_type`, `config_rule`, `config_props`, `required`, `info`, `sort`, `user_type`, `status`, `create_time`) VALUES (48, '小程序發(fā)貨管理', 'order_shipping_open', 'switches', '0:關(guān)閉\n1:開(kāi)啟', '0', 0, '如果小程序后臺(tái)出現(xiàn)發(fā)貨管理菜單欄,請(qǐng)打開(kāi)此開(kāi)關(guān)', 0, 0, 1, '2023-10-20 09:25:00');
3. 添加event事件,如下圖
路徑:app/event.php
'mini_order_shipping' => [\crmeb\listens\MiniOrderShippingListen::class], // 小程序發(fā)貨管理事件
4. 對(duì)接普通物流發(fā)貨
路徑: app/common/repositories/store/order/StoreOrderRepository.php
在發(fā)貨方法添加 delivery() 中添加發(fā)貨事件,如下圖
// 小程序發(fā)貨管理
event('mini_order_shipping', ['product', $order, $data['delivery_type'], $data['delivery_id'], $data['delivery_name']]);
5. 對(duì)接核銷訂單
路徑:app/common/repositories/store/order/StoreOrderRepository.php
在訂單核銷方法 verifyOrder() 中添加,如下圖
//小程序發(fā)貨管理
event('mini_order_shipping', ['product', $order, 7, '', '']);
6. 對(duì)接購(gòu)買(mǎi)會(huì)員訂單
路徑:app/common/repositories/user/UserOrderRepository.php
在訂單回調(diào) payAfter() 中調(diào)用 如下圖
//小程序發(fā)貨管理
event('mini_order_shipping', ['member', $ret, 3, '', '']);
7. 對(duì)接充值訂單
路徑:app/common/repositories/user/UserRechargeRepository.php
同會(huì)員訂單,再支付回調(diào)中調(diào)用,如下圖
//小程序發(fā)貨管理
event('mini_order_shipping', ['recharge', $recharge, 3, '', '']);
注意:如果小程序沒(méi)有發(fā)貨信息管理,調(diào)用發(fā)貨信息錄入接口時(shí)會(huì)報(bào)錯(cuò),更新完代碼后請(qǐng)重啟swoole