通过Java在Stripe中创建卡片令牌

时间:2018-06-11 11:07:00

标签: java token stripe-payments

我想在服务器端使用Stripe.com。当我尝试通过

创建卡片令牌时
curl https://api.stripe.com/v1/tokens \
   -u sk_test_qMabFX3j5ApELqUH8mEy6NDp: \
   -d card[number]=4242424242424242 \
   -d card[exp_month]=12 \
   -d card[exp_year]=2019 \
   -d card[cvc]=123

或通过

Stripe.apiKey = "sk_test_qMabFX3j5ApELqUH8mEy6NDp";

Map<String, Object> tokenParams = new HashMap<String, Object>();
Map<String, Object> cardParams = new HashMap<String, Object>();
cardParams.put("number", "4242424242424242");
cardParams.put("exp_month", 6);
cardParams.put("exp_year", 2019);
cardParams.put("cvc", "314");
tokenParams.put("card", cardParams);

Token.create(tokenParams);

我在仪表板中看到了这条消息: &#34;我们在最后 m 天看到了 nnn 请求,其中包含原始信用卡号码&#34;

我的问题是: 1)我可以安全地使用Java API来创建卡令牌吗?如果是,如何避免此类消息? 2)或者我必须使用Stripe元素和它们的一个脚本吗?

2 个答案:

答案 0 :(得分:0)

如果您在Java中使用服务器端创建卡令牌,则表示您的服务器收到了原始卡详细信息。即使您不将信息保存在数据库中,您仍然需要遵守更高级别的PCI合规性,这将是很多工作要遵守的。

相反,您应该使用ElementsCheckout对客户端进行标记。这将允许您在客户端安全地创建卡令牌,然后将该令牌发送到您的服务器。这也会让你属于SAQ-A,这是PCI合规性最简单的水平。您可以详细了解Stripe的文档here中的差异。

答案 1 :(得分:0)

问题1

我可以安全地使用Java API创建卡令牌吗?如果是,如何避免此类消息?

答案:

是,但是它需要最高级别的权限,而不是 SAQ A ,您需要 SAQ D 验证。

验证过程:https://stripe.com/docs/security#validating-pci-compliance  (选择标签“ API Direct ”)

摘要:

API端点文档供参考:

创建令牌:https://stripe.com/docs/api/tokens/create_card

创建费用:https://stripe.com/docs/api/charges/create


问题2

或者我必须为此使用Stripe元素及其脚本之一?

答案:

不,您不必这样做。仅当您想要一个具有较低权限级别和较少麻烦的更快解决方案时,才可以使用预先构建的Stripe元素脚本。

其他信息:

使用Stripe.js v2(不是JAVA,而是Javascript)自己收集卡信息并创建令牌,因此SAQ A-EP是必需的,与具有SAQ D的API相比,它需要较低的权限。请参阅:{{3 }}

不建议使用不带Element的Stripe.js v2:https://www.pcisecuritystandards.org/documents/PCI-DSS-v3_2_1-SAQ-A_EP.pdf

https://stripe.com/docs/stripe-js/v2

因此,我不知道这是否会删除仪表板中的安全警告,以后是否可以删除该功能。 因此,如果您需要亲自处理卡信息,最安全的方法是每年进行SAQ D验证并填写表格。(对于网站商店,这不是必需的,您应该使用Elements ,但对于终端,NFC扫描仪等自定义硬件集成,如果必须集成自己,这可能是最简单/唯一的方法。