#PayPal Vault API
https://developer.paypal.com/docs/api/#vault
Vault という耳慣れない言葉を使ったAPIですが、クレジットカード決済を処理する上で非常に重要な言葉なので覚えておきましょう。
辞書では、アーチ、天井 貯蔵庫などを指す言葉です。
http://ejje.weblio.jp/content/vault
クレジットカードを扱う技術用語としては、「カード情報の保存場所」という文脈で使われます。
curl -v -X POST --insecure https://api.sandbox.paypal.com/v1/vault/credit-cards \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer <Access-Token>' \
-d '{
"payer_id": "user12345",
"type": "visa",
"number": "4417119669820331",
"expire_month": "11",
"expire_year": "2018",
"first_name": "Betsy",
"last_name": "Buyer",
"billing_address": {
"line1": "111 First Street",
"city": "Saratoga",
"country_code": "US",
"state": "CA",
"postal_code": "95070"
}
}'
このようにカード番号や有効期限などをVault APIに登録すると
CARD-64X402443J205880LKZ4QFKQ
といったカード情報を識別するIDが取得できます。
これを以下のPayment APIのパラメータとして渡すと、決済毎にカード情報を渡さなくとも決済できるようになり、
https://developer.paypal.com/docs/api/#create-a-payment
また、自身のサーバーに顧客のカード番号を送信せずにサーバーからカード決済を実行する(アプリやウェブページのJavaScriptからVault APIをつかってPayPalにカード情報を預け、そのIDを使ってサーバー側で決済する)ようなことができます。
こうしたカード情報を自身で保持しない運用をすることで、PCIDSSの適用レベルを下げるなどのセキュリティ対策も実現できます。