开发 服务端 担保支付(单次支付) 开放接口 结算能力
# 结算能力
更新时间:2024-09-10 21:57:30
# 1、接口说明
结算说明:结算功能用于在交易满足结算规则后,可以根据需求分配货款,将资金从冻结户转移至可提现账户。
为了保证业务正确处理, 请按担保交易设置页面的分账周期处理分账. 订单在支付后 360 天后如果仍然未进行分账,则当笔交易无法进行资金结算;
超期未结算的订单:
- 微信平台将自动结算给商户
- 支付宝会将资金停留在支付平台,无法结算
结算方式:结算用于确认一笔在途资金,将其转化为可提现资金。平台提供了两种结算方式:
- 自动结算:配置流程见文档 (opens new window);
- 主动结算:开发者主动调用下方请求结算接口,发起结算。
结算规则:
- 订单履约完成后发起结算,结算周期为 订单到达核销状态(订单状态为11或15)满3天后可发起结算。核销状态通过订单同步接口 (opens new window)进行同步。
- 结算时,快手小程序平台会收取整笔交易的平台服务费。若结算后发生退款,则平台服务费不作退还。
- 若有达人分销和服务商分佣,结算后退款,分销费不退还。由开发者现金户余额退还整单退款。
结算分账方
- 商户:商户在该笔订单收入
- 苹果通道费:仅对使用苹果支付渠道收取,收取方是苹果公司,一般费率在30%左右,具体收费标准见苹果价格档位信息 | 快手小程序文档 (opens new window)。非苹果支付订单无此费用。
- 平台服务费:快手平台收取的服务费,费率一般在2%,个别小程序会有不同。
- 达人分销费:小程序订单是由达人的短视频或者直播中带货带来,需要分销给达人。非达人带货订单无此费用。
- 服务商分销费:小程序借助第三方服务商开发运营上线,产生的订单收入需分销给服务商。非服务商小程序无此费用。
计算规则如下:
订单支付金额: orderPayAmount
苹果通道费:appleChannelFee
服务商分销比例:developerPromotionRate
达人分销费比例:promotionRate
平台服务费比例:platformRate
商户收入 = (orderPayAmount - appleChannelFee) * (1- (developerPromotionRate + promotionRate + platformRate))
即:先扣除苹果通道费,再按照服务商/达人分销+平台服务费比例扣除费用,剩余的钱是本比订单商家收入。服务商分销费、达人分销费和平台服务费的基数,均为扣出苹果通道费后的金额。
# 2、结算接口
# 2.1、结算发起
- 结算回调地址会优先使用开发者在 结算接口 传入的 notify_url,如果结算接口没有传入,会填充开发者在开发者平台设置的 结算回调,该结算回调地址设置与查看步骤如下【小程序开发者平台 (opens new window) -> 交易管理 -> 支付管理 -> 支付设置 -> 默认回调地址】
# 2.1.1、基本信息
名称 | 内容 |
HTTP URL | https://open.kuaishou.com/openapi/mp/developer/epay/settle |
HTTP Method | POST |
接口频次 | 30QPS(小程序app_id维度) |
# 2.1.2、请求头
名称 | 字段类型 | 内容 |
Content-Type | String | 固定值: "application/json" |
# 2.1.3、入参
以下参数在query param中
字段名 | 类型 | 是否必填 | 是否参与签名 | 说明 |
app_id | string | 是 | 是 | 小程序 AppID |
access_token | string | 是 | 否 | 拥有小程序支付权限的access token,获取方式见getAccessToken |
以下字段放置到body json中:
字段名 | 类型 | 是否必填 | 是否参与签名 | 说明 |
out_order_no | string[6,32] | 是 | 是 | 开发者需要发起结算的支付订单号,商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一 示例值:1217752501201407033233368018 |
out_settle_no | string[6,32] | 是 | 是 | 开发者的结算单号,小程序唯一。 |
reason | string[1,128] | 是 | 是 | 结算描述,长度限制 128 个字符。1个汉字=2个字符 |
attach | string[0, 128] | 否 | 是 | 开发者自定义字段,回调原样回传. 注:1汉字=2字符;勿回传敏感信息 |
notify_url | string[1,256] | 否 | 是 | 结算回调通知URL,必须为直接可访问的URL,不允许携带查询串。 |
settle_amount | number | 否 | 是 | 当次结算金额,需传大于0的金额,单位为【分】 |
multi_copies_goods_info | string[1, 500] | 否(单商品多份场景必填) | 是 | 单商品购买多份场景,示例值:[{"copies":2}], 内容见multi_copies_goods_info字段说明 |
sign | string | 是 | 否 | 开发者对核心字段签名, 防止传输过程中出现意外,签名方式见附录 |
multi_copies_goods_info字段说明
字段名 | 类型 | 说明 |
copies | number | 结算份数 |
# 2.1.4、示例
请求示例
curl --location --request POST 'https://open.kuaishou.com/openapi/mp/developer/epay/settle?app_id=ks707065143182458884&access_token=ChFvYXV0aC5hY2Nlc3NUb2tlbhJABVi9jvzBiHqK8ftAbMG6OsPtSy4V02gKbaX0jv2PEo-mUlhN6dpJLCO7RoI7GbkEbKKh-Vlfq5S0bN-Wgl_jjxoSXmId3s_9TpqnCS4FlyiXkIhhIiC5L9gIWwswVuCQQyTxEtvMRH6zMwpfvAQ3x6F_IrakPygFMAE' \
--header 'Content-Type: application/json' \
--data-raw '{
"notify_url":"https://qa-mp.test.kuaishou.com/zeus/epay/notify",
"attach":"结算demo",
"reason":"测试结算",
"out_order_no":"1700813954820demob",
"out_settle_no":"1700813954820demobutie1",
"settle_amount":"10",
"sign":"af2b2d3160853a76fd31496391ea74aa"
}'
响应
返回值为 JSON 形式,其中包括如下字段:
字段名 | 类型 | 说明 |
result | number | 状态码 1-业务处理成功。其他不成功,详细见错误码 |
error_msg | string | 错误提示信息,常见错误处理可参考附录常见问题章节 |
settle_no | string | 快手小程序平台的结算单号 |
示例如下(仅供参考):
{
"result":1,
"error_msg":"错误信息提示",
"settle_no": "221072611585202788127"
}
错误码
当 result 不为 1 时,说明请求错误。错误码见附录。
下面是结算相关的错误码
错误码 | 错误信息 | 排查建议 |
10000628 | 退款调用异常 | 退款调用内部支付中心抛异常,请联系快手小程序客服帮忙排查 |
# 2.2、结算回调
当订单结算成功之后,快手小程序服务端会通过 post 方式回调开发者提供的 HTTP 接口(notify_url)。回调的内容使用小程序 secret key 进行签名,具体回调方式和重试策略见附录。
回调内容如下:
{
"data": {
"ks_order_no": "124040311931612458252",
"developer_promotion_amount": 0,
"apple_channel_fee": 0,
"out_settle_no": "1712136150805settle",
"attach": "结算demo",
"ks_settle_no": "324040311746606116252",
"promotion_amount": 1,
"settle_amount": 8,
"enable_promotion": true,
"status": "SUCCESS"
},
"biz_type": "SETTLE",
"message_id": "d2614163-e792-4cb9-bda3-022ffefeaf4e",
"app_id": "ks707065143182458884",
"timestamp": 1712136430484
}
其中和结算相关的主要是:
字段名 | 类型 | 说明 |
ks_order_no | string | 快手小程序平台订单号。 |
developer_promotion_amount | number | 服务商分销金额,单位:分(仅通过服务商接入的小程序有) |
apple_channel_fee | number | 苹果通道费,单位:分(仅苹果支付有此费) |
out_settle_no | string | 外部结算单号,即开发者结算请求的单号。 |
attach | string | 预下单时携带的开发者自定义信息 |
ks_settle_no | string | 快手小程序平台结算单号。 |
promotion_amount | number | 预计分销金额,单位:分 |
settle_amount | number | 结算后给商户的金额,单位:分 |
status | string | 结算状态。 取值:SUCCESS-成功,FAILED-失败 |
enable_promotion | boolean | 是否参与分销,true:分销,false:非分销 |
开发者返回
开发者在接收到回调消息,并正确处理后,需要返回以下内容格式,以通知小程序平台不再持续回调:
{
"result" : 1, //必填。 1-成功,其他-失败。失败小程序平台会尝试重推此消息
"message_id" : "ChFvYXV0aC5hY2Nlc3NUb2tlbhJQvpR51x8In46B1sDB" //当前消息的message_id
}
如果开发者没有返回或者返回的result不等于1,则小程序平台会尝试重复推送此消息,开发者务必做好消息的幂等处理!