售后与退款

7 天无理由退货 + 免费上门取件。用户全程不需要联系商家——这些由平台履约网络完成。

两种售后类型

type 场景 流程
refund_only 仅退款:未发货、空包、低客单小额 审核通过 → 立即原路退款
return_refund 退货退款:已发货商品 审核 → 预约免费上门取件 → 商家仓收货验货 → 自动原路退款

发起售后

curl
curl -X POST "https://api.yuantoutao.com/v1/orders/YM20261003100003/aftersales" \
  -H "Authorization: Bearer $YUANTOUTAO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"return_refund","reason":"不想要了","reason_class":"no_reason","pickup":true,"user_ref":"your-user-uuid"}'
node
const af = await (await fetch(`${API}/orders/${orderNo}/aftersales`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ type: 'return_refund', reason: '不想要了', reason_class: 'no_reason', pickup: true, user_ref: ref })
})).json();
console.log(af.status, af.pickup_waybill_no, af.return_freight_payer);
python
af = requests.post(f"{API}/orders/{order_no}/aftersales",
    headers={'Authorization': f'Bearer {KEY}'},
    json={'type': 'return_refund', 'reason': '不想要了', 'reason_class': 'no_reason',
          'pickup': True, 'user_ref': ref}).json()
print(af['status'], af['pickup_waybill_no'], af['return_freight_payer'])

响应关键字段:

免费上门取件配额

每个用户(自然人)每月 3 次免费取件,跨平台共享(见用户身份);超额后退货权利不受影响,仅运费由用户自付。建议向用户如实转述:"每月 3 次免费上门取件,超出的退货快递费自理"。

reason_class 的取值与影响

值 含义 对用户
quality 质量问题 全额退款,运费平台承担
not_as_described 与描述不符 同上
no_reason 7 天无理由 正常退款;取件受月配额
shipping_issue 物流问题 全额退款,运费平台承担

WARNING refund_only(不退货仅退款)仅限小额订单或质量问题——大额无理由申请会被拒绝(INVALID_PARAM),此时引导用户走 return_refund。这是平台反薅羊毛的风控规则。

售后状态机

requested ──▶ approved ──▶ returning ──▶ received ──▶ refunded ──▶ closed
     │                          (上门取件)    (商家仓验货)   (自动原路退款)
     └──▶ rejected ──▶ closed        仅退款: approved ──▶ refunded ──▶ closed

给用户的体验要点

  1. 用户说"要退"时,先确认订单与原因,再调 request_aftersale——不要未经确认直接发起。
  2. 发起成功立即告知取件信息:"快递员将上门取件,运单号 XXX,请保持电话畅通;货到商家仓验货后退款自动原路退回"。
  3. refunded 后提醒用户查收微信零钱。