跳转到主要内容

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.

HaiPay 订阅支付适用于会员、周期性服务和自动续费场景。这个页面不再堆叠完整参数大表,而是先帮助你理解接入模式、业务约束和实施顺序,再跳转到对应的 API Reference 查看详细字段与调试能力。

快速开始

先看接入步骤、必备能力和推荐阅读路径。

集成模式

对比 Apple Pay / Google Pay、信用卡组件和组合模式。

核心 API

直接进入订阅申请、查询、取消和退款接口。
  • 提供明确的订阅入口、扣款周期说明和退订入口。
  • 在订阅成功以及每次扣款前后,通过邮件或其他站外方式通知用户。
  • 提供可确认的订阅协议,并在用户明确授权后再发起订阅。
  • 保持客服可用,至少覆盖主要运营地区的服务时间。
  • 信用卡交易在扣款后 180 天内,消费者可能发起争议。
  • 每笔争议会产生 20 美元争议处理费。
  • 如果选择抗辩,将额外产生 20 美元抗辩费。
  • 抗辩成功时,HaiPay 会退还抗辩费;原始争议处理费默认不退。
PCI DSS 严格禁止在 WebViewiframe 中嵌入信用卡输入页。请始终在受信任的浏览器环境中完成卡信息采集与支付授权,避免合规风险和敏感数据泄露。

快速开始

1

确认业务模式与前置条件

先阅读 接口说明订阅流程,确认你的场景是自动续费而不是一次性支付。
2

选择接入模式

订阅支付提供两种接入模式:PayUrl 跳转模式(服务端获取授权链接,跳转到 HaiPay 托管页面完成支付)和 JS CDN 嵌入模式(使用客户端令牌在你自己的页面中嵌入支付组件)。根据你的收银台设计和前端开发能力选择合适的方式。
3

接入 API、通知与取消能力

完成订阅申请后,需要能查询订阅状态、处理扣款回调,并在用户侧提供取消订阅入口。详细字段与调试入口放在本页下方的 API Reference 卡片中。

集成模式

订阅支付提供两种接入模式,它们的核心区别在于支付页面由谁承载:
对比项PayUrl 跳转模式JS CDN 嵌入模式
支付页面跳转到 HaiPay 托管的支付页面在商户自己的页面中嵌入支付组件
前端工作量几乎为零,只需处理跳转需要引入 JS 脚本并监听事件
UI 控制力低,页面样式由 HaiPay 控制高,可自定义主题、布局和交互
关键返回字段使用响应中的 payUrl使用响应中的 clientToken
适用场景快速接入、对支付页面无定制需求自建收银台、需要沉浸式支付体验
最简单的接入方式。商户服务端调用订阅申请接口后,使用返回的 payUrl 将用户跳转到 HaiPay 托管的支付页面,用户在该页面完成授权和首笔支付。接入流程
1

服务端调用订阅申请接口

商户服务端向 HaiPay 发起 订阅申请,在请求中传入订阅金额、周期、回调地址等必要参数。
2

获取 payUrl 并跳转

接口返回中包含 payUrl 字段,商户将用户浏览器重定向到该地址。
3

用户完成支付

用户在 HaiPay 托管页面完成信用卡信息填写和支付授权。支付完成后,HaiPay 会将用户重定向回商户的 callBackUrl,同时向 notifyUrl 发送异步通知。
示例代码(服务端获取 payUrl 后的前端跳转)
// 假设你的服务端已调用订阅申请接口,并将 payUrl 返回给前端
const payUrl = response.data.payUrl;

// 在当前窗口跳转
window.location.href = payUrl;

// 或者在新窗口打开
// window.open(payUrl, '_blank');
适用建议
  • 希望最快速度完成订阅接入,前端改动最少。
  • 对支付页面的 UI 没有强定制需求。
  • 移动端 H5 场景下,跳转体验通常也能满足需求。

核心 API

详细请求字段、响应结构和在线调试,请直接进入 API Reference:

订阅申请

创建订阅订单,拉起用户授权并完成首笔订阅支付。

查询订阅

查询订阅状态、平台订阅号和扣款记录。

取消订阅

由商户主动发起取消,停止后续周期扣款。

异步通知

当订阅状态变更或周期扣款完成时,HaiPay 会向商户在订阅申请时提供的 notifyUrl 推送异步通知。
为保障接口的扩展性和兼容性,请遵循以下回调参数接收方式:
  1. 禁止声明具体 POJO 对象接收回调参数。
  2. 必须使用通用数据结构(如 JSONObject、Map 等)进行参数解析。
  3. 此设计可确保后续扩展回调字段时,不会影响验签逻辑。
收到通知后,请在响应体中返回 SUCCESS(大写)。
当订阅状态发生变更时触发(如订阅成功、订阅取消、订阅失败等)。
参数名类型说明
typeString通知类型,固定为 SUBSCRIPTION
appIdLong业务 ID
currencyString币种
subscriptionOrderIdString商户订阅号
subscriptionNoString平台订阅号
amountString订阅金额
statusInteger订阅状态(1: 处理中, 2: 订阅成功, 3: 订阅失败, 4: 订阅取消, 5: 订阅完成)
recurringIntervalString循环周期类型(D/W/M/Y)
recurringIntervalCountInteger循环周期间隔
subjectString订阅标题
signString签名(需要使用币种对应的业务密钥信息进行验签)

关键业务规则

项目说明
交易限额订阅金额范围为 0.99 - 1000 USD
周期上限无论周期单位是什么,最长订阅时长不能超过 3 年
周期单位Apple Pay 不支持 W,周订阅请改用 D + 7
支付类型订阅场景固定使用 SUBSCRIPTION
用户通知订阅成功、扣款前、扣款后都建议向用户发送站外通知
退订能力生产环境必须在用户侧提供清晰、可访问的取消订阅入口
支付方式参数订阅申请接口中 inBankCodepaymentMethods 二选一:inBankCode 传入单个支付方式编码,paymentMethods 传入英文逗号分隔的支付方式列表。paymentMethods 暂时仅支持前置组件组合模式使用

测试卡号

仅限测试环境使用
模拟支付成功 使用以下测试卡号,CVC 填写任意 3 位数字,有效期填写任意未来日期:
  • 4242424242424242
模拟支付失败 使用以下测试卡号并填写无效信息:
  • 卡号:4000000000009995
  • 无效月份:13
  • 无效 CVV:99

常见理解问题

什么时候看这个页面,什么时候看 API Reference?

这个页面用于理解产品能力、选择接入模式和把握业务规则。进入开发联调阶段后,请直接查看 订阅 API Reference 获取完整字段、示例报文和调试入口。
订阅类交易更容易产生用户争议。清晰的授权、通知和退订能力可以显著降低拒付、投诉和风控问题,这也是订阅业务能否稳定上线的关键前置条件。
这通常表示当前生产环境不支持该地区,或当前测试方式与目标地区配置不匹配。请先确认商户配置、目标市场和支付方式组合,再联系 HaiPay 支持团队确认生产可用范围。
如果你希望最快上线、前端改动最少,选 PayUrl 跳转模式即可。如果你需要自定义收银台 UI、希望用户不离开你的页面完成支付,选 JS CDN 嵌入模式。两种模式都通过同一个订阅申请接口发起,区别只在于你使用返回的 payUrl 还是 clientToken
两个参数二选一,不可同时传入,也不可同时为空。如果只使用一种支付方式,传 inBankCode;如果需要同时支持多种支付方式(如组合模式),传 paymentMethods。注意 paymentMethods 暂时仅支持前置组件组合模式使用,其他模式请继续使用 inBankCode
如果选择 JS CDN 嵌入模式,优先使用”组合模式”。它能在一个容器内统一呈现多种支付方式,页面更完整,用户理解成本更低,前端开发量也更可控。

相关主题

Last modified on May 28, 2026