卡片支付是在线支付的基础,全球接受并受到客户的信任。Dodo Payments 支持所有主要卡片网络,内置防欺诈保护和 PCI 合规性。
支持的卡片网络
全球网络
| 网络 | 覆盖 |
|---|
| Visa | 全球领先,全球 40 亿张卡片 |
| Mastercard | 全球覆盖,安全性强 |
| American Express | 高端持卡人,消费更高 |
| Discover | 以美国为主,正在全球扩展 |
| JCB | 日本领先,正在亚洲扩张 |
| UnionPay | 在中国主导,超过 80 亿张卡片 |
| Diners Club | 高端国际旅行者 |
区域网络
| 网络 | 区域 |
|---|
| Interac | 加拿大的借记网络 |
| Cartes Bancaires | 法国的国家网络 |
| Korean Local Cards | 韩国国内网络 |
| Rupay | 印度的国家网络 |
请在allowed_payment_method_types中使用这些值:
| 类型 | 描述 |
|---|
credit | 所有信用卡 |
debit | 所有借记卡 |
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_123', quantity: 1 }],
allowed_payment_method_types: ['credit', 'debit'],
return_url: 'https://example.com/success'
});
除非有特别理由排除其中一项,否则应同时包括credit和debit。许多客户更偏好借记卡,而且通常费用更低。
3D Secure 身份验证
3D Secure (3DS) 增加了一层身份验证,可以通过核实持卡人身份来减少欺诈和退款。
何时触发 3DS
当以下情况发生时,3DS 会自动触发:
- 卡片网络要求
- 区域法规要求(例如,欧洲的 PSD2)
- 交易被标记为高风险
强制 3DS
您可以要求所有交易都启用 3DS:
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_123', quantity: 1 }],
force_3ds: true,
return_url: 'https://example.com/success'
});
为所有交易启用3DS可降低欺诈风险,但可能稍微降低转化率,因为部分客户在认证过程中放弃。
处理认证失败
当支付需要 3DS 认证时,支付会经过中间状态,继而成功或失败:
| 状态 | 含义 | 应对措施 |
|---|
requires_customer_action | 客户必须完成 3DS 验证 | 让客户在结账时完成认证 |
requires_payment_method | 客户从未提供付款方式(未输入详情或放弃提示)— 通常是流失而非拒绝 | 重新吸引客户完成结账;参见 放弃购物车恢复 |
如果认证未完成,支付会因以下拒绝代码之一而失败:
AUTHENTICATION_FAILURE — 客户无法认证。
AUTHENTICATION_REQUIRED — 需要认证但未执行。
AUTHENTICATION_TIMEOUT — 客户未及时响应。
请参阅 交易失败 参考,以获取每种情况的建议操作。
结账时与续订时
- 结账时(客户在场): 客户在场,因此 3DS 验证在结账时显示。如果失败,请他们重试或使用另一张卡。
- 续订时(客户不在场): 客户不在场,因此无法实时显示 3DS 验证。如果续订需要认证,订阅状态转为
on_hold。通过提示客户返回并更新付款方式来恢复 — 请参阅 处理支付失败 和 订阅催收。
保存的付款方式
客户可以保存他们的卡,以便未来更快地结账。
原始卡号从未存储。
Dodo 处理所有合规事宜。
卡片绑定到特定客户。
启用已保存的卡
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_123', quantity: 1 }],
show_saved_payment_methods: true,
customer: { customer_id: 'cus_existing_123' },
return_url: 'https://example.com/success'
});
一键购买
// Get customer's saved payment methods
const methods = await client.customers.retrievePaymentMethods('cus_123');
// Use saved card for instant checkout
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_123', quantity: 1 }],
customer: { customer_id: 'cus_123' },
payment_method_id: methods.items[0].payment_method_id,
confirm: true,
return_url: 'https://example.com/success'
});
| 地区 | 品牌 | 卡号 | 到期 | CVV |
|---|
| 美国 | Visa | 4242424242424242 | 06/32 | 123 |
| 美国 | Mastercard | 5555555555554444 | 06/32 | 123 |
| 印度 | Visa | 4576238912771450 | 06/32 | 123 |
| 印度 | Mastercard | 5409162669381034 | 06/32 | 123 |
| 地区 | 品牌 | 卡号 | 场景 |
|---|
| 美国 | Visa | 4000000000000002 | 通用拒绝 |
| 美国 | Mastercard | 4000000000009995 | 资金不足 |
| 印度 | Visa | 4706131211212123 | 通用拒绝 |
| 印度 | Mastercard | 5105105105105100 | 通用拒绝 |
测试卡仅在测试模式下工作。切勿将其用于生产交易。
安全与合规
| 功能 | 描述 |
|---|
| PCI DSS 一级 | 最高级别认证 |
| 令牌化 | 卡号立即令牌化 |
| 欺诈评分 | 实时风险评估 |
| AVS | 地址验证服务 |
| CVV 验证 | 安全码验证 |
| 3D Secure | 持卡人认证 |
最佳做法
不要限制卡类型,除非必要。客户期望他们的首选卡可以使用。
在您的结账页面显示 Visa、Mastercard、Amex 标志以建立信任。
显示清晰的错误信息。不要向客户显示原始错误代码。
保存的付款方式可显著提升重复购买的转化。
故障排除
原因: 资金不足、卡过期、CVV 错误、银行欺诈保护。
解决方案: 请客户核对信息或尝试其他卡。在 交易失败 参考中查找具体的拒绝 Error Code 及其建议操作,并参阅 处理支付失败 以进行程序化处理。
原因: 客户放弃、银行系统不可用、超时。
解决方案: 重试或请客户联系他们的银行。参见 处理认证失败 中涉及的支付状态和拒绝代码。
原因: 不支持的地区卡、预付限制。
解决方案: 客户应尝试使用其他主要网络的卡。
相关页面
所有支持的付款方式。
使用已保存卡进行一键购买。
完整测试指南。
使用卡片的定期帐单。