- 功能说明
- 根据微信小程序规定,特定类型的小程序需要在平台完成发货信息录入及确认收货流程后方可进行资金结算。这次对接侧重点在于资金解冻,只对接了小程序发货管理 发货信息录入接口。如果需要确定收货和事件功能,请自行对接小程序确认收货组件和相关消息推送事件。
- 适用范围
- 小程序后台左侧菜单栏有发货信息管理的
- 对接说明
- 下载附加文件,在程序根目录解压文件
- 按自己需求对接以下功能
- 附加文件说明
- MiniOrderShippingListen 小程序发货管理事件,处理小程序发货管理接口所需参数
- MiniOrderShippingJob 接受事件整合好的参数,通过队列异步调用微信小程序发货管理接口
- \services\easywechat\orderShipping 对接小程序发货管理接口
1. 在MiniProgramService中添加发货信息录入接口
- 添加引用
use crmeb\services\easywechat\orderShipping\OrderClient;
- 在构造方法中注册orderShipping服务,如下图
$this->service->register(new \crmeb\services\easywechat\orderShipping\ServiceProvider);
- 添加order方法获取OrderClient对象,如下图
/**
* @return OrderClient *
*/
public function order(){
return $this->service->order_ship;
}
- 添加发货信息录入接口
/**
* 上传订单
* @param array $order_key 订单号(商城订单好)
* @param int $logistics_type 物流模式,发货方式枚举值:1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品,虚拟商品,例如话费充值,点卡等,无实体配送形式 4、用户自提
* @param array $shipping_list 物流信息列表,发货物流单列表,支持统一发货(单个物流单)和分拆发货(多个物流单)两种模式,多重性: [1, 10]
* @param string $payer_openid 支付者,支付者信息
* @param int $delivery_mode 发货模式,发货模式枚举值:1、UNIFIED_DELIVERY(统一发货)2、SPLIT_DELIVERY(分拆发货) 示例值: UNIFIED_DELIVERY
* @param bool $is_all_delivered 分拆发货模式时必填,用于标识分拆发货模式下是否已全部发货完成,只有全部发货完成的情况下才会向用户推送发货完成通知。示例值: 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. 配置小程序发货管理开关
- 在MiniOrderShippingListen事件中,通过 order_shipping_open 字段判断是否推送小程序发货信息接口,当字段判断为true时推送,否则不推送。下面sql是将此开关放到小程序配置里面,也可以在总后台 维护->配置管理 中自行配置。总之,当配置于代码逻辑相对应即可。
- 注意,配置完后要在后台保存一下配置数据,更新缓存。否则读取不到数据
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, '小程序发货管理', 'order_shipping_open', 'switches', '0:关闭\n1:开启', '0', 0, '如果小程序后台出现发货管理菜单栏,请打开此开关', 0, 0, 1, '2023-10-20 09:25:00');
3. 添加event事件,如下图
路径:app/event.php
'mini_order_shipping' => [\crmeb\listens\MiniOrderShippingListen::class], // 小程序发货管理事件
4. 对接普通物流发货
路径: app/common/repositories/store/order/StoreOrderRepository.php
在发货方法添加 delivery() 中添加发货事件,如下图
// 小程序发货管理
event('mini_order_shipping', ['product', $order, $data['delivery_type'], $data['delivery_id'], $data['delivery_name']]);
5. 对接核销订单
路径:app/common/repositories/store/order/StoreOrderRepository.php
在订单核销方法 verifyOrder() 中添加,如下图
//小程序发货管理
event('mini_order_shipping', ['product', $order, 7, '', '']);
6. 对接购买会员订单
路径:app/common/repositories/user/UserOrderRepository.php
在订单回调 payAfter() 中调用 如下图
//小程序发货管理
event('mini_order_shipping', ['member', $ret, 3, '', '']);
7. 对接充值订单
路径:app/common/repositories/user/UserRechargeRepository.php
同会员订单,再支付回调中调用,如下图
//小程序发货管理
event('mini_order_shipping', ['recharge', $recharge, 3, '', '']);
注意:如果小程序没有发货信息管理,调用发货信息录入接口时会报错,更新完代码后请重启swoole
{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}
作者 管理员 企业
{{itemf.name}}
{{itemc.user_info.nickname}}
{{itemc.user_name}}
回复 {{itemc.comment_user_info.nickname}}
{{itemf.name}}