我正在为支付实现新的 Balanced API,并开始考虑将其放入我们的移动( native )应用程序中。
我看到他们有a javascript library用于将信用卡信息直接发送到他们的服务器。我显然不希望付款信息通过我们的服务器 (PCI),并且我不想在应用程序中包含我的 API key / secret 。
那么在我们的移动应用程序上处理信用卡信息的最佳方式是什么?
最佳答案
更新
- 对于 IOS,请使用 balanced-ios 库
- 对于 Android,请使用 balanced-android 库
由于您正在为智能手机编写代码,因此您应该能够直接向 Balanced 进行 RESTful API 调用,以对卡进行 token 化,而无需使用 Balanced.js。
卡和银行帐户端点不需要身份验证来标记这些资源,因此您无需担心在应用中包含任何 API key 。该文档解释了如何 tokenize the card 但让我更详细地解释一下:
TL;DR
直接从您的移动应用向与您的 Marketplace 关联的 card_uri
或 bank_account_uri
发送 POST,它将返回包含标记化资源的 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
,因为这会将设备带入PCI 范围,如果他们的手机受到损害,可能会很糟糕。
关于mobile - 在移动应用程序上使用 Balanced API 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10657017/