- PCI 合规性:直接违反 PCI DSS 要求
- 安全风险:WebView 和 iframe 可能无法提供足够的安全隔离
- 中间人攻击:恶意应用可能拦截或篡改支付数据
- 钓鱼风险:无法确保用户是在可信的环境中输入敏感信息
设备环境要求
地区限制
不支持的地区列表
不支持的地区列表
AD-安道尔AE-阿拉伯联合酋长国AF-阿富汗AG-安提瓜和巴布达AI-安圭拉AL-阿尔巴尼亚AM-亚美尼亚AO-安哥拉AQ-南极洲AR-阿根廷AS-美属萨摩亚AW-阿鲁巴AX-奥兰群岛BA-波斯尼亚和黑塞哥维那BB-巴巴多斯BD-孟加拉国BF-布基纳法索BH-巴林BI-布隆迪BJ-贝宁BL-圣巴泰勒米BM-百慕大BN-文莱BQ-博内尔、圣尤斯特歇斯和萨巴BS-巴哈马BT-不丹BV-布韦岛BW-博茨瓦纳BY-白俄罗斯BZ-伯利兹CC-科科斯(基林)群岛CD-刚果民主共和国CF-中非共和国CG-刚果共和国CI-科特迪瓦CK-库克群岛CM-喀麦隆CO-哥伦比亚CU-古巴CV-佛得角CW-库拉索CX-圣诞岛CY-塞浦路斯DJ-吉布提DM-多米尼克DO-多米尼加共和国DZ-阿尔及利亚EC-厄瓜多尔EE-爱沙尼亚EG-埃及EH-西撒哈拉ER-厄立特里亚ET-埃塞俄比亚FJ-斐济FK-福克兰群岛FM-密克罗尼西亚联邦FO-法罗群岛GA-加蓬GD-格林纳达GE-格鲁吉亚GF-法属圭亚那GG-根西岛GH-加纳GI-直布罗陀GL-格陵兰GM-冈比亚GN-几内亚GP-瓜德罗普GQ-赤道几内亚GS-南乔治亚和南桑威奇群岛GT-危地马拉GW-几内亚比绍HK-香港HM-赫德岛和麦克唐纳群岛HN-洪都拉斯HT-海地ID-印度尼西亚IL-以色列IM-马恩岛IN-印度IO-英属印度洋领地IQ-伊拉克IR-伊朗JM-牙买加JO-约旦JP-日本KE-肯尼亚KH-柬埔寨KI-基里巴斯KM-科摩罗KN-圣基茨和尼维斯KP-朝鲜KR-韩国KW-科威特KY-开曼群岛KZ-哈萨克斯坦LA-老挝LB-黎巴嫩LC-圣卢西亚LI-列支敦士登LK-斯里兰卡LR-利比里亚LS-莱索托LV-拉脱维亚LY-利比亚MD-摩尔多瓦ME-黑山MF-法属圣马丁MG-马达加斯加MH-马绍尔群岛MK-北马其顿ML-马里MM-缅甸MN-蒙古MP-北马里亚纳群岛MQ-马提尼克MR-毛里塔尼亚MS-蒙特塞拉特MU-毛里求斯MV-马尔代夫MW-马拉维MY-马来西亚MZ-莫桑比克NA-纳米比亚NC-新喀里多尼亚NE-尼日尔NF-诺福克岛NG-尼日利亚NI-尼加拉瓜NP-尼泊尔NR-瑙鲁NU-纽埃OM-阿曼PA-巴拿马PE-秘鲁PF-法属波利尼西亚PG-巴布亚新几内亚PH-菲律宾PK-巴基斯坦PM-圣皮埃尔和密克隆PN-皮特凯恩群岛PR-波多黎各PS-巴勒斯坦PW-帕劳RE-留尼汪RU-俄罗斯RW-卢旺达SA-沙特阿拉伯SB-所罗门群岛SC-塞舌尔SD-苏丹SH-圣赫勒拿SJ-斯瓦尔巴和扬马延SK-斯洛伐克SL-塞拉利昂SM-圣马力诺SN-塞内加尔SO-索马里SR-苏里南SS-南苏丹ST-圣多美和普林西比SV-萨尔瓦多SX-荷属圣马丁SY-叙利亚SZ-斯威士兰TC-特克斯和凯科斯群岛TD-乍得TF-法属南部领地TG-多哥TH-泰国TK-托克劳TL-东帝汶TM-土库曼斯坦TN-突尼斯TO-汤加TR-土耳其TT-特立尼达和多巴哥TV-图瓦卢TW-台湾TZ-坦桑尼亚UA-乌克兰UG-乌干达UM-美国本土外小岛屿UY-乌拉圭UZ-乌兹别克斯坦VA-梵蒂冈VC-圣文森特和格林纳丁斯VE-委内瑞拉VG-英属维尔京群岛VI-美属维尔京群岛VN-越南VU-瓦努阿图WF-瓦利斯和富图纳WS-萨摩亚YE-也门YT-马约特ZA-南非ZM-赞比亚ZW-津巴布韦
HaiPay.js 对接(Apple Pay & Google Pay)
HaiPay 提供了便捷的 Apple Pay 和 Google Pay 支付集成方案,通过简单配置即可在网页中快速集成支付功能。- 引入 HaiPay 脚本([https://cashier.haipay.top/js/applePayGooglePay_1.0.0.min.js])
- 页面结构要求
- 支付按钮容器:用于 Apple Pay/Google Pay 按钮的渲染。
- 快速集成示例
- 参数说明
- 1.初始化配置参数(HaiPay 构造函数参数)
| 参数名 | 必选 | 类型 | 说明 | |
|---|---|---|---|---|
| sandbox | 是 | Boolean | 环境类型,默认值 true,可选值 : - true:测试环境(用于联调测试) - false:生产环境(上线使用) | |
| clientToken | 是 | String | 客户端令牌clientToken | |
| buttonType | 否 | String | 按钮文本类型,默认值 buy, 可选值: - plain:“只显示支付徽标,无文字” - add-money:“添加资金” - book:“预定” - buy:“购买”(默认) - check-out:“结账” - contribute:“捐款” - order:“下单” - reload:“重新加载” - rent: “租赁” -subscribe: “订阅” -support: “支持” -tip: “付小费” -top-up: “充值” | |
| buttonTheme | 否 | String | 按钮主题样式,默认值 black,可选值: - black:黑色背景 - white:白色背景 | |
| buttonHeight | 否 | number | 按钮高度,默认值 50 |
- 2.常见错误类型及解决方案
| 错误信息 | 错误原因 | 解决方案 |
|---|---|---|
| Missing required parameters: env, orderNo | 缺少必需的初始化参数 | 检查 clientToken 等参数是否传入 |
| Unsupported region: CN | 生产环境下不支持中国地区 |
HaiPay.js 对接(creditCard)
HaiPay 提供了便捷的 creditCard 支付集成方案,通过简单配置即可在网页中快速集成支付功能。- 引入 HaiPay 脚本([https://cashier.haipay.top/js/creditCard_1.0.0.min.js])
- 页面结构要求
- 页面容器:用于 creditCard 页面的渲染。
- 快速集成示例
- 参数说明
- 1.初始化配置参数(HaiPay 构造函数参数)
| 参数名 | 必选 | 类型 | 说明 | |
|---|---|---|---|---|
| sandbox | 是 | Boolean | 环境类型,默认值 true,可选值 : - true:测试环境(用于联调测试) - false:生产环境(上线使用) | |
| clientToken | 是 | String | 客户端令牌clientToken | |
| cardTheme | 否 | String | 主题样式,默认值 white,可选值: - black:黑色背景 - white:白色背景 |
- 2.常见错误类型及解决方案
| 错误信息 | 错误原因 | 解决方案 |
|---|---|---|
| Missing required parameters: env, orderNo | 缺少必需的初始化参数 | 检查 clientToken 等参数是否传入 |
| Unsupported region: CN | 生产环境下不支持中国地区 |
限额
| 交易类型 | 限额(单位:USD) |
|---|---|
| 代收 | 0.99-1000 |
代收API
1.代收申请
简要描述:- 创建代收订单
/usd/collect/apply
说明:appId需使用美元对应的,用户支付成功后增加美元余额
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 是 | String | 商户订单号(必须保证唯一性,长度不超过48) |
| name | 是 | String | 用户姓名,推荐使用真实姓名,格式:包含firstName和lastName,以空格分割的,示例:Donald John Trump |
| phone | 是 | String | 真实手机号(格式参考 电话号码格式 ) |
| 是 | String | 真实电子邮件 | |
| amount | 是 | String | 交易金额(精确到小数点后两位;禁止添加标点符号,例如:”,”) |
| payType | 是 | String | 支付方式类型 |
| inBankCode | 是 | String | 支付方式编码 |
| clientIp | 否 | String | 用户端ip |
| callBackUrl | 是 | String | 用户支付成功后跳转地址 |
| callBackFailUrl | 是 | String | 用户支付失败后跳转地址 |
| notifyUrl | 否 | String | 回调地址 |
| subject | 是 | String | 支付备注 |
| body | 否 | String | 备注详情 |
| partnerUserId | 是 | String | 用户唯一标识(如用户ID userId),用于风控系统,必须真实有效,否则会影响交易。 格式要求:数字、大小写字母或常用符号-~!@#$%&*()_。 |
| sign | 是 | String | 签名 |
| 参数名 | 类型 | 说明 |
|---|---|---|
| orderId | String | 商户订单号(必须保证唯一性) |
| orderNo | String | 平台订单号 |
| payUrl | String | 支付链接 |
| bankCode | String | 支付方式编码 |
| clientToken | String | 在JavaScript Web SDK中使用的客户端令牌(见HaiPaySDK.js) |
| sign | String | 签名 |
2.代收申请 MIT模式
简要描述:- 创建MIT模式代收订单
/usd/mit/apply
说明:appId需使用美元对应的,用户支付成功后增加美元余额
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 是 | String | 商户订单号(必须保证唯一性,长度不超过48) |
| name | 否 | String | 用户姓名,推荐使用真实姓名,格式:包含firstName和lastName,以空格分割的,示例:Donald John Trump |
| phone | 否 | String | 真实手机号(格式参考 电话号码格式 ) |
| 否 | String | 真实电子邮件 | |
| amount | 是 | String | 交易金额(精确到小数点后两位;禁止添加标点符号,例如:”,”) |
| payType | 是 | String | 支付方式类型 |
| inBankCode | 是 | String | 支付方式编码 |
| clientIp | 否 | String | 用户端ip |
| callBackUrl | 是 | String | 用户支付成功后跳转地址 |
| callBackFailUrl | 是 | String | 用户支付失败后跳转地址 |
| notifyUrl | 否 | String | 回调地址 |
| subject | 是 | String | 支付备注 |
| body | 否 | String | 备注详情 |
| partnerUserId | 是 | String | 用户唯一标识(如用户ID userId),用于风控系统,必须真实有效,否则会影响交易。 格式要求:数字、大小写字母或常用符号-~!@#$%&*()_。 |
| tokenID | 否 | String | 支付令牌,首次交易不需要,后续主动扣款需要,通过回调获取 |
| token | 否 | String | Apple Pay / Google Pay Token,自行获取传递或使用HaiPay页面,如何获取? |
| loadingType | 否 | Integer | 0(默认) – 显示正常的支付结果页面; 1 – 显示加载中动画(loading 转圈),不展示订单信息。 |
| cancelUrl | 否 | String | 用户取消支付URL,如果传递,用户可在支付页面点击返回到此页面 |
| sign | 是 | String | 签名 |
| 参数名 | 类型 | 说明 |
|---|---|---|
| orderId | String | 商户订单号(必须保证唯一性) |
| orderNo | String | 平台订单号 |
| payUrl | String | 支付链接 |
| clientToken | String | 在JavaScript Web SDK中使用的客户端令牌(见HaiPaySDK.js) |
| sign | String | 签名 |
3.代收查询
简要描述:- 查询代收订单
/usd/collect/query
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 是 | String | 商户订单号 |
| orderNo | 否 | String | 平台订单号(响应快) |
| sign | 是 | String | 签名 |
| 参数名 | 类型 | 说明 |
|---|---|---|
| orderId | String | 商户订单号(必须保证唯一性) |
| orderNo | String | 平台订单号 |
| amount | String | 交易金额 |
| actualAmount | String | 收到金额 |
| fee | String | 手续费 |
| status | Integer | 状态(0未开始,1支付中,2成功(终态),3失败(终态), -1异常待确认) |
| payTime | String | 支付成功时间(当status=2时有值)(本地时间), 格式: yyyy-MM-dd HH:mm:ss |
| errorMsg | String | 支付失败原因(当status=3时有值) |
| sign | String | 签名 |
4.退款申请
简要描述:- 发起原信用卡交易订单的退款操作,同步返回的退款状态请注意状态值,建议以查询接口为主。
/usd/refund/apply
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 是 | String | 商户申请退款订单号(商户新的订单号,不能使用原代收的商户订单号) |
| orderNo | 是 | String | 平台订单号(原代收返回的平台单号) |
| sign | 是 | String | 签名 |
| 参数名 | 类型 | 说明 |
|---|---|---|
| appId | String | 业务ID |
| orderNo | String | 平台订单号 (原代收返回的平台单号) |
| orderId | String | 商户退款申请订单号 |
| refundNo | String | 本次退款平台单号 |
| status | String | 退款状态,1表示退款申请成功,0表示处理中,2表示失败,正常下发起就是返回处理中,后续需要调用查询接口查询状态 |
| errorMsg | String | 错误信息,不一定有值 |
| sign | String | 签名 |
5.退款查询
简要描述:- 发起退款的订单的结果查询。
/usd/refund/refundQuery
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 否 | String | 商户退款申请订单号 |
| refundNo | 否 | String | 平台退款单号(申请退款返回的平台单号,如果有值优先查询此字段) |
| sign | 是 | String | 签名 |
| 参数名 | 类型 | 说明 |
|---|---|---|
| appId | String | 商户订单号(必须保证唯一性) |
| orderNo | String | 平台订单号(原代收返回的平台单号) |
| orderId | String | 商户申请订单号 |
| refundNo | String | 平台退款单号 |
| status | String | 退款状态,1表示退款申请成功,0表示处理中,2表示失败,退款结果以此状态为准 |
| errorMsg | String | 错误信息,不一定有值 |
| sign | String | 签名 |
6.支付方式
| 币种 | 支付类型(payType) | 支付编码(inBankCode) | 限额 | 状态 | 说明 |
|---|---|---|---|---|---|
| USD | BANK_TRANSFER | CREDIT_CARD | 0.99-1000 | 可用 | VISA |
| USD | BANK_TRANSFER | CREDIT_CARD | 0.99-1000 | 可用 | MasterCard |
| USD | BANK_TRANSFER | CREDIT_CARD | 0.99-1000 | 可用 | JCB |
| USD | EWALLET | GOOGLE_PAY | 0.99-1000 | 可用 | Google Pay |
| USD | EWALLET | APPLE_PAY | 0.99-1000 | 可用 | Apple Pay |
7.测试卡号
模拟成功支付
使用以下测试卡号,输入任意 CVC(3位数字)和有效期(未来日期)来模拟支付成功:- 卡号 1:4242424242424242
模拟支付失败
使用以下测试卡号、无效数据来模拟支付失败:- 卡号 1:4000000000009995
- 无效月份:13
- 无效 CVV:99
8.MIT(Merchant Initiated Transaction)模式说明
MIT(Merchant Initiated Transaction,商户发起交易)指在用户完成一次性支付授权后,商户可在用户不在场的情况下主动发起的扣款。
该模式广泛应用于 订阅支付、分期付款、会员续费、延迟扣款 等业务场景。
基本流程
-
用户授权
- 用户在首次支付时输入支付信息,并完成必要的身份验证。
- 商户保存用户的支付凭证,用于后续的扣款请求。
-
商户发起扣款
- 商户根据约定的周期或条件,直接使用已保存的支付凭证发起扣款请求。
- 由于交易为 离线场景(off-session),即用户不参与交易,系统会依据用户授权和合规要求完成处理。
-
认证要求
- 在大多数情况下,交易会直接完成。
- 若发卡行或风控系统要求再次验证,交易可能进入待用户确认的状态,需要用户补充验证才能完成。
模式特点
- 提升体验:用户无需每次手动输入支付信息。
- 合规安全:符合国际支付法规和强客户认证(SCA)等要求。
- 应用广泛:适用于订阅收费、自动续费、分期扣款、延迟结算等场景。
MIT流程图
9.Apple Pay / Google Pay Token 获取方式说明
对接流程
- 无需申请Apple Pay/Google Pay开发者账号,由HaiPay完成
- 引入 JavaScript 脚本([https://js.stripe.com/v3/])
- 页面结构要求
- 支付按钮容器:用于 Apple Pay/Google Pay 按钮的渲染。
- 快速集成示例
完整代码参考(JavaScript)
完整代码参考(JavaScript)

