# 退款能力

更新时间:2024-08-07 14:10:59

# 1. 申请退款

# 1.1 接口说明

  1. 可通过该接口发起签约支付单和代扣单退款,请注意
    1. 平台仅受理最近半年(180天)的退款
  2. 退款回调地址会优先使用开发者在 退款接口 传入的 notify_url,如果退款接口没有传入,会填充开发者在开发者平台设置的 退款回调,该回调地址设置与查看步骤如下【小程序开发者平台 (opens new window) -> 交易管理 -> 支付管理 -> 支付设置 -> 默认回调地址】

# 1.2 基本信息

名称内容
HTTP URLhttps://open.kuaishou.com/openapi/mp/developer/epay/apply_contract_refund
HTTP MethodPOST
Scope需要具有小程序担保支付权限(scope.ks.epay)

# 1.3 请求头

名称字段类型内容
Content-TypeString固定值: "application/json"

# 1.4  请求参数

以下字段放在 query param 处:

字段名类型是否必填是否参与签名说明
app_idstring小程序AppId 例如:ks707065143182458884
access_tokenstring拥有小程序支付权限的access token,获取方式见getAccessToken

以下字段放在 body json 处:

字段名类型是否必填是否参与签名说明
out_refund_nostring[6,32]开发者的退款单号
out_order_nostring开发者需要发起退款的支付订单号,商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一
示例值:2217752501201407033233368018
ks_withhold_nostring快手小程序平台代扣订单号,即代扣回调里的订单号
ks_order_typenumber退款类型:
1 :  申请 周期代扣单 退款,需要传入代扣单号 ks_withhold_no
2 :  申请 支付并签约时的订单 退款,需传入商户系统的订单号 out_order_no
reasonstring[1,80]退款理由。1个汉字=2个字符
notify_urlstring[1,256]通知URL必须为直接可访问的URL,不允许携带查询串。
refund_amountnumber用户退款金额,单位为分。不允许传非整数的数值
attachstring[0,80]开发者自定义字段,回调原样回传.1汉字=2字符;勿回传敏感信息
signstring开发者对核心字段签名, 防止传输过程中出现意外,签名方式见附录

# 1.5  请求示例

签约支付单退款示例

curl --location --request POST 'https://open.kuaishou.com/openapi/openapi/mp/developer/epay/apply_contract_refund?app_id=ks707065143182458884&access_token=ChFvYXV0aC5hY2Nlc3NUb2tlbhJQUgLJCcZ8npmot-ZdBgcCP637mttUoYGPEv5RgFI_lqJlvIh3senYMleV49N05OT_0YztFVI9_rR21eJdx1hiqgHw4eYYvGbgH48yE5qGIlsaEkM6eJkoPbfUa_qSANYID35L6iIgnCb8d_k_DugrMbDIxWRiQmhOLrCCvktr7pdmDdTWDv0oDzAB' \
--header 'Content-Type: application/json' \
--data-raw '{
    "out_order_no":"1703148876761contractDemo",
    "out_refund_no":"1703148876761",
    "reason":"支付签约退款",
    "ks_order_type":2,
    "ks_withhold_no":"",
    "attach":"退款demo",
    "notify_url":"https://www.abidu.com/refund_notify",
    "refund_amount":"1",
    "sign":"4ef5bceef3e4fd8e79cd83c262c076c2"
}'

代扣单退款请求示例

curl --location --request POST 'https://open.kuaishou.com/openapi/openapi/mp/developer/epay/apply_contract_refund?app_id=ks707065143182458884&access_token=ChFvYXV0aC5hY2Nlc3NUb2tlbhJQUgLJCcZ8npmot-ZdBgcCP637mttUoYGPEv5RgFI_lqJlvIh3senYMleV49N05OT_0YztFVI9_rR21eJdx1hiqgHw4eYYvGbgH48yE5qGIlsaEkM6eJkoPbfUa_qSANYID35L6iIgnCb8d_k_DugrMbDIxWRiQmhOLrCCvktr7pdmDdTWDv0oDzAB' \
--header 'Content-Type: application/json' \
--data-raw '{
    "out_order_no":"1703148876761contractDemo",
    "out_refund_no":"1703148876761",
    "reason":"支付签约退款",
    "ks_order_type":1,
    "ks_withhold_no":"624010201147476465250",
    "attach":"退款demo",
    "notify_url":"https://www.abidu.com/refund_notify",
    "refund_amount":"1",
    "sign":"4ef5bceef3e4fd8e79cd83c262c076c2"
}'

# 1.6 响应结果

返回值为 JSON 形式,其中包括如下字段:

字段名类型说明
resultnumber状态码 1-业务处理成功
error_msgstring错误提示信息
refund_nostring快手小程序平台的退款单号

示例如下(仅供参考):

{
    "result":1,
    "error_msg":"错误信息提示",
    "refund_no": "221072611585202788127" //快手小程序平台退款单号

当 result 不为 1 时,说明请求错误,错误信息详见文章末尾 错误码 处。

# 2. 退款回调

# 2.1 接口说明

在平台代扣成功/失败后,快手小程序服务端会通过 HTTP POST 请求方式回调开发者提供的 HTTP 退款回调地址。回调的内容使用小程序 secret key 进行签名,具体回调方式和重试策略见附录 (opens new window)。请注意:

由于网络波动等原因,可能会产生重复的通知消息,开发者需要做好幂等处理。

在开发者服务端收到回调且处理成功后,需要按以下正常返回示例返回并且 HTTP 响应状态码设为 200,否则会认为通知失败并进行重试。

退款回调的地址是 申请退款接口中的 notify_url 字段,所以请务必保证该字段传输的正确性

# 2.2 基本信息

名称内容
HTTP URL开发者在申请退款接口传入的 notify_url 字段
HTTP MethodPOST

# 2.3  平台回调内容

以下字段放置到 body json中:

{
    "data": {
        "out_refund_no": "0007",
        "refund_amount": 1234,
        "attach": "this is some attach",
        "status": "SUCCESS",
        "ks_order_no": "121111200785144945641",
        "ks_refund_no": "221111211991390142641",
        "refund_type":"保证金账户退款",
        "ks_refund_fail_reason":"账户异常",
        "apply_refund_reason":"用户申请退款"
    },
    "message_id": "61901a3a-2b1f-40b6-af14-de34660d7541",
    "biz_type": "REFUND",
    "app_id": "ks656399649443988986",
    "timestamp": 1625728322061
}

其中和退款相关的主要是

字段名类型说明
refund_amountnumber退款金额
out_refund_nostring开发者的退款单号。
attachstring预下单时携带的开发者自定义信息
statusstring退款状态。 取值: PROCESSING-处理中,SUCCESS-成功,FAILED-失败
ks_order_nostring快手小程序平台订单号。
ks_refund_nostring快手小程序平台退款单号。
refund_typestring退款账户说明
ks_refund_fail_reasonstring退款失败原因
apply_refund_reasonstring订单发起退款的原因

# 2.4 开发者返回内容

开发者在接收到回调消息,并正确处理后,需要返回以下内容格式,以通知小程序平台不再持续回调:

{
  "result" : 1,   //必填。 1-成功,其他-失败。失败小程序平台会尝试重推此消息
  "message_id" : "ChFvYXV0aC5hY2Nlc3NUb2tlbhJQvpR51x8In46B1sDB" //当前消息的message_id
}

如果开发者没有返回或者返回的result不等于1,则小程序平台会尝试重复推送此消息,开发者务必做好消息的幂等处理!

# 错误码

错误码描述排查建议
10000011token 过期调用 getAccessToken 重新生成 token
10000200参数错误对照错误提示和接口字段定义,检查对应的参数
10000302请求频率太快,被限速。请降低访问频率
10000500系统故障请联系相关开发人员进行排查
10000501稍后重试请等待1-2秒,再重试
10000606接口参数签名错误对照接口字段,检查签名字段是否正确
10000607不合理的订单金额请检查传入的订单金额是否合理
10000632平台内部错误请联系相关开发人员进行排查
10000627平台退款处理异常请联系相关开发人员进行排查
10000631配置错误请检查在小程序平台的支付信息是否完善
10000687当前有正在退款中的订单已存在受理中的订单
10000689保证金账户余额不足保证金余额不足,请充值保证金
Copyright ©2025, All Rights Reserved