• OpenAPI 简介
  • 小程序 OpenAPI SDK 总览
  • 签名算法
  • 基础能力
  • 触达与营销
  • 支付
  • 运营
  • 生活服务
  • 通用能力
  • 生活服务交易系统(全融合版)
  • 通用参数
  • 错误码和返回码
  • 查询接口
  • 预下单
  • 营销算价
  • 支付
  • 核销
  • 分账
  • 退货退款
  • 开发者发起退款
  • 同步退款审核结果
  • 查询退款
  • 退款扩展点
  • 退款结果通知
  • 生活服务交易系统(账号融合版)
  • poi基础能力
  • CPS佣金设置与查询
  • 核销工具解决方案
  • 历史版本(不推荐使用)
  • 垂直行业
  • 其它
  • 当开发者需要替用户发起退款时,可用该接口替用户发起退款。

    使用限制

    请不要滥用退款能力,如果发现滥用退款能力,平台会进行惩处。

    接口说明

      一笔订单可以多次退款。微信渠道不超过 50 次,支付宝渠道不超过 300 次。
      交易时间超过30天的订单无法提交退款。
      银行卡支付的退款 7 天内到账,支付宝支付(余额、银行卡快捷支付等)的退款 3 个工作日内到账,微信支付(余额、银行卡快捷支付等)的退款 7 天内到账。(退款优先原路退,如用户使用尾号为 1234 的招行借记卡付款,则退款至用户尾号为 1234 的招行借记卡)。

    退款流程

    退款流程如下:

    退款说明

      在交易系统产生的订单,如果用户购买的商品是过期退商品,交易系统会自动发起退款,创建退款单,退款流程和用户发起退款流程相同。
      发起过期自动退条件:
      POI 团购商品:
      POI 商品设置了过期时间。
      过期自动退的退款被拒绝退款后,不会再次发起。
      外部退款单号说明:
      已经在担保支付或者交易 1.0 使用过的外部退款单号,请不要在交易系统使用,当交易系统发现该外部退款单号已经在担保支付或者交易 1.0 创建过退款单号时,会拒绝创建退款单。
      开发者发起的退款不需要退款审核,不需要调用同步退款审核结果 接口。
      开发者发起退款,一次退款不能同时包含核销前和核销后的item_order,请分别发起核销前或核销后退款。

    基本信息

    基本信息
    HTTP URL
    HTTP Method
    POST
    Scope
    industry_open.trade.refund
    权限要求
    不需要用户授权

    请求头

    名称
    类型
    是否必填
    描述
    Content-Type
    string
    固定值 "application/json"
    access-token
    string
    调用/oauth/client_token/生成的token,此token不需要用户授权。示例: clt.xxx

    请求参数

    名称
    类型
    是否必填
    描述
    示例值
    out_order_no
    string
    开发者侧订单号,长度 <= 64 byte
    123123131
    out_refund_no
    string
    开发者侧退款单号,长度 <= 64 byte
    123123
    cp_extra
    string
    开发者自定义透传字段,不支持二进制,长度 <= 2048 byte
    extra_info
    order_entry_schema
    object
    退款单的跳转的 schema
    详见下方 order_entry_schema 参数详解
    notify_url
    string
    退款结果通知地址。此地址在接入流程-行业模板使用指南-消息通知中设置。长度 <=512byte
    https://xxx
    item_order_detail
    Array<object>
    需要发起退款的商品单信息,数组长度<100
    详见下方 item_order_detail 参数详解
    times_card_refund_param
    object
    次卡退款必填
    详见下方 times_card_refund_param 参数详解

    order_entry_schema 信息

    名称
    类型
    是否必填
    描述
    示例值
    path
    string
    订单详情页路径,没有前导的/,该字段不能为空,长度 <= 512byte
    pages/indexxxx
    params
    string
    路径参数,自定义的 json 结构,序列化成字符串存入该字段,平台不限制,但是写入的内容需要能够保证生成访问订单详情的 schema 能正确跳转到小程序内部的订单详情页,长度 <= 512byte
    {\"id\":\"xxx\"}

    item_order_detail 信息

    名称
    类型
    是否必填
    描述
    示例
    item_order_id
    string
    ot7072366682238

    times_card_refund_param 信息

    名称
    类型
    是否必填
    描述
    示例
    times_card_refund_type
    int64
    次卡退款类型,1-退剩余次数,2-全部退
    1

    请求示例

    curl --location --request POST 'https://open.douyin.com/api/apps/trade/v2/refund/create_refund' \ --header 'Content-Type: application/json' \ --header 'access-token: clt.xxx' \ --data-raw='{ "out_order_no": "123123131", "out_refund_no": "123123", "cp_extra": "extra_info", "order_entry_schema": { "path": "page/xxx", "params": "{\"id\":1}" }, "notify_url": "https://xxx", "item_order_detail": [ { "item_order_id": "xxx" } ], "times_card_refund_param":{ "times_card_refund_type": 1 } }'

    响应参数

    名称
    类型
    是否必填
    描述
    示例值
    data
    object
    返回数据信息
    extra
    object
    额外信息,参考通用参数中的说明

    data 信息

    名称
    类型
    是否必填
    参数描述
    示例值
    error_code
    int
    错误码,0为成功
    0
    description
    string
    错误码描述
    success
    refund_id
    string
    抖音开放平台交易系统内部退款单号
    ot12312312

    响应示例

    正常示例

    { "data": { "error_code": 0, "description": "success", "refund_id": "ot12312312" }, "extra": { "sub_error_code": 0, "sub_description": "success", "logid": "2022092115392201020812109511046", "now": 1663745962686, "error_code": 0, "description": "success" } }

    异常示例

    { "data": { "error_code": 13000, "description": "系统错误" }, "extra": { "sub_error_code": 13000, "sub_description": "系统错误", "logid": "2022092115392201020812109511046", "now": 1663745962686, "error_code": 2191000, "description": "" } }

    错误码

    HTTP 状态码
    错误码
    描述
    排查建议
    200
    10000
    参数不合法:(ots72128388728472)商品单不存在
    按以下步骤排查:
      1.检查item_order_id是否正确,注意是item_order_id,不是商户单id
      2.检查out_order_no与item_order_id是否匹配。用查询券状态接口查询商户单下的所有item列表,检查item_order_id是否在列表中。
    200
    20000
    订单不存在
    检查out_order_no是否正确,out_order_id与appid是否匹配
    200
    22000
    订单状态不支持退款
    请检查订单状态:订单未支付或已关闭则不允许再发起退款
    200
    22001
    (ots7218277338394847)商品单状态不支持退款
    订单item子单的状态不允许发起退款,用查询券状态接口查询item单的状态:
      1.item处于[退款中,退款完成]状态时,不允许退款
      2.预约类的item,处于[退款中,退款完成,预约中]状态时不允许退款。
      a.下单即预约(门票)的item,预约中不允许退款,可以取消预约后发起退款
      b.先买后约(预售券)的item,预约中/预约成功状态不允许退款,可以取消预约或者等预约完成时间过后,item变为已核销状态后,再发起退款
    200
    22002
    无可退款的商品单
    订单下所有的item处于不可退状态时,无法发起退款,参考22001的说明
    200
    22004
    外部退款单号重复了
    开发者生成的外部退款单号以前已经用过了,请重新生成
    200
    22006
    退款单状态不允许设置商家审核结果
    退款审核状态前置步骤未完成,等几分钟后再重新发起
    200
    22007
    超出单次最大可退款的商品数量
    一般是单次退款item订单的数量超过了100
    200
    22008
    退款商品数量超过可退款的商品数量
    用户可以发起退款的item单数小于请求数
    200
    22009
    不支持同时发起核销前和核销后退款
    发起退款的item单列表中包含已核销和未核销的,需要分别发起退款
    200
    22012
    退款来源不支持退款
    退款来源有: 用户,开发者
    200
    22014
    订单有其他退款申请正在进行中,不支持发起退款申请

    Q&A

    1.如何判断订单是否在退款中/已退款

    A:查询退款接口用 order_id 查询退款信息,可以得知订单是否发生了退款以及退款状态。

    2.为什么一直处于退款中

    A:查询退款接口查询退款信息,首先看 refund_status 是不是退款中,如果是,则按以下步骤确认:
      a.out_refund_no为空,说明退款申请回调未成功,请开发者确认自身系统接入了退款申请回调切正确响应了退款申请回调。交易系统会持续重试,直到回调成功。排查方法请参考退款申请回调文档末尾的退款申请回调接口排查模块
      b.out_refund_no不为空,则看审核状态audit_status,如果是待审核状态,请同步审核结果。
      c.以上都不是,请提工单。

    3.如何判断退款单的审核状态

    A:查询退款接口查询退款信息,merchant_audit_detail.audit_status 是审核状态,merchant_audit_detail.refund_audit_deadline 是审核的最后期限。

    4.商家未同步退款审核结果,为什么退款成功了

    A:两种情况:
      1.退款单不需要审核。
      2.退款审核有最后期限,一般是 3 天(从发起退款的时刻开始),在退款申请回调/查询退款能获取到。商家需要在有效期内同步审核结果。有效期过后,系统将默认审核通过。

    5.哪些退款单需要审核,哪些不需要审核

    A:注意这个文档是运营链路的。只有三方码(用户退,过期退),需要审核。其他场景均不需要审核。

    6.退款审核/退款查询接口报错,订单不存在是什么原因

    A:按以下步骤进行排查:
      1.如果是刚刚发起退款,查询接口有时延,建议延迟几秒重试一下。
      2.如果已经发起退款很久了,建议查询退款
      a.如果查询不到则说明单号不存在,请检查请求参数。
      b.大多数情况下,开发者用 out_refund_no 来审核退款或查询退款时报错,都是因为 out_refund_no 不存在导致,建议检查一下是否已经成功发起退款或者是否正确响应了退款申请回调。具体请参考退款申请回调文档末尾的退款申请回调接口排查模块。

    7.为什么开发者未发起退款,但是收到了退款申请回调/查询到订单处于退款中

    A:除开发者发起外,还存在用户在退款组件发起、系统自动退款、抖音客服发起等场景,请通过查询退款接口查询订单的退款记录,并检查 refund_source 字段,可以获得具体的退款来源。

    8.为什么订单会存在抖音客服发起的退款

    A:用户找到抖音客服投诉,客服会联系商家确认后发起客服退款,如有疑问请咨询行业运营。客服退不需要商家审核,但需要开发者响应退款申请回调