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.
- 针对信用卡交易,消费者有权在交易发生后180天内发起争议申请。当争议被提起时,每笔交易将产生20美元的争议处理费。
- 在收到争议通知后,您有两种应对方式可供选择
- 其一:您可以选择接受争议,即向发卡银行提交回复,确认您不对退款金额提出异议。
- 其二:您可以选择对争议进行抗辩,通过完成一个引导式的提交流程,根据提示提供相关证据和支持性文件来阐述您的立场。
- 若您选择对争议进行抗辩,将额外收取20美元的抗辩费。如果发卡银行不接受您提交的抗辩材料并判定消费者胜诉,抗辩费将被扣除,同时消费者的付款将被退还。
- 关于费用退还政策,如果您成功赢得争议,Haipay将退还抗辩费。然而,除非您的Haipay合同中另有明确规定,否则最初收取的争议处理费在任何情况下均不予退还。
- PCI 合规性:直接违反 PCI DSS 要求
- 安全风险:WebView 和 iframe 可能无法提供足够的安全隔离
- 中间人攻击:恶意应用可能拦截或篡改支付数据
- 钓鱼风险:无法确保用户是在可信的环境中输入敏感信息
设备环境要求
如果您在支付页面中看不到您想要的钱包,则您的设备或浏览器可能不符合以下 Apple Pay 或 Google Pay 条件。
- 钱包里必须至少有一张卡。
- 您必须使用兼容的 Apple Pay 设备 和 Google Pay 设备。
- 您必须使用 必须使用HTTPS和支持的浏览器 来测试您正在测试的钱包。
- 允许适用的浏览器访问您的钱包。
- Chrome:设置 > 自动填充和密码 > 付款方式 > 允许网站检查您是否已保存付款方式
- Safari:设置 > 高级 > 允许网站检查 Apple Pay 和 Apple 卡
- 不要使用 Chrome 隐身窗口或 Safari 私人窗口。
- 确认您在受支持的 Apple Pay 地区 和 Google Pay 地区 进行操作。
- 对于 Apple Pay,请确认您的设备支持生物识别身份验证。
桌面浏览器
- Chrome 38+
- Safari 10.1+
- Firefox 29+
- Edge 15+
- Opera 25+
移动浏览器
- iOS Safari 9+ 以及其他使用系统提供的 WebKit 引擎的浏览器和 Web 视图
- Android Chrome 38+
- 三星浏览器 7.1+
其他说明对于未明确支持的浏览器,我们限制支持如下:
- 要求浏览器支持 TLS 1.2
- 需要足够现代的浏览器来支持 JavaScript 中的 Promises
- 我们会响应错误报告,但不会主动测试其他浏览器
地区限制
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-津巴布韦
集成模式
信用卡支付提供两种接入模式,核心区别在于支付页面由谁承载:
| 对比项 | PayUrl 跳转模式 | JS CDN 嵌入模式 |
|---|
| 支付页面 | 跳转到 HaiPay 托管的支付页面 | 在商户自己的页面中嵌入支付组件 |
| 前端工作量 | 几乎为零,只需处理跳转 | 需要引入 JS 脚本并监听事件 |
| UI 控制力 | 低,页面样式由 HaiPay 控制 | 高,可自定义主题、布局和交互 |
| 关键返回字段 | 使用响应中的 payUrl | 使用响应中的 clientToken |
| 适用场景 | 快速接入、对支付页面无定制需求 | 自建收银台、需要沉浸式支付体验 |
最简单的接入方式。商户服务端调用代收申请接口后,使用返回的 payUrl 将用户跳转到 HaiPay 托管的支付页面,用户在该页面完成信用卡信息填写和支付授权。接入流程服务端调用代收申请接口
商户服务端向 HaiPay 发起 代收申请,在请求中传入交易金额、支付方式、回调地址等必要参数。 获取 payUrl 并跳转
接口返回中包含 payUrl 字段,商户将用户浏览器重定向到该地址。
用户完成支付
用户在 HaiPay 托管页面完成信用卡信息填写和支付授权。支付完成后,HaiPay 会将用户重定向回商户的 callBackUrl,同时向 notifyUrl 发送异步通知。
示例代码(服务端获取 payUrl 后的前端跳转)// 假设你的服务端已调用代收申请接口,并将 payUrl 返回给前端
const payUrl = response.data.payUrl;
// 在当前窗口跳转
window.location.href = payUrl;
// 或者在新窗口打开
// window.open(payUrl, '_blank');
适用建议
- 希望最快速度完成支付接入,前端改动最少。
- 对支付页面的 UI 没有强定制需求。
- 移动端 H5 场景下,跳转体验通常也能满足需求。
通过引入 HaiPay JS 脚本,将支付组件直接嵌入商户页面。商户服务端调用代收申请接口获取 clientToken,前端使用该令牌初始化组件,用户无需跳转即可在当前页面完成支付。JS CDN 提供以下组件形态,请根据收银台设计需求选择:在一个容器内同时展示 Google Pay、Apple Pay 和 Credit Card,支持通过 mode 参数切换普通支付与订阅支付,适合需要统一管理多种支付场景的商户。引入脚本https://cashier.haipay.top/js/composite-component_1.0.0.min.js配置参数| 参数 | 必填 | 说明 |
|---|
sandbox | 是 | true 为测试环境,false 为生产环境 |
clientToken | 是 | 代收申请接口返回的客户端令牌 |
mode | 是 | 支付场景:payment(普通支付)或 subscription(订阅支付) |
showPayButton | 否 | 是否显示信用卡提交按钮,默认 false(不显示) |
themeMode | 否 | 主题模式,可选 light / dark,默认 light |
paymentMethodConfig | 否 | 支付方式组合,默认 ["GOOGLE_PAY","APPLE_PAY","CREDIT_CARD"] |
applePayButtonType | 否 | Apple Pay 按钮文案,可选 buy、subscribe 等 |
googlePayButtonType | 否 | Google Pay 按钮文案,可选 buy、subscribe 等 |
事件回调
ready — 组件渲染完成,可进行交互
error — 初始化失败或支付过程出错
confirm — 表单提交结果(成功/失败)
paymentStatus — 支付结果通知(若未监听,组件将自动处理支付结果展示)
适用建议
- 新建收银台推荐优先选用此模式,页面结构更清晰、开发成本更低。
- 如仅开放部分支付方式,只需传入所需的组合即可。
<script src="https://cashier.haipay.top/js/composite-component_1.0.0.min.js"></script>
<div>
<div id="paymentId"></div>
</div>
const elements = haiPay.create({
mode: 'payment',
sandbox: true,
clientToken: 'your-client-token',
themeMode: 'light',
paymentMethodConfig: ['GOOGLE_PAY', 'APPLE_PAY', 'CREDIT_CARD']
});
elements.mount('#paymentId');
elements.on('ready', (data) => {
console.log('rendered successfully:', data);
});
elements.on('error', (data) => {
console.error('Payment error:', data);
});
elements.submitCardPayment();
elements.on('confirm', (data) => {
console.log('confirm:', data);
});
elements.on('paymentStatus', (data) => {
console.log('payment status:', data);
});
适合已具备钱包支付入口、希望快速拉起 Apple Pay / Google Pay 授权的场景。引入脚本https://cashier.haipay.top/js/applePayGooglePay_1.0.0.min.js配置参数| 参数 | 必填 | 说明 |
|---|
sandbox | 是 | true 为测试环境,false 为生产环境 |
clientToken | 是 | 代收申请接口返回的客户端令牌 |
buttonType | 否 | 按钮文案类型,可选 plain、buy(默认)、check-out、subscribe 等 |
buttonTheme | 否 | 按钮主题色,可选 black(默认)、white |
buttonHeight | 否 | 按钮高度(px),默认 50 |
事件回调
ready — 按钮渲染完成,可进行交互
error — 初始化失败或支付过程出错
paymentStatus — 支付结果通知(若未监听,组件将自动处理支付结果展示)
<script src="https://cashier.haipay.top/js/applePayGooglePay_1.0.0.min.js"></script>
<div>
<div id="applePay-googlePay"></div>
</div>
const elements = applePayGooglePay.create('applePayGooglePay', {
sandbox: true,
clientToken: 'your-client-token',
buttonType: 'buy',
buttonTheme: 'black',
buttonHeight: 50
});
elements.mount('#applePay-googlePay');
elements.on('ready', (data) => {
console.log('Button rendered successfully:', data);
});
elements.on('error', (data) => {
console.error('Payment error:', data);
});
elements.on('paymentStatus', (data) => {
console.log('payment status:', data);
});
适合需要直接展示信用卡支付表单、并由商户自行控制提交时机的场景。引入脚本https://cashier.haipay.top/js/creditCard_1.0.0.min.js配置参数| 参数 | 必填 | 说明 |
|---|
sandbox | 是 | true 为测试环境,false 为生产环境 |
clientToken | 是 | 代收申请接口返回的客户端令牌 |
cardTheme | 否 | 表单主题色,可选 black、white(默认) |
事件回调
ready — 信用卡表单渲染完成,可进行交互
confirm — 表单提交结果(成功/失败)
paymentStatus — 支付结果通知(若未监听,组件将自动处理支付结果展示)
<script src="https://cashier.haipay.top/js/creditCard_1.0.0.min.js"></script>
<div>
<div id="creditCardId"></div>
</div>
const elements = creditCard.create('card', {
sandbox: true,
clientToken: 'your-client-token',
cardTheme: 'white'
});
elements.mount('#creditCardId');
elements.on('ready', (data) => {
console.log('Card rendered successfully:', data);
});
elements.on('error', (data) => {
console.error('Payment error:', data);
});
elements.submit();
elements.on('confirm', (data) => {
console.log('confirm:', data);
});
elements.on('paymentStatus', (data) => {
console.log('payment status:', data);
});
常见错误| 错误信息 | 错误原因 | 解决方案 |
|---|
| Missing required parameters: env, orderNo | 缺少必需的初始化参数 | 检查 clientToken 等参数是否正确传入 |
| Unsupported region: CN | 生产环境下不支持中国地区 | 确认商户配置与目标市场 |
| 交易类型 | 限额(单位:USD) |
|---|
| 代收 | 0.99-1000 |
代收API
1.代收申请
简要描述:
URL:
美元: /usd/collect/apply
说明:appId需使用美元对应的,用户支付成功后增加美元余额
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 是 | String | 商户订单号(必须保证唯一性,长度不超过48) |
| name | 否 | String | 用户姓名,推荐使用真实姓名,格式:包含firstName和lastName,以空格分割的,示例:Donald John Trump |
| phone | 是 | String | 真实手机号(格式参考 电话号码格式 ) |
| email | 否 | String | 真实电子邮件 |
| amount | 是 | String | 交易金额(精确到小数点后两位;禁止添加标点符号,例如:”,”) |
| payType | 是 | String | 支付方式类型 |
| inBankCode | 是 | String | 支付方式编码 |
| clientIp | 否 | String | 用户端ip |
| callBackUrl | 是 | String | 用户支付成功后跳转地址 |
| callBackFailUrl | 是 | String | 用户支付失败后跳转地址 |
| notifyUrl | 否 | String | 回调地址 |
| subject | 是 | String | 支付备注 |
| body | 否 | String | 备注详情 |
| partnerUserId | 是 | String | 用户唯一标识(如用户ID userId),用于风控系统,必须真实有效,否则会影响交易。 格式要求:数字、大小写字母或常用符号-~!@#$%&*()_。 |
| paymentMethods | 是 | String | 支持的支付方式列表,英文逗号分隔,如 CREDIT_CARD,GOOGLE_PAY,APPLE_PAY |
| sign | 是 | String | 签名 |
请求示例
{
"appId": 1054,
"orderId": "M233323000059",
"amount": "300",
"phone": "09230219312",
"email": "23423@qq.com",
"name": "test",
"inBankCode": "USA",
"payType": "BANK_TRANSFER",
"partnerUserId": "149597870",
"sign": "af0gAHkUOyYHu9owQp8NJ4mPEeUW4vuJcjdxqLIzrVw8AvpLSjD1DXupReSG/CyuSkFRyiIvCp5u703AuGGmfgD2gKDH3Ywau41bAbG2jnHJ8mtjiSJ5iWUzanyd4Kr7d1+rETbzUl7/BkW3t0X8UUFdqpxwG8DPUjAwUKfplWDHV7koG51Ozexd80DCsmW6eWdouAZ1uNXGLYmV3ftE3BmfNRtuv1C5bfTJWrTEIOxbF6g2uYOFZTlIgrQgd7/2PsAYwQQXNz8Q8CYl4OxqCv4pXJxaLWPbR5tqZu9og5kn32C9aHW/NlU1y39vzz+4ef81yPAqUV9oHlSMSPrMmw=="
}
响应示例
{
"status": "1",
"error": "00000000",
"msg": "",
"data": {
"orderId": "M233323000059",
"orderNo": "6023071013539074",
"payUrl": "",
"clientToken": "",
"sign": "YEoA8Y2JzQFGVzwJSqmemm1Kfv/bfyIfCqv2dp7RNzT5B72AQvdD+nt2nR4sL1HWscvmNHyVt5ovAi7MMhy3ziih/sMph+wPx4YjH3W1h5DyBvSlWvaKfKrK5ViomZ0pPYWydwRHnnRnicxToHK9S6qtSy7Q73O0hdz4hJ9p41Th3ycBl2Q9SeqSZYSY1ohcPDhdyRf2y0prb8rHgpBKzxZ5BKX/1bsE9OmsSEHAEYT8OGgko6aNe8XPAhr4G48cpWTftvnGQuzh0O65nuZRI/PF+Axt2zJCVbFHDDSREI9NlAT82ebDqhlVdxQzKE67D1nxgjb3dPmDUYHOBpmwxQ=="
}
}
返回data参数说明
| 参数名 | 类型 | 说明 |
|---|
| orderId | String | 商户订单号(必须保证唯一性) |
| orderNo | String | 平台订单号 |
| payUrl | String | 支付链接 |
| bankCode | String | 支付方式编码 |
| clientToken | String | 在JavaScript Web SDK中使用的客户端令牌(见HaiPaySDK.js) |
| sign | String | 签名 |
简要描述:
URL:
美元: /usd/mit/apply
说明:appId需使用美元对应的,用户支付成功后增加美元余额
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 是 | String | 商户订单号(必须保证唯一性,长度不超过48) |
| name | 否 | String | 用户姓名,推荐使用真实姓名,格式:包含firstName和lastName,以空格分割的,示例:Donald John Trump |
| phone | 否 | String | 真实手机号(格式参考 电话号码格式 ) |
| email | 否 | 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 转圈),不展示订单信息。 |
| paymentMethods | 否 | String | 支持的支付方式列表,英文逗号分隔,如 CREDIT_CARD,GOOGLE_PAY,APPLE_PAY(与payType,inBankCode 不可同时传递) |
| cancelUrl | 否 | String | 用户取消支付URL,如果传递,用户可在支付页面点击返回到此页面 |
| sign | 是 | String | 签名 |
请求示例
{
"appId": 1054,
"orderId": "M233323000059",
"amount": "300",
"phone": "09230219312",
"email": "23423@qq.com",
"name": "test",
"inBankCode": "USA",
"payType": "BANK_TRANSFER",
"partnerUserId": "149597870",
"sign": "af0gAHkUOyYHu9owQp8NJ4mPEeUW4vuJcjdxqLIzrVw8AvpLSjD1DXupReSG/CyuSkFRyiIvCp5u703AuGGmfgD2gKDH3Ywau41bAbG2jnHJ8mtjiSJ5iWUzanyd4Kr7d1+rETbzUl7/BkW3t0X8UUFdqpxwG8DPUjAwUKfplWDHV7koG51Ozexd80DCsmW6eWdouAZ1uNXGLYmV3ftE3BmfNRtuv1C5bfTJWrTEIOxbF6g2uYOFZTlIgrQgd7/2PsAYwQQXNz8Q8CYl4OxqCv4pXJxaLWPbR5tqZu9og5kn32C9aHW/NlU1y39vzz+4ef81yPAqUV9oHlSMSPrMmw=="
}
响应示例
{
"status": "1",
"error": "00000000",
"msg": "",
"data": {
"orderId": "M233323000059",
"orderNo": "6023071013539074",
"payUrl": "",
"clientToken": "",
"sign": "YEoA8Y2JzQFGVzwJSqmemm1Kfv/bfyIfCqv2dp7RNzT5B72AQvdD+nt2nR4sL1HWscvmNHyVt5ovAi7MMhy3ziih/sMph+wPx4YjH3W1h5DyBvSlWvaKfKrK5ViomZ0pPYWydwRHnnRnicxToHK9S6qtSy7Q73O0hdz4hJ9p41Th3ycBl2Q9SeqSZYSY1ohcPDhdyRf2y0prb8rHgpBKzxZ5BKX/1bsE9OmsSEHAEYT8OGgko6aNe8XPAhr4G48cpWTftvnGQuzh0O65nuZRI/PF+Axt2zJCVbFHDDSREI9NlAT82ebDqhlVdxQzKE67D1nxgjb3dPmDUYHOBpmwxQ=="
}
}
返回data参数说明
| 参数名 | 类型 | 说明 |
|---|
| orderId | String | 商户订单号(必须保证唯一性) |
| orderNo | String | 平台订单号 |
| payUrl | String | 支付链接 |
| clientToken | String | 在JavaScript Web SDK中使用的客户端令牌(见HaiPaySDK.js) |
| sign | String | 签名 |
3.代收查询
简要描述:
URL:
美元: /usd/collect/query
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 是 | String | 商户订单号 |
| orderNo | 否 | String | 平台订单号(响应快) |
| sign | 是 | String | 签名 |
请求示例
{
"appId": 1054,
"orderId": "M22222000028",
"sign": "EmyJGm3ELzG4FsOd0Krs9ncbSjo4oTGuXWML+7djYla3+VAwd9wS17z38p/7U2ZAjroO04XrE7YXcB1o76Dtyipj3h3bJzs7FYma1QNkMUdt9hh7m8U6hMsMQX7vIWHtXNwz4pbTSC75+kQWXaCew7KoE6LXECdJU8AISgNgeki2TK9R0pCfshr0Z2SZBPeuT6OvIH5LdmqgdZhuqnffGU2qnXk4KMkO848e6/WALLBR+LE1wyKHfPnYVcuKSMVYxkvKyyIL5JIPEgW0o5bh4RCbaUn3NZtyYwrU1uQ3ZDFRThm9j6XAQP+LBlmq3nOePqBtp/VDVarRaV+7FbQg3A=="
}
响应示例
{
"status": "1",
"error": "00000000",
"msg": "",
"data": {
"orderId": "M22222000028",
"orderNo": "6023042811314347",
"amount": "50.00",
"actualAmount": "0.00",
"fee": "0.00",
"status": 1,
"sign": "fP433ygWVDLVGxYkVnIJj7riGq0U3vyVX+MbBAImxfGLZkZcEAHVEoVYuULZSmXAAXKRSyd67WlDNm+24pougM54ofAoH4HMtCL2tfCoBReFyz3z02AGKkrKE2xWhSpWoqfQoBvzwuN5iGMMu0s9Q1YvqiwJ8WDVIENnmiIyD8qDJN7caHTW2US14/faG+69AvnuIgJ/nu7/jogOlgEYdZdVYU7gcRDE+d47KjlFGswQkJ/h/uzV7cWtUqrtOO7ZnZ3/z33Xx8awokX36QoYcPSWAU0h+Ij9O9402HNhm1eTbYcLU0uI/z8xCAtyAI/tTyiFijpiNlxUKQj+zKsILw=="
}
}
返回data参数说明
| 参数名 | 类型 | 说明 |
|---|
| 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.退款申请
简要描述:
- 发起原信用卡交易订单的退款操作,同步返回的退款状态请注意状态值,建议以查询接口为主。
URL:
美元: /usd/refund/apply
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 是 | String | 商户申请退款订单号(商户新的订单号,不能使用原代收的商户订单号) |
| orderNo | 是 | String | 平台订单号(原代收返回的平台单号) |
| refundAmount | 否 | String | 可选,不传则全额退款 |
| sign | 是 | String | 签名 |
返回data参数说明
| 参数名 | 类型 | 说明 |
|---|
| appId | String | 业务ID |
| orderNo | String | 平台订单号 (原代收返回的平台单号) |
| orderId | String | 商户退款申请订单号 |
| refundNo | String | 本次退款平台单号 |
| status | String | 退款状态,1表示退款申请成功,0表示处理中,2表示失败,正常下发起就是返回处理中,后续需要调用查询接口查询状态 |
| errorMsg | String | 错误信息,不一定有值 |
| sign | String | 签名 |
5.退款查询
简要描述:
URL:
美元: /usd/refund/refundQuery
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 否 | String | 商户退款申请订单号 |
| refundNo | 否 | String | 平台退款单号(申请退款返回的平台单号,如果有值优先查询此字段) |
| sign | 是 | String | 签名 |
返回data参数说明
| 参数名 | 类型 | 说明 |
|---|
| appId | String | 商户订单号(必须保证唯一性) |
| orderNo | String | 平台订单号(原代收返回的平台单号) |
| orderId | String | 商户申请订单号 |
| refundNo | String | 平台退款单号 |
| status | String | 退款状态,1表示退款申请成功,0表示处理中,2表示失败,退款结果以此状态为准 |
| errorMsg | String | 错误信息,不一定有值 |
| refundAmount | 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:4000000000009995
- 无效月份:13
- 无效 CVV:99
8.MIT(Merchant Initiated Transaction)模式说明
MIT(Merchant Initiated Transaction,商户发起交易)
指在用户完成一次性支付授权后,商户可在用户不在场的情况下主动发起的扣款。
该模式广泛应用于 订阅支付、分期付款、会员续费、延迟扣款 等业务场景。
基本流程
-
用户授权
- 用户在首次支付时输入支付信息,并完成必要的身份验证。
- 商户保存用户的支付凭证,用于后续的扣款请求。
-
商户发起扣款
- 商户根据约定的周期或条件,直接使用已保存的支付凭证发起扣款请求。
- 由于交易为 离线场景(off-session),即用户不参与交易,系统会依据用户授权和合规要求完成处理。
-
认证要求
- 在大多数情况下,交易会直接完成。
- 若发卡行或风控系统要求再次验证,交易可能进入待用户确认的状态,需要用户补充验证才能完成。
模式特点
- 提升体验:用户无需每次手动输入支付信息。
- 合规安全:符合国际支付法规和强客户认证(SCA)等要求。
- 应用广泛:适用于订阅收费、自动续费、分期扣款、延迟结算等场景。
MIT流程图
相关主题