我正在为付款实施新的Balanced API,并开始考虑将其放在我们的移动(本机)应用上。
我看到他们有a javascript library将信用卡信息直接发送到他们的服务器。我显然不希望付款信息通过我们的服务器(PCI),我不想在应用程序中包含我的API密钥/秘密。
那么在我们的移动应用上处理信用卡信息的最佳方式是什么?
答案 0 :(得分:2)
<强>更新强>
由于您正在编写智能手机,因此您应该能够直接向Balanced发出RESTful API调用,以便在不使用balanced.js的情况下对卡进行标记。
卡和银行帐户端点不需要身份验证来标记这些资源,因此您无需担心在应用中包含任何API密钥。该文档解释了如何tokenize the card,但让我更详细地解释一下:
<强> TL; DR 强>
直接从您的移动应用程序发布POST到与您的市场相关联的card_uri
或bank_account_uri
,它将返回包含令牌化资源的URI的响应。
示例强>
如果您的Marketplace的URI为/v1/marketplaces/M123-456-7890
,那么流程将如下所示:
在客户端
您传递的有效负载应如下所示:
{
"card_number": "5105105105105100",
"expiration_month": "01",
"expiration_year": "2020",
"security_code": "123"
}
然后应该像这样提交
POST /v1/marketplaces/M123-456-7890/cards
响应将类似于:
{
"brand": "visa",
"name": null,
"expiration_year": 2020,
"uri": "/v1/marketplaces/TEST-MP991-204-5261/cards/CCfc1596189e0911e18ba9024f5cb9b783",
"expiration_month": 12,
"state": "new",
"last_four": 5100,
"address": null
}
客户端只需要将响应的uri
返回到您的服务器,您可以在服务器上将该卡与该用户的帐户相关联。
在服务器上
要将卡的URI与现有帐户相关联,您可以对帐户的URI发出PUT
请求,并将卡的URI作为名为card_uri
的参数传递。如果您要使用该用户的电子邮件地址POST
创建一个新帐户accounts_uri
到市场card_number
。
您要小心的是,您不会在设备的任何调试日志中记录用户的security_code
或{{1}},因为这会将设备带入PCI示波器并且可能不好如果他们的手机被盗了。