# 退货组件简介
退货组件是微信官方推出的小程序插件,为商家提供低成本的退货解决方案。 具有成本低、触达效率高、服务稳定的特点。 接入退货组件后,支持用户在小程序的退货流程中「预约快递员上⻔取件」「回填退货快递单号」,提高用户购物体验;商家可以通过 API 接口,查询用户的退货快递运单号状态,提高商家的运营效率。
# 退货组件 API 接口
# 1. 创建退货 ID
- 描述:商家在同意用户退货之后,通过本接口创建退货ID,shop_order_id和退货 ID 一一对应。平台根据退货ID下发模板消息给用户,提醒用户退货。“一个订单需要多次退货”的场景,可以在商家内部 1 个退货订单号映射多个shop_order_id。
- 请求地址:https://api.weixin.qq.com/cgi-bin/express/delivery/return/add?access_token=ACCESS_TOKEN
- 请求方式:POST
- 请求参数
{
"shop_order_id": "xxx",//商家内部系统使用的退货编号
"biz_addr": { //商家退货地址,必填
"name": "张三",
"mobile": "13600000000",//仅支持输入一个联系方式
"country": "中国",
"province": "广东省",
"city": "广州市",
"area": "海珠区",
"address": "xx路xx号"
},
"user_addr": { //用户购物时的收货地址,选填
"name": "李四",
"mobile": "13600000000",
"country": "中国",
"province": "广东省",
"city": "广州市",
"area": "海珠区",
"address": "xx路xx号"
},
"openid":"xxx",//退货用户的openid,用于给用户下发模版消息,通过模版消息用户可以选择退货方式
"order_path":"xxx",//退货订单在商家小程序的path
"goods_list":[
{
"name":"xxx",//退货商品的名称
"url":"xxx"//退货商品图片的url
}
],
"order_price":1//退货订单的价格
}
- 返回参数
{
"errcode": 0,
"errmsg": "OK",
"return_id": "1935761508265738242"
}
- 错误码列表
"errcode": 40097 //参数错误:order_id为空或者退货地址为空
"errcode": 9300522 //参数错误:shop_order_id 已存在
"errcode": -1 //系统错误:请联系微信平台解决
# 2. 查询退货 ID 状态
- 描述:本接口用于商家查询用户退货状态(是否填写退货信息)及追踪用户退货物流,方便仓库收货。通过本接口查询退货 ID 状态,其中status是退货ID状态,order_status是退货 ID 对应的用户运单号的状态。
- 请求地址:https://api.weixin.qq.com/cgi-bin/express/delivery/return/get?access_token=ACCESS_TOKEN
- 请求方式:POST
- 请求参数
{
"return_id": "1935761508265738242"
}
- 返回参数
{
"errcode": 0,
"errmsg": "OK",
"status": "2", //0 用户未填写退货信息, 1. 在线预约, 2. 自主填写
"waybill_id": "JDxxxxxx", //运单号
"order_status": 0, //0› 已下单待揽件 1› 已揽件 2› 运输中 3› 派件中 4› 已签收 5› 异常 6› 代签收 7› 揽收失败 8› 签收失败(拒收,超区) 11› 已取消 13› 退件中 14› 已退件 99 未知
"delivery_name": "申通快递",//运力公司名称
"delivery_id": SF,//运力 公司编码
}
- 错误码列表
"errcode": 40097 //参数错误:return_id为空
"errcode": 931023 //参数错误:运单不存在
"errcode": -1 //系统错误:请联系微信平台解决
# 3. 解绑退货 ID
- 描述:当商家同意退货申请之后,与用户达成协商「无需退货」时,可以通过本接口可以接触商家退货单与退货 ID的绑定。考虑到预约快递员上门取件的情况在用户侧发生,因此只有当用户是自主填写运单号情况下才支持解绑退货 ID 。
- 请求地址:https://api.weixin.qq.com/cgi-bin/express/delivery/return/unbind?access_token=ACCESS_TOKEN
- 请求方式:POST
- 请求参数
{
"return_id": "1935761508265738242"
}
- 返回参数
{
"errcode": 0,
"errmsg": "OK",
}
- 错误码列表
"errcode": 40097 //参数错误:return_id为空或者退货单类型不匹配
"errcode": 931023 //参数错误:运单不存在
"errcode": -1 //系统错误:请联系微信平台解决
# 组件调用
自定义插槽 Target 作为触发弹窗且校验的节点弹出 halfDialogScreen 供选择 ”上门取件“ or "自行寄回" 两种退货方式
# 1. 代码示例
# 基本用法
test.wxml:
// 需要使用两个插槽节点(slot="refund" 和 slot="refund_detail" 分别对应退货前跟退货后状态的插槽节点,如果没有要求退货状态,可以使用同意的元素节点)
// 对状态有要求,不同状态展示不同文案节点
<view>
<sales-return returnId="{{returnId}}">
<button slot="refund">立即退货</button> //还未退过货的插槽节点
<button slot="refund_detail">退货详情</button> //还退完货后的插槽节点
</sales-return>
</view>
// 对状态无要求,不同状态展示相同同文案节点
<view>
<sales-return returnId="{{returnId}}">
<button slot="refund">立即退货</button> //还未退过货的插槽节点
<button slot="refund_detail">立即退货</button> //退完货后的插槽节点
</sales-return>
</view>
test.js:
data: {
returnId: "xxx";
}
test.json:
{
"usingComponents": {
"sales-return": "plugin://logisticsPlugin/sales-return"
}
}
app.json 引入插件:
{
"pages": [
"pages/index/index",
],
"window": {
},
"plugins": {
"logisticsPlugin": {
"version": "2.1.11",
"provider": "wx9ad912bf20548d92"
}
},
}
# 2. 效果图
其中goods_info的内容如下:
参数名称 | 类型 | 必选 | 备注 |
---|---|---|---|
returnld | string | 是 | 退货 ID |
# 3. 插槽 Slots
插槽名 | 类型 | 必选 | 备注 |
---|---|---|---|
refund | string | 是 | 还未退货的插槽节点,用来触发弹窗、跳转页面的节点(必填) |
refund_detail | string | 是 | 退完货的插槽节点,用来触发弹窗、跳转页面的节点(必填,如果退货行为完成前后是相同文案可使用refund所使用的的文案) |