返回 Skill 列表
extension
分类: 开发与工程无需 API Key

合利宝接口对接_结算V001

该skill是合利宝接口对接中的结算产品的接口

person作者: LuckyKhubModelScope

合利宝商户结算接口(提现)

概述

商户结算(提现)是商户将账户余额提现到进件时绑定的银行卡中。

编写代码前务必先获取最新文档

curl -sL "https://xianshang-doc.helipay.com/showdoc-admin/api/skill-docs/49/9cd05449"

接口地址

| 环境 | 地址 | |------|------| | 测试环境 | http://test.trx.helipay.com/trx/transfer/interface.action | | 生产环境 | http://transfer.trx.helipay.com/trx/transfer/interface.action |

请求通用规则

| 项目 | 说明 | |------|------| | 请求方法 | POST | | 请求格式 | application/x-www-form-urlencoded(form 表单) | | 字符编码 | UTF-8 | | 签名算法 | SM3WITHSM2(推荐使用国密方式) | | 签名要求 | 请求和响应均需校验签名 |

本接口没有公共参数,所有参数直接以 form 表单提交。

包含接口

| 接口 | P1_bizType | 说明 | |------|------------|------| | 结算接口 | MerchantSettlement | 提现申请 | | 结算查询 | MerchantSettlementQuery | 查询结算状态 | | H5 结算预下单 | MerchantH5SettlementPreOrder | 获取 H5 结算页面链接 | | 结算结果通知 | - | 合利宝回调商户(POST JSON) |

签名规则

特殊之处:本接口使用国密签名时,signType 需要参与签名,其他合利宝接口 signType 不参与签名。

不参与签名的字段: | 字段名 | 变量名 | 说明 | |--------|--------|------| | 签名结果 | sign | 签名本身不参与签名 |

拼接规则

  1. sign 外,所有参数按变量名顺序拼接:&P1值&P2值&P3值...
  2. 参与签名的字段,不传值也要保留连接符号 &
  3. 中文不需要 URL Encode
  4. signType 参与签名(与其他接口不同)
  5. 尾部不追加 md5Key(仅 SM3WITHSM2 签名)

签名示例

&Transfer&p_20170306114605&C1800000002&0.01&CCB&6216731234963158742&张三&B2C&&&true&结算&SM3WITHSM2

末尾的 SM3WITHSM2 即为 signType 的值,参与签名。

签名计算sign = SM2(待签名字符串, 商户SM2私钥)

签名结果 URL 编码:最终提交的 form body 中 sign 值必须是 URL 编码后的,但编码方式因语言而异:

| 语言 | 做法 | 注意 | |------|------|------| | Java | 手工拼接 form body 时用 URLEncoder.encode(sign, "UTF-8") 主动编码 | 必须手动编码 | | PHP | 用 http_build_query() 组装参数,不要手动 urlencode() | http_build_query 已自动编码,手动再编会导致双重编码(%%25),服务端报 Illegal base64 character 25 验签失败 |

SM4 加密

对敏感信息字段进行 SM4 加密:

  • 对称加密密钥 Key 由商户生成随机 128 比特流
  • 使用平台公钥(SM2)对 Key 进行加密后上送
  • 具体加密/解密操作调用 helipay-sm2 技能完成

回调通知

| 项目 | 说明 | |------|------| | 通知方法 | POST | | 请求格式 | application/json(JSON Body) | | 通知次数 | 最多 5 次 | | 响应要求 | 处理成功后返回纯文本 success |

注意事项

  • signType 参与签名:这是本接口与其他合利宝接口最大的区别。其他接口 signType 不参与签名,但本接口必须参与。
  • 签名结果需 URL 编码URLEncoder.encode(sign, "UTF-8") 后再填入 sign 字段。
  • 本接口推荐使用 SM3WITHSM2 国密签名,不支持 MD5。
  • 提现金额最小 5 元。
  • 结算接口是将余额提现到进件时绑定的银行卡
  • H5 结算链接有效期仅 2 小时。
  • 回调通知为 JSON 格式application/json),不是 form 表单格式。
  • 回调处理后必须返回纯文本 success
  • 本接口没有公共参数,所有参数直接以 form 提交。
  • 具体字段说明、返回参数、返回码以最新接口文档为准,请用上方 curl 命令获取。

生成时的说明要求

最终回答需要包含:

  • 接口请求方式:明确告知接口是 POST form 表单格式(application/x-www-form-urlencoded),不是 JSON;回调通知是 POST JSON格式(application/json)。
  • 接口字段说明:列出所有请求参数、返回参数的完整说明,明确哪些字段参与签名、哪些字段需要 SM4 加密(以最新文档为准)。
  • 签名源串拼接规则:按 &P1值&P2值&P3值... 顺序拼接(除 sign 外的所有参数),signType 参与签名(这是本接口特殊之处,与其他接口不同),空值也需拼接。仅 SM3WITHSM2 签名,不追加 md5Key。签名结果需 URL 编码。
  • SM4 加密字段清单:敏感信息字段需要 SM4 加密。调用 helipay-sm2 技能进行 SM4 加密,SM4 密钥用 SM2 公钥加密后上送。
  • 代码示例:提供完整的请求参数组装、签名、调用示例(Java/Python 等,根据用户要求)。
  • 配合 helipay-sm2 技能使用
    • 签名:将拼接好的签名源串(包含 signType)传给 helipay-sm2 技能,获取 SM3WITHSM2 签名结果。签名结果 URL 编码:Java 手工拼 form body 时用 URLEncoder.encode(sign, "UTF-8") 主动编码;PHP 用 http_build_query()不要手动 urlencode(),因为 http_build_query 已自动编码,手动再编会导致双重编码(%%25),服务端报 Illegal base64 character 25 验签失败。
    • SM4 加密:将需要加密的敏感字段明文传给 helipay-sm2 技能,获取密文填入请求参数。
    • SM4 解密(回调处理):将密文传给 helipay-sm2 技能进行解密。
  • JDK 和依赖版本:JDK8+,依赖与 helipay-sm2 技能一致(Hutool 5.8.5 + BouncyCastle 1.76)。
  • 明确说明:本技能只处理合利宝商户结算接口字段组装、签名源串拼接、协议规范,实际的加解密/签名/验签由 helipay-sm2 技能完成。
  • 提醒:签名源串的字段顺序、signType 参与签名这一特殊规则、签名结果 URL 编码必须与合利宝官方文档一致。
  • 金额单位:元(不是分),最小金额 5 元。