合利宝快捷支付接口对接指南
接口版本说明
合利宝快捷支付接口有三个版本,本技能同时支持权益类和普通快捷:
| 版本 | 说明 | |------|------| | 普通快捷 | 标准快捷支付接口,基础功能 | | 权益类快捷 | 在普通快捷基础上增加权益相关字段,向下兼容普通快捷 | | 预约支付快捷 | 支持预约扣款,字段结构不同(需额外确认) |
如何判断您对接的版本:
- 如果您不确定对接的是哪个版本,可以直接使用此技能,然后根据实际接口返回调整参数
- 权益类接口在普通快捷基础上增加了额外字段,如果只是用普通功能,可以忽略这些额外字段
- 如有疑问,请联系合利宝业务人员确认
文档获取方式
合利宝快捷支付接口文档通过在线 API 动态获取:
# 获取完整接口文档
curl -sL "https://xianshang-doc.helipay.com/showdoc-admin/api/skill-docs/37/8ca9c6e4"
编写代码前务必先获取最新文档,文档内包含完整的接口参数、代码示例和返回码说明。
快速决策树
用户咨询合利宝快捷支付接入
|
+-- 绑卡的同时完成支付?
| +-- 是 --> 方式一:首次支付(4.1→4.2→4.3)
|
+-- 先绑卡,后续再支付?
| +-- 是 --> 方式二:鉴权绑卡(4.4→4.5→4.6)
|
+-- 免输卡号,跳转银行页面绑卡?
+-- 是 --> 方式三:一键绑卡(4.15→4.16)
接入路由表
| 场景 | 推荐方式 | 核心接口 | P1_bizType 值 | 适用场景 |
|------|----------|----------|---------------|----------|
| 绑卡并支付 | 方式一:首次支付 | 4.1 首次支付 → 4.2 短信 → 4.3 确认支付 | QuickPayFirstPayPreOrderSP | 用户首次绑卡时同步完成支付 |
| 先绑卡后支付 | 方式二:鉴权绑卡 | 4.4 预下单 → 4.5 短信 → 4.6 绑卡 | QuickPaySignOrderSP | 绑定银行卡,后续多次支付 |
| 免输卡号绑卡 | 方式三:一键绑卡 | 4.15 一键绑卡 → 4.16 结果查询 | QuickPayBindBankCard | 跳转银行页面完成绑卡 |
| 绑卡后再次支付 | 绑卡支付 | 4.7 预下单 → 4.9 绑卡支付 | QuickPayPayOrderSP | 使用已绑卡号完成支付 |
| 查询支付结果 | 订单查询 | 4.11 订单查询 | QuickPayQuerySP | 根据订单号查询支付状态 |
| 解除银行卡绑定 | 解绑接口 | 4.12 银行卡解绑 | QuickPayUnBindSP | 用户主动解绑银行卡 |
场景关键词匹配
| 关键词 | 路由方式 | |--------|----------| | 权益、权益支付、权益类快捷、权益快捷、权益代扣、权益交易 | 权益类快捷支付 | | 首次支付、绑卡支付、边绑卡边支付、第一次支付、绑定并支付、同步支付 | 方式一:首次支付 | | 鉴权绑卡、先绑卡后支付、绑定银行卡、签约、协议签约、绑卡收款 | 方式二:鉴权绑卡 | | 一键绑卡、免输卡号、跳转银行页面、银联签约、H5 绑卡、工行绑卡 | 方式三:一键绑卡 | | 绑卡支付、再次支付、选卡支付、用已绑卡支付、快捷支付 | 绑卡支付(4.7+4.9) | | 订单查询、支付结果查询、查单、查询接口 | 4.11 订单查询 | | 解绑、解除绑定、删除银行卡、解约 | 4.12 银行卡解绑 | | 回调通知、异步通知、支付回调、服务器通知 | 4.10 异步通知接口 | | 短信验证码、发送验证码、验证码短信 | 4.2/4.5/4.8 短信接口 |
接口地址
| 环境 | 地址 |
|------|------|
| 测试环境 | https://test.trx.helipay.com/trx/quickPayApi/interface.action |
| 生产环境 | https://quickpay.trx.helipay.com/trx/quickPayApi/interface.action |
⚠️ 注意: 测试环境也是真实交易,请用小金额测试!
三种支付方式详解
方式一:首次支付(绑卡 + 支付同步)
流程:
4.1 首次支付(预下单)
↓ 返回绑卡 ID
4.2 首次支付短信
↓ 发送验证码到银行预留手机号
4.3 确认支付
↓ 支付成功,返回 bindId
适用场景:
- 用户首次使用银行卡支付
- 绑卡的同时完成首次支付
- 电商首次下单、快捷收款
关键参数:
P1_bizType:QuickPayFirstPayPreOrderSPP9_cardNo: 银行卡号(SM4 加密)P13_phone: 银行预留手机号(SM4 加密)P23_serverCallbackUrl: 支付回调地址
返回结果:
rt10_bindId: 绑卡 ID(后续支付使用)
方式二:鉴权绑卡(先绑卡后支付)
流程:
绑卡阶段:
4.4 鉴权绑卡预下单
↓
4.5 鉴权绑卡短信
↓
4.6 鉴权绑卡 → 获取 bindId
支付阶段(后续):
4.7 绑卡支付预下单
↓
4.9 绑卡支付
适用场景:
- 用户中心绑定银行卡
- 后续多次支付使用同一张卡
- 会员充值、周期性缴费
关键参数:
- 4.4/4.5/4.6 必须使用同一订单号
- 4.7/4.9 必须使用同一订单号(与绑卡订单号不同)
- 4.7 需传入
P3_bindId(从 4.6 返回获取)
方式三:一键绑卡(免输卡号)
流程:
绑卡阶段:
4.15 一键绑卡
↓ 返回 HTML form 表单
前端自动提交跳转银行页面
↓ 用户银行页面完成鉴权
4.16 一键绑卡结果查询 → 获取 bindId
支付阶段(后续):
4.7 绑卡支付预下单
↓
4.9 绑卡支付
适用场景:
- 提升绑卡转化率
- 支持工行等银行 APP 跳转
- 移动端 H5 绑卡
必填特殊参数:
deviceID: 设备标识(64 位)trxTrmInf: 设备信息 JSONmerUserRegDt: 用户注册时间(yyyyMMdd)usrLoginMethod: 登录验证方式(5 位位图)
设备信息格式:
{
"TrxTrmTp": "08", // 07 电脑 08 手机 10 平板
"sourceIP": "127.0.0.1", // 客户端 IP
"deviceSystem": "1" // 1 安卓 2 IOS 3 其他
}
通用规则
参数规范
| 规则 | 说明 |
|------|------|
| 时间戳 | yyyyMMddHHmmss(14 位,精确到秒) |
| 订单号 | 50 字符以内,同一商户号下唯一 |
| 金额 | 单位:元,最小 0.01 元 |
| 签名方式 | SM3WITHSM2 |
SM4 加密字段
以下字段需要 SM4 加密,调用 helipay-sm2 技能进行加密:
| 接口 | 需要 SM4 加密的字段 |
|------|---------------------|
| 4.1 首次支付 | P8_idCardNo, P9_cardNo, P10_year, P11_month, P12_cvv2, P13_phone, ruleJson |
| 4.3 确认支付 | P5_validateCode |
| 4.4 鉴权绑卡预下单 | P8_idCardNo, P9_cardNo, P10_year, P11_month, P12_cvv2, P13_phone |
| 4.6 鉴权绑卡 | P5_validateCode |
| 4.7 绑卡支付预下单 | ruleJson(如有) |
| 4.9 绑卡支付 | P5_validateCode(如有) |
| 4.15 一键绑卡 | P8_idCardNo, P9_phone |
使用方式:将需要加密的字段明文传给 helipay-sm2 技能,获取加密后的密文填入请求参数。
签名规则
sign,signatureType参数本身不参与签名,其它参数有标明“不参与签名”或同义的,也不参与签名。- 需要参与签名的参数为空值也需拼接(
&P1值&&P3值)即保留连接符号&。 - 参数按
&P1值&P2值&P3值...顺序拼接,若无P1P2开头值,按照文档接口中列表展示的字段顺序拼接,只拼其值。 - 中文不需要 URL Encode。
使用 helipay-sm2 技能:将拼接好的签名原文传给 helipay-sm2 技能,获取签名结果。
回调处理
4.10 异步通知接口
通知机制:
- 订单创建 24 小时内通知
- 间隔 2 分钟,最多 5 次
- 成功处理需返回
success(纯文本)
回调参数:
rt2_retCode:0000表示成功rt9_orderStatus:SUCCESS表示支付成功rt10_bindId: 绑卡 IDruleJson: 分账结果(明文,无需解密)
注意事项:
- 做好幂等处理(可能重复通知)
- 若前一天通知订单数超过 100 且一条不接收,系统会加入通知限制名单
- 需返回
success表示已处理
返回码说明
| 返回码 | 描述 | 处理建议 | |--------|------|----------| | 0000 | 成功 | - | | 0001 | 处理中 | 等待异步结果或查询 | | 8000 | 失败 | 根据返回信息排查 | | 8015 | 短信验证码错误或已过期 | 提示用户重新获取 | | 8017 | 当前银行卡不支持 | 换卡或联系业务确认 | | 8002 | 订单号不唯一 | 更换订单号重试 | | 8999 | 系统异常 | 联系合利宝客服 |
注意事项
- 分账功能:使用分账前需联系商务开通分账产品
- 银行支持列表:因支持列表会有变动,最新支持银行列表请联系相关业务人员获取
- 一键绑卡银行支持:一键绑卡请到 demo 下载页面查看主流银行支持列表
- 回调地址配置:
- 交易类通知(支付结果、绑卡结果等):可通过接口参数
P23_serverCallbackUrl传递回调地址 - 解绑通知:需要联系合利宝技术支持配置后台回调地址
- 交易类通知(支付结果、绑卡结果等):可通过接口参数
- 敏感信息:不要在日志中明文记录身份证、卡号、手机号等敏感信息
Demo 和资料下载
通过文档 API 获取下载地址:
curl -sL "https://xianshang-doc.helipay.com/showdoc-admin/api/skill-docs/37/8ca9c6e4"
文档内提供:
- Java/PHP demo 源码下载
- SKILL 技能文件下载(含完整 demo)
- 快捷支持银行 + 限额表
- 银行编码表
- 支付协议模板
常见对接问题
| 问题 | 解决方案 |
|------|----------|
| 签名失败 | 检查参数顺序、空值拼接、加密字段是否已加密 |
| 订单号重复 | 确保每次请求使用新订单号 |
| 回调收不到 | 检查接口参数 P23_serverCallbackUrl 是否配置、网络可达性、是否返回 success |
| 银行卡不支持 | 前往 Demo 下载页面 查看最新银行支持列表 |
| 短信收不到 | 检查手机号是否为银行预留号,是否超时 |
对接步骤清单
人工准备(对接前完成)
- [ ] 登录合利宝商户后台,申请并下载证书(获取 SM2 私钥)
- 下载
.pfx格式证书文件 - 确保证书密码已知(通常在下载时设置或单独提供)
- 证书密码用于从
.pfx文件中提取私钥
- 下载
- [ ] 配置回调地址(商户后台设置)
技术对接
- [ ] 获取并阅读完整接口文档(使用文档 API)
- [ ] 实现签名(使用 helipay-sm2 技能)
- [ ] 实现 SM4 字段加密(使用 helipay-sm2 技能)
- [ ] 选择支付方式,调通绑卡流程
- [ ] 调通支付流程
- [ ] 实现回调处理
- [ ] 小金额(0.01 元)测试验证
生成时的说明要求
最终回答需要包含:
- 接口字段说明:列出请求参数(P1~P28)、返回参数的完整说明,明确哪些字段需要 SM4 加密、哪些字段参与签名。
- 签名源串拼接规则:按
&P1 值&P2 值&P3 值...顺序拼接,空值也需拼接,sign参数本身不参与签名。 - SM4 加密字段清单:明确告知用户哪些字段需要调用
helipay-sm2技能进行加密(身份证、卡号、手机号、CVV2、有效期等)。 - 代码示例:提供完整的请求参数组装、签名、调用示例(Java/Python 等,根据用户要求)。
- 配合 helipay-sm2 技能使用:
- 签名:将拼接好的签名源串传给
helipay-sm2技能,获取 SM3withSM2 签名结果 - SM4 加密:将需要加密的敏感字段明文传给
helipay-sm2技能,获取密文填入请求参数 - SM4 解密(回调处理):将密文传给
helipay-sm2技能进行解密
- 签名:将拼接好的签名源串传给
- JDK 和依赖版本:JDK8+,依赖与
helipay-sm2技能一致(Hutool 5.8.5 + BouncyCastle 1.76) - 明确说明:本技能只处理合利宝快捷支付接口字段组装、签名源串拼接、协议规范,实际的加解密/签名/验签由
helipay-sm2技能完成。 - 提醒:签名源串的字段顺序、排除字段、证书格式必须与合利宝官方文档一致;如有自定义分账、权益类字段,需联系业务确认。
Scan to join WeChat group