Stripe:我如何知道卡是不是是 3d 安全卡以及如何收费
Posted
技术标签:
【中文标题】Stripe:我如何知道卡是不是是 3d 安全卡以及如何收费【英文标题】:Stripe: How do i know whether card is 3d secure and how to charge itStripe:我如何知道卡是否是 3d 安全卡以及如何收费 【发布时间】:2017-10-19 07:20:06 【问题描述】:我是 Stripe Pay 的新手。我正在寻找一种方法来对添加到客户卡的卡(任何卡)进行收费。但我无法区分 3d 安全卡。以下是我正在尝试的代码:
创建卡片令牌:
Map<String, Object> customerParams = new HashMap<String, Object>();
Map<String, Object> tokenParams = new HashMap<String, Object>();
Map<String, Object> cardParams = new HashMap<String, Object>();
cardParams.put("number", "4000000000003063");
cardParams.put("exp_month", 5);
cardParams.put("exp_year", 2018);
cardParams.put("cvc", "314");
tokenParams.put("card", cardParams);
Token token=Token.create(tokenParams);
向客户添加令牌:
Customer customer=Customer.retrieve("cus_Token");
customerParams.put("source", token.getId());
Card card=(Card)customer.getSources().create(customerParams);
如果这张卡支持 3d 安全支付,现在我该如何进行收费。
我正在尝试关联卡并进行如下收费:
Map<String, Object> params = new HashMap<String, Object>();
params.put("amount", 1000);
params.put("currency", "usd");
params.put("description", "Testing payments");
params.put("source","src_token");
params.put("customer", "cus_Token");
Charge charge = Charge.create(params);
System.out.println(charge.getId());
提前谢谢..
【问题讨论】:
【参考方案1】:可以在此处找到使用 Stripe 创建 3D 安全支付的文档:https://stripe.com/docs/sources/three-d-secure。它包括 Java 示例。
请注意,这使用了新的sources API,因此您根本不会使用令牌。相反,您将创建(可重复使用的)card sources,然后使用这些卡源创建(一次性使用)3D Secure sources。
【讨论】:
【参考方案2】:您可以使用卡的source 的card.three_d_secure
属性检查 3D 安全验证支持。
card.three_d_secure
:required
。
[Stripe] An initial reusable source for a card with an optional 3D Secure verification。
它有card.three_d_secure
:optional
。
Stripe API 文档 → «3D Secure Card Payments with Sources» → «Step 2: Determine if the card supports or requires 3D Secure»:
3D Secure 的行为和支持可能因卡网络和类型而异。对于不受支持的卡,请改为执行regular card payment。
但是,一些发卡机构要求使用 3D Secure 来降低欺诈风险,拒绝所有不使用此流程的收费。因此,您可以最好地处理这些不同的情况,在继续 3D 安全过程之前检查卡源的
card.three_d_secure
属性值。required
:需要 3D 安全。必须完成该过程才能成功收费。optional
:3D 安全是可选的。该过程不是必需的,但可以执行以帮助减少欺诈的可能性。not_supported
:此卡不支持 3D Secure。请改用普通卡付款。
来自我的 Stripe integration with Magento 2 的 3D 安全支持检测代码(在 php 中): https://github.com/mage2pro/stripe/blob/2.4.6/Init/Action.php#L70-L151
【讨论】:
【参考方案3】:我发现了一种未记录的方法来确定卡是否为 three_d_secure 而不使用条带元素 javascript。
当您根据文档创建卡源时,将属性“type”设置为“card”,检查“three_d_secure”键的“typeData”哈希,该键返回与条带元素卡相同的信息。
这适用于 java 客户端版本 5.38.0。不知道其他版本。
【讨论】:
以上是关于Stripe:我如何知道卡是不是是 3d 安全卡以及如何收费的主要内容,如果未能解决你的问题,请参考以下文章
关闭选项卡以关注上一个选项卡而不是第一个选项卡时如何更改 dojo 内容选项卡焦点?