MIT 模式概述
MIT(Merchant Initiated Transaction,商户发起交易) 指在用户完成代收支付授权后,商户可在用户不在场的情况下主动发起的扣款。 该模式广泛应用于 订阅支付、分期付款、会员续费、延迟扣款 等业务场景。基本流程
-
用户授权
- 用户在首次支付时输入支付信息,并完成必要的身份验证。
- 商户保存用户的支付凭证(
tokenID),用于后续的扣款请求。
-
商户发起扣款
- 商户根据约定的周期或条件,直接使用已保存的支付凭证发起扣款请求。
- 由于交易为 离线场景(off-session),即用户不参与交易,系统会依据用户授权和合规要求完成处理。
-
认证要求
- 在大多数情况下,交易会直接完成。
- 若发卡行或风控系统要求再次验证,交易可能进入待用户确认的状态,需要用户补充验证才能完成。
模式特点
- 提升体验:用户无需每次手动输入支付信息。
- 合规安全:符合国际支付法规和强客户认证(SCA)等要求。
- 应用广泛:适用于订阅收费、自动续费、分期扣款、延迟结算等场景。
MIT 流程图
限额
| 交易类型 | 限额(单位:USD) |
|---|---|
| 代收 | 0.99-1000 |
MIT 支付 API
代收申请
简要描述:- 创建MIT模式代收订单
/usd/mit/apply
说明:appId需使用美元对应的,用户支付成功后增加美元余额
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 是 | String | 商户订单号(必须保证唯一性,长度不超过48) |
| name | 否 | String | 用户姓名,推荐使用真实姓名,格式:包含firstName和lastName,以空格分割的,示例:John Doe |
| 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 | 支付令牌,首次交易不需要,后续主动扣款需要,通过回调获取 |
| loadingType | 否 | Integer | 0(默认) – 显示正常的支付结果页面; 1 – 显示加载中动画(loading 转圈),不展示订单信息。 |
| cancelUrl | 否 | String | 用户取消支付URL,如果传递,用户可在支付页面点击返回到此页面 |
| sign | 是 | String | 签名 |
| 参数名 | 类型 | 说明 |
|---|---|---|
| orderId | String | 商户订单号(必须保证唯一性) |
| orderNo | String | 平台订单号 |
| payUrl | String | 支付链接 |
| clientToken | String | 在前置组件中使用的客户端令牌 (见前置组件) |
| sign | String | 签名 |
代收查询
简要描述:- 查询代收订单
/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 | 签名 |
退款 API
退款申请
简要描述:- 发起原信用卡交易订单的退款操作,同步返回的退款状态请注意状态值,建议以查询接口为主。
/usd/refund/apply
参数:
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| appId | 是 | Long | 业务ID(后台获取,需要根据URL中的币种传递对应的业务ID) |
| orderId | 是 | String | 商户申请退款订单号(商户新的订单号,不能使用原代收的商户订单号) |
| orderNo | 是 | String | 平台订单号(原代收返回的平台单号) |
| refundAmount | 否 | String | 可选,不传则全额退款 |
| sign | 是 | String | 签名 |
| 参数名 | 类型 | 说明 |
|---|---|---|
| appId | String | 业务ID |
| orderNo | String | 平台订单号 (原代收返回的平台单号) |
| orderId | String | 商户退款申请订单号 |
| refundNo | String | 本次退款平台单号 |
| status | String | 退款状态,1表示退款申请成功,0表示处理中,2表示失败,正常下发起就是返回处理中,后续需要调用查询接口查询状态 |
| errorMsg | String | 错误信息,不一定有值 |
| sign | String | 签名 |
退款查询
简要描述:- 发起退款的订单的结果查询。
/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 | 错误信息,不一定有值 |
| refundAmount | String | 退款金额 |
| sign | String | 签名 |
支付类型与支付编码
| 币种 | 支付类型(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 |

