支払い用に新しい Balanced API を実装しており、モバイル (ネイティブ) アプリに配置することを考え始めています。
クレジット カード情報をサーバーに直接送信するための JavaScript ライブラリがあるようです。明らかに、支払い情報がサーバー (PCI) を通過することは望ましくありません。また、API キー/シークレットをアプリに含めたくありません。
では、モバイル アプリでクレジット カード情報を処理する最善の方法は何でしょうか?
支払い用に新しい Balanced API を実装しており、モバイル (ネイティブ) アプリに配置することを考え始めています。
クレジット カード情報をサーバーに直接送信するための JavaScript ライブラリがあるようです。明らかに、支払い情報がサーバー (PCI) を通過することは望ましくありません。また、API キー/シークレットをアプリに含めたくありません。
では、モバイル アプリでクレジット カード情報を処理する最善の方法は何でしょうか?
アップデート
スマートフォン用に書いているので、balanced.js を使用せずにカードをトークン化するために直接 Balanced に RESTful API 呼び出しを行うことができるはずです。
カードと銀行口座のエンドポイントは、これらのリソースをトークン化するための認証を必要としないため、アプリに API キーを含めることを心配する必要はありません。ドキュメントには、カードをトークン化する方法が説明されていますが、さらに詳しく説明しましょう。
TL;DR
card_uri
モバイル アプリからマーケットプレイスに関連付けられているまたはに直接 POST を実行する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 を既存のアカウントに関連付けるには、PUT
というパラメーターとして渡されたカードの URI を使用して、アカウントの URI にリクエストを行うことができますcard_uri
。新しいアカウントを作成する場合は、ユーザーのメール アドレスを使用しPOST
てマーケットプレイスにアクセスします。accounts_uri
注意が必要なのは、ユーザーのログcard_number
やsecurity_code
デバイスのデバッグ ログにログを記録しないことです。これにより、デバイスが PCI スコープに含まれ、電話が侵害された場合に問題が発生する可能性があります。