HaiPay 订阅支付适用于会员、周期性服务和自动续费场景。这个页面不再堆叠完整参数大表,而是先帮助你理解接入模式、业务约束和实施顺序,再跳转到对应的 API Reference 查看详细字段与调试能力。Documentation Index
Fetch the complete documentation index at: https://doc.haipay.net/llms.txt
Use this file to discover all available pages before exploring further.
快速开始
先看接入步骤、必备能力和推荐阅读路径。
集成模式
对比 Apple Pay / Google Pay、信用卡组件和组合模式。
核心 API
直接进入订阅申请、查询、取消和退款接口。
PCI DSS 严格禁止在
WebView 或 iframe 中嵌入信用卡输入页。请始终在受信任的浏览器环境中完成卡信息采集与支付授权,避免合规风险和敏感数据泄露。快速开始
选择接入模式
订阅支付提供两种接入模式:PayUrl 跳转模式(服务端获取授权链接,跳转到 HaiPay 托管页面完成支付)和 JS CDN 嵌入模式(使用客户端令牌在你自己的页面中嵌入支付组件)。根据你的收银台设计和前端开发能力选择合适的方式。
集成模式
订阅支付提供两种接入模式,它们的核心区别在于支付页面由谁承载:| 对比项 | PayUrl 跳转模式 | JS CDN 嵌入模式 |
|---|---|---|
| 支付页面 | 跳转到 HaiPay 托管的支付页面 | 在商户自己的页面中嵌入支付组件 |
| 前端工作量 | 几乎为零,只需处理跳转 | 需要引入 JS 脚本并监听事件 |
| UI 控制力 | 低,页面样式由 HaiPay 控制 | 高,可自定义主题、布局和交互 |
| 关键返回字段 | 使用响应中的 payUrl | 使用响应中的 clientToken |
| 适用场景 | 快速接入、对支付页面无定制需求 | 自建收银台、需要沉浸式支付体验 |
- PayUrl 跳转模式
- JS CDN 嵌入模式
最简单的接入方式。商户服务端调用订阅申请接口后,使用返回的 示例代码(服务端获取 payUrl 后的前端跳转)适用建议
payUrl 将用户跳转到 HaiPay 托管的支付页面,用户在该页面完成授权和首笔支付。接入流程服务端调用订阅申请接口
商户服务端向 HaiPay 发起 订阅申请,在请求中传入订阅金额、周期、回调地址等必要参数。
- 希望最快速度完成订阅接入,前端改动最少。
- 对支付页面的 UI 没有强定制需求。
- 移动端 H5 场景下,跳转体验通常也能满足需求。
核心 API
详细请求字段、响应结构和在线调试,请直接进入 API Reference:订阅申请
创建订阅订单,拉起用户授权并完成首笔订阅支付。
查询订阅
查询订阅状态、平台订阅号和扣款记录。
取消订阅
由商户主动发起取消,停止后续周期扣款。
异步通知
当订阅状态变更或周期扣款完成时,HaiPay 会向商户在订阅申请时提供的notifyUrl 推送异步通知。
收到通知后,请在响应体中返回 SUCCESS(大写)。
- 订阅状态通知
- 订阅扣款通知
当订阅状态发生变更时触发(如订阅成功、订阅取消、订阅失败等)。
| 参数名 | 类型 | 说明 |
|---|---|---|
type | String | 通知类型,固定为 SUBSCRIPTION |
appId | Long | 业务 ID |
currency | String | 币种 |
subscriptionOrderId | String | 商户订阅号 |
subscriptionNo | String | 平台订阅号 |
amount | String | 订阅金额 |
status | Integer | 订阅状态(1: 处理中, 2: 订阅成功, 3: 订阅失败, 4: 订阅取消, 5: 订阅完成) |
recurringInterval | String | 循环周期类型(D/W/M/Y) |
recurringIntervalCount | Integer | 循环周期间隔 |
subject | String | 订阅标题 |
sign | String | 签名(需要使用币种对应的业务密钥信息进行验签) |
关键业务规则
| 项目 | 说明 |
|---|---|
| 交易限额 | 订阅金额范围为 0.99 - 1000 USD |
| 周期上限 | 无论周期单位是什么,最长订阅时长不能超过 3 年 |
| 周期单位 | Apple Pay 不支持 W,周订阅请改用 D + 7 天 |
| 支付类型 | 订阅场景固定使用 SUBSCRIPTION |
| 用户通知 | 订阅成功、扣款前、扣款后都建议向用户发送站外通知 |
| 退订能力 | 生产环境必须在用户侧提供清晰、可访问的取消订阅入口 |
| 支付方式参数 | 订阅申请接口中 inBankCode 和 paymentMethods 二选一:inBankCode 传入单个支付方式编码,paymentMethods 传入英文逗号分隔的支付方式列表。paymentMethods 暂时仅支持前置组件组合模式使用 |
测试卡号
模拟支付成功 使用以下测试卡号,CVC 填写任意 3 位数字,有效期填写任意未来日期:4242424242424242
- 卡号:
4000000000009995 - 无效月份:
13 - 无效 CVV:
99
常见理解问题
什么时候看这个页面,什么时候看 API Reference?
什么时候看这个页面,什么时候看 API Reference?
这个页面用于理解产品能力、选择接入模式和把握业务规则。进入开发联调阶段后,请直接查看 订阅 API Reference 获取完整字段、示例报文和调试入口。
为什么订阅业务必须强调退订入口和站外通知?
为什么订阅业务必须强调退订入口和站外通知?
订阅类交易更容易产生用户争议。清晰的授权、通知和退订能力可以显著降低拒付、投诉和风控问题,这也是订阅业务能否稳定上线的关键前置条件。
生产环境出现 Unsupported region: CN 怎么处理?
生产环境出现 Unsupported region: CN 怎么处理?
这通常表示当前生产环境不支持该地区,或当前测试方式与目标地区配置不匹配。请先确认商户配置、目标市场和支付方式组合,再联系 HaiPay 支持团队确认生产可用范围。
PayUrl 跳转和 JS CDN 嵌入应该怎么选?
PayUrl 跳转和 JS CDN 嵌入应该怎么选?
如果你希望最快上线、前端改动最少,选 PayUrl 跳转模式即可。如果你需要自定义收银台 UI、希望用户不离开你的页面完成支付,选 JS CDN 嵌入模式。两种模式都通过同一个订阅申请接口发起,区别只在于你使用返回的
payUrl 还是 clientToken。inBankCode 和 paymentMethods 应该传哪个?
inBankCode 和 paymentMethods 应该传哪个?
两个参数二选一,不可同时传入,也不可同时为空。如果只使用一种支付方式,传
inBankCode;如果需要同时支持多种支付方式(如组合模式),传 paymentMethods。注意 paymentMethods 暂时仅支持前置组件组合模式使用,其他模式请继续使用 inBankCode。如果只想尽快做一个现代化订阅页面,推荐哪种模式?
如果只想尽快做一个现代化订阅页面,推荐哪种模式?
如果选择 JS CDN 嵌入模式,优先使用”组合模式”。它能在一个容器内统一呈现多种支付方式,页面更完整,用户理解成本更低,前端开发量也更可控。

