# 交易类投诉处理
修订记录
| 时间 | 修订内容 | 备注 |
|---|---|---|
| 2024年3月25日 | 1、新增「平台判定商家责任,平台退款中-312」状态 2、「待商家处理-201」、「平台判定商家责任,待上传处理凭证-206」状态到期时间由72h改为48h | 生效时间为2024年3月25日 |
以下接口提供给小程序开发者用于接收、查询、处理小程序用户交易类投诉。小程序交易类投诉全流程如下:
交易类投诉处理能力包括:
# 投诉信息推送
如有新增投诉、投诉进展变更、投诉信息更新时,平台将把投诉信息推送到小程序开发者配置的消息服务器。查看消息服务器配置
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1546924844</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[complaint_callback]]></Event>
<BussiCallBackInfo>
<appid>123</appid>
<option_type>123</option_type>
<complaint_order_id>123</complaint_order_id>
<status>123</status>
<create_time>123</create_time>
<expire_time>123</expire_time>
<type>123</type>
<order_id>123</order_id>
<out_trade_no>123</out_trade_no>
<phone_number>123</phone_number>
<open_id>123</open_id>
<customer_material_content>123</customer_material_content>
<customer_material_media_id_list>123</customer_material_media_id_list> // 投诉内容图片cdn(出于安全性考虑,目前该图片url有过期时间,如需查看图片,需每次重新调用该接口获取,防止图片过期导致无法查看)
<pay_time>123</pay_time>
<total_cost>123</total_cost>
<product_name>123</product_name>
<history>
<time>123</time>
<content>123</content>
<media_id_list>123</media_id_list>
</history>
<history>
<time>123</time>
<content>123</content>
<media_id_list>123<media_id_list>
</history>
</BussiCallBackInfo>
</xml>
| 字段名 | 字段说明 |
|---|---|
| appid | 小程序appid |
| option_type | 通知事件类型:首次发起投诉/投诉进度更新 |
| complaint_order_id | 投诉单号 |
| status | 投诉单状态 |
| create_time | 投诉发起时间 |
| expire_time | 投诉当前状态到期时间 |
| type | 投诉问题类型,枚举值参考下面表格 |
| order_id | 被投诉的微信支付单号 |
| out_trade_no | 商家订单号 |
| phone_number | 投诉人联系方式 |
| open_id | 投诉人openid |
| customer_material_content | 投诉详情-文本 |
| customer_material_media_id_list | 投诉详情-图片(出于安全性考虑,目前该图片url有过期时间,如需查看图片,需每次重新调用该接口获取,防止图片过期导致无法查看) |
| pay_time | 被投诉的订单交易时间 |
| total_cost | 被投诉的订单金额 |
| product_name | 被投诉的订单商品描述 |
| history | 投诉进度,time 进度变更时间,content 进度变更文本,media_id_list 进度变更图片 |
# 查询投诉单详情
# 请求方法
GET
# 请求 URL
https://api.weixin.qq.com/wxaapi/minishop/complaintOrderDetail?complaintOrderId=xxx&access_token=xxx
# 返回结果示例
{
errcode: 0,
errmsg: "ok",
complaintOrder: {
complaintOrderId: "sadfasdf",//订单id
openId: "dfasefasefase", //openId
createTime: 1658903527, //投诉发起时间
phoneNumber: 13599125777, //联系方式
type: 12, //投诉问题分类
status: 1,//订单状态,枚举值
customerMaterial:{
content: ", //投诉内容
mediaIdList: ["fsadfasdfsaf"], // 投诉内容图片cdn(出于安全性考虑,目前该图片url有过期时间,如需查看图片,需每次重新调用该接口获取,防止图片过期导致无法查看)
},
orderId: "2342", //微信支付订单号
outTradeNo: "sdfsfd", //商家订单号
productName: "sdf", //商品名称
payTime: 1658903465, //支付时间
totalCost: "¥0.01", //交易金额
expireTime: 1658903564, //投诉单当前状态到期时间,0为不存在
headImgUrl: "头像URL",//头像URL
nickName: "xxxxxx",//微信昵称
appealState: 403, //申诉状态,枚举值
},
// 投诉进度
item:[{
itemType: 1, //投诉节点状态
time: 1658903527, //时间
content: "", //内容
mediaIdList: ["头像URL"], //图片cdn列表
phoneNumber: 13599125777, //手机号
blameResult: 0,
nickName: "",
appealItemType: 401, // 投诉节点申诉状态(item处于申诉阶段才有)
}],
returnBill: {
returnId: "23234234234", //退货id
waybillId: "YDxxxxd", //运单号
deliveryName: "韵达快递", //运力公司
orderStatus: 4 //运单状态
}
}
# 返回参数含义
订单详情
| 参数 | 说明 |
|---|---|
| complaintOrderId | 订单id |
| openid | 用户的openid |
| createTime | 投诉发起时间 |
| phoneNumber | 联系方式 |
| type | 投诉问题分类,枚举值参考下面表格 |
| customerMaterial.content | 投诉内容 |
| customerMaterial.mediaIdList | 投诉内容图片cdn(出于安全性考虑,目前该图片url有过期时间,如需查看图片,需每次重新调用该接口获取,防止图片过期导致无法查看) |
| orderId | 微信支付订单号 |
| outTradeNo | 商家订单号 |
| productName | 商品名称 |
| payTime | 支付时间 |
| totalCostStr | 交易金额 |
| status | 投诉单状态,枚举值参考下面表格 |
| returnId | 退货id,通过接口生成 |
| orderStatus | 运单状态,枚举值参考下面表格 |
| waybillId | 运单号 |
| deliveryName | 运力公司 |
| appealState | 申诉状态,枚举值参考下面表格:0--未进入申诉阶段,401--待商家申诉,402--超过申诉时间,403--申诉中,117--申诉成功,118--申诉失败 |
投诉单问题类型枚举(type)
| 值 | 说明 |
|---|---|
| 611 | 发货问题-未按约定时间发货 |
| 612 | 发货问题-商家拒绝发货 |
| 613 | 发货问题-少发/错发 |
| 614 | 发货问题-物流信息长时间不更新 |
| 621 | 客服问题-客服不回复 |
| 622 | 客服问题-客服辱骂/骚扰/恐吓 |
| 631 | 承诺未履行-赠品承诺未履行 |
| 632 | 承诺未履行-物流承诺未履行 |
| 633 | 承诺未履行-其他 |
| 641 | 商品问题-描述不符 |
| 642 | 商品问题-商品破损 |
| 643 | 商品问题-其他 |
| 650 | 收费异常问题-车辆没电或故障 |
| 651 | 收费异常问题-关锁成功仍计费 |
| 652 | 收费异常问题-扣费金额不对 |
| 653 | 收费异常问题-规范停车仍扣调度费 |
| 654 | 收费异常问题-其他 |
| 655 | 骑行卡问题-已购买骑行卡,仍扣费 |
| 656 | 骑行卡问题-骑行卡退款 |
| 657 | 押金/余额退还问题-押金退还 |
| 658 | 押金/余额退还问题-余额退还 |
| 659 | 客服问题-客服不回复 |
| 660 | 收费异常问题-充电宝未弹出,已扣费 |
| 661 | 收费异常问题-充电宝无法正常使用 |
| 662 | 收费异常问题-已归还,仍计费 |
| 663 | 收费异常问题-不认可计费时长 |
| 664 | 收费异常问题-其他 |
| 665 | 押金退还问题-押金退还异常 |
| 666 | 其他问题-客服不回复 |
| 667 | 其他问题-归还点少无法归还 |
| 668 | 其他问题-误操作购买,需消费 |
| 670 | 欺诈问题-虚假广告 |
| 671 | 欺诈问题-剧集数量与承诺不符 |
| 672 | 欺诈问题-付款金额与页面不符 |
| 673 | 欺诈问题-剧集内容与宣传不符 |
| 674 | 欺诈问题-营销活动问题 |
| 675 | 扣费问题-重复扣费 |
| 676 | 扣费问题-无理由扣费 |
| 677 | 扣费问题-扣费标准不一致 |
| 678 | 扣费问题-未成年误付款 |
| 679 | 其他问题 |
| 610001 | 可观看数量/时长与承诺不符 |
| 610002 | 剧集内容与宣传不符 |
| 610003 | 内容无法播放 |
| 610004 | 未成年人误付款 |
| 610005 | 其他 |
投诉单状态枚举(status)
| 值 | 说明 |
|---|---|
| 101 | 平台客服处理中 |
| 102 | 用户取消申请 |
| 103 | 平台客服处理中 |
| 104 | 平台客服处理中 |
| 105 | 平台客服处理中 |
| 106 | 待商家补充凭证 |
| 107 | 平台客服处理中 |
| 108 | 待双方补充凭证 |
| 109 | 平台客服处理中 |
| 112 | 投诉已完结 |
| 115 | 投诉已完结 |
| 116 | 投诉已完结 |
| 201 | 待处理 |
| 202 | 商家超时未回应,待用户确认 |
| 203 | 已回应,待用户确认 |
| 204 | 已回应,待用户确认 |
| 205 | 投诉已完结 |
| 206 | 平台已判定为商责,待上传处理凭证 |
| 207 | 平台客服核实凭证中 |
| 208 | 超时未上传凭证 |
| 209 | 投诉已关闭 |
| 305 | 平台客服处理中 |
| 307 | 平台客服处理中 |
| 308 | 平台已判定为商责,待用户退货中 |
| 309 | 平台已判定为商责,待用户退货中 |
| 310 | 平台客服处理中 |
| 311 | 签收异常 |
| 312 | 平台判定商家责任,平台退款中 |
运力单状态枚举(orderStatus)
| 值 | 说明 |
|---|---|
| 0 | 已下单待揽件 |
| 1 | 已揽件 |
| 2 | 运输中 |
| 3 | 派件中 |
| 4 | 已签收 |
| 5 | 异常 |
| 6 | 代签收 |
| 7 | 揽收失败 |
| 8 | 签收失败 |
| 10 | 未下单 |
| 11 | 已取消 |
| 12 | 已删除 |
| 13 | 退件中 |
| 14 | 已退件 |
| 15 | 运力方取消 |
| 99 | 未确认状态 |
申诉状态枚举(appealState):
| 值 | 说明 |
|---|---|
| 0 | 未进入申诉阶段 |
| 401 | 待商家申诉 |
| 402 | 超过申诉时间 |
| 403 | 申诉中 |
| 117 | 申诉成功 |
| 118 | 申诉失败 |
投诉进度(item):
| 参数 | 说明 |
|---|---|
| itemType | 每个节点的类型,枚举值 参考下面表格 |
| time | 时间 |
| content | 内容文本 |
| mediaIdList | 图片cdn资源列表 |
| phoneNumber | 手机号 |
| blameResult | itemType 为(31, 32)时,判断是否经过退货的描述, 1对应文案为待用户退货中,0则对应文案为待上传处理凭证 |
| nickName | 操作者昵称 |
| appealItemType | 处于申诉阶段节点的申诉状态,枚举值 参考下面表格 |
itemType合法值:
| 值 | 描述 |
|---|---|
| 1 | 用户发起投诉 |
| 2 | 用户补充留言 |
| 3 | 商家补充留言 |
| 7 | 用户补充凭证 |
| 8 | 商家补充凭证 |
| 11 | 用户申请平台客服协助 |
| 12 | 用户撤销投诉 |
| 13 | 平台客服处理中 |
| 14 | 待用户补充凭证 |
| 16 | 待商家补充凭证 |
| 18 | 平台要求双方补充凭证 |
| 26 | 平台核实处理凭证异常,投诉关闭,请商家自行联系用户解决问题,保障用户体验 |
| 30 | 平台已核实此投诉非商家责任,投诉已完结 |
| 31 | 平台已核实此投诉为商家责任,待上传处理凭证(blameResult为0)/平台已核实此投诉为商家责任,待用户退货中(blameResult为1) |
| 32 | 平台已核实此投诉为商家责任,待上传处理凭证(blameResult为0)/平台已核实此投诉为商家责任,待用户退货中(blameResult为1) |
| 33 | 平台已核实此投诉非商家责任,投诉已完结 |
| 36 | 平台已核实处理凭证,投诉完结 |
| 37 | 平台核实处理凭证异常,投诉关闭,请商家自行联系用户解决问题,保障用户体验 |
| 101 | 商家超时未回应投诉 |
| 104 | 用户认可处理结果,投诉已完结 |
| 107 | 商家超时未提交投诉处理凭证,平台客服处理中 |
| 108 | 用户超时未确认商家回应结果,投诉已完结 |
| 109 | 商家已回应投诉 |
| 110 | 商家提交投诉处理凭证 |
| 111 | 用户补充凭证超时 |
| 112 | 商家补充凭证超时 |
| 113 | 双方补充凭证超时 |
| 118 | 商责自动赔付 |
appealItemType合法值:
| 值 | 说明 |
|---|---|
| 0 | 未进入申诉阶段 |
| 401 | 待商家申诉 |
| 402 | 超过申诉时间 |
| 403 | 申诉中 |
| 117 | 申诉成功 |
| 118 | 申诉失败 |
# 商家回应投诉
# 请求方法
POST
# 请求 URL
https://api.weixin.qq.com/wxaapi/minishop/bussiRespondComplaint?access_token=xxx
# 请求参数示例
{
"content": "", // 回应的内容
"complaintOrderId": 123456, // 单号
"mediaIdList": [], // 图片的id
"bussiHandle": 1,// 操作1是同意和解,2是拒绝和解
}
# 请求参数含义
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | content跟mediaIdList二选一必填 | 回应的内容(图片数组跟内容二选一必填) |
| complaintOrderId | number | 是 | 单号 |
| mediaIdList | Array<string> | content跟mediaIdList二选一必填 | 图片id列表,可参考 新增图片素材 |
| bussiHandle | number | 是 | 操作:1是同意和解,2是拒绝和解 |
# 正确返回示例
{
"errcode": 0 // 0:成功
}
# 返回参数含义
| 参数 | 类型 | 说明 |
|---|---|---|
| errcode | number | 返回码 |
| errmsg | string | 错误信息 |
返回码:
| 返回码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 单号不存在 |
| 10001 | 参数异常,errmsg字段展示具体描述 |
# 商家补充凭证
# 请求方法
POST
# 请求 URL
https://api.weixin.qq.com/wxaapi/minishop/bussiSupplyProof?access_token=xxx
# 请求参数示例
{
"content": "",
"complaintOrderId": 123456, // 单号
"mediaIdList": [], // 图片的idlist
}
# 请求参数含义
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | content跟mediaIdList二选一必填 | 回应的内容(图片数组跟内容二选一必填) |
| complaintOrderId | number | 是 | 单号 |
| mediaIdList | Array<string> | content跟mediaIdList二选一 | 图片id列表,可参考 新增图片素材 |
# 正确返回示例
{
"errcode": 0 // 0:成功
}
# 返回参数含义
| 参数 | 类型 | 说明 |
|---|---|---|
| errcode | number | 返回码 |
| errmsg | string | 错误信息 |
返回码:
| 返回码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 单号不存在 |
| 10001 | 参数异常,errmsg字段展示具体描述 |
# 商家提交退款凭证
# 请求方法
POST
# 请求 URL
https://api.weixin.qq.com/wxaapi/minishop/bussiSupplyRefund?access_token=xxx
# 请求参数示例
//提交退款凭证
{
"content": "",
"complaintOrderId": 123456, // 单号
"mediaIdList": [], // 图片的idlist
}
//退货场景下,提交退款凭证
{
"content": "",
"complaintOrderId": 123456, //单号
"mediaIdList": [], // 图片的idlist
"acceptReturn": 1, //1确认收货,2签收异常(退货状态下必填)
"returnId": '2342342' //退货id,通过查询投诉单详情接口获取(退货状态下必填)
}
# 请求参数含义
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | content跟mediaIdList二选一必填 | 回应的内容(图片数组跟内容二选一必填) |
| complaintOrderId | number | 是 | 单号 |
| mediaIdList | Array<string> | content跟mediaIdList二选一必填 | 图片的id list 图片id列表,可参考 新增图片素材 |
| acceptReturn | number | 退货状态下必填 | 确认是否收货 |
| returnId | number | 退货状态下必填 | 退货单号,需要通过查询投诉单详情接口获取 |
# 正确返回示例
{
"errcode": 0 // 0:成功
}
# 返回参数含义
| 参数 | 类型 | 说明 |
|---|---|---|
| errcode | number | 返回码 |
| errmsg | string | 错误信息 |
返回码:
| 返回码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 单号不存在 |
| 10001 | 参数异常,errmsg字段展示具体描述 |
# 商家申诉
# 请求方法
POST
# 请求 URL
https://api.weixin.qq.com/wxaapi/minishop/busiAppeal?access_token=xxx
# 请求参数示例
// 提交申诉材料
{
"content": "",
"complaintOrderId": 123456, //单号
"mediaIdList": [], // 图片的idlist
}
# 请求参数含义
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | content跟mediaIdList均必填 | 申诉材料(图片数组跟内容均必填) |
| complaintOrderId | number | 是 | 单号 |
| mediaIdList | Array<string> | content跟mediaIdList均必填 | 图片的id list 图片id列表,可参考 新增图片素材 |
# 正确返回示例
{
"errcode": 0 // 0:成功
}
# 返回参数含义
| 参数 | 类型 | 说明 |
|---|---|---|
| errcode | number | 返回码 |
| errmsg | string | 错误信息 |
返回码:
| 返回码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 单号不存在 |
| 2 | 传入mediaIdList或content格式有误 |
| 1002 | 当前状态不支持该操作 |
| 10001 | 参数异常,errmsg字段展示具体描述 |