Skip to main content
ユーザーの銀行カード情報を安全にトークン化することで、以降の決済時にカード番号を再入力する必要がなくなります。
このフローはサーバー側(Generate / Inquiry / Remove API の呼び出し)とフロントエンド@waffo/payment-sdk によるカード情報の送信)の両方にまたがります。

主要なフロー

カードバインドフロー

1

加盟店バックエンドから Generate API を呼び出す

POST /api/v1/tokenization/generate を呼び出し、tokenRequestIdmerchantUserIdtokenType: "CARD" などのパラメータを渡します。成功すると tokenSessionId が返されます。
2

フロントエンドからカード情報を送信する

@waffo/payment-sdktokenizationSubmit メソッドを使用して、カードデータを暗号化し Waffo サーバーに送信します:
加盟店フロントエンドは平文カード情報を SDK に渡し、SDK は送信前にカードデータを暗号化します。フロントエンド SDK のカードバインドフローでは、加盟店バックエンドが平文カード情報を保持せず、かつ経由させない限り、加盟店が PCI DSS 認証を取得する必要はありません。
3

カードバインド結果のハンドリング

Generate リクエストに notifyUrl が含まれる場合、カードバインドの完了時、Token ステータスの変更時、またはカード概要情報の更新時に、Waffo は TOKENIZATION_NOTIFICATION を送信します。result.tokenId を冪等性キーとして通知を処理し、最新の tokenStatus と Token データを保存してください。この通知は初回のバインド結果だけに使用されるものではありません。

Token ステータス

カードバインドが成功すると、Token の初期ステータスは UNVERIFIED になります。VERIFIED に変更するには、CIT(カード会員起点取引)を正常に完了する必要があります。検証には、金額が 0 または 0.01 の独立した ONE_TIME_PAYMENT、または通常の CIT 決済を使用できます。
  • UNVERIFIED: Token は生成済みですが、CIT がまだ正常に完了していません。scheduled または unscheduled MIT には使用できず、使用すると A0045 が返されます。
  • VERIFIED: CIT が正常に完了しており、以降の決済に使用できます。
  • EXPIRED: カードが有効期限に達すると、Token ステータスは EXPIRED になります。
  • SUSPENDED: Waffo が Token の利用を停止しています。公開契約では具体的な発生条件を定義していません。

トークンを使用して決済する

tokenId を取得した後、注文作成時に paymentInfo.userPaymentAccessToken へ渡すことでカード番号の代わりに使用します:
tokenId は Waffo の ONE_TIME_PAYMENT プロダクトでのみ使用できます。Waffo の SUBSCRIPTION プロダクトには渡さないでください。 加盟店側で継続課金スケジュールを管理する場合は、Token が VERIFIED になった後、スケジュールに従って ONE_TIME_PAYMENT 注文を繰り返し作成できます。MIT 注文では paymentInfo.merchantInitiatedMode も設定する必要があります。

Token API の用途

セキュリティメカニズム

  • 加盟店フロントエンドは平文カード情報を SDK に渡し、SDK が送信前に暗号化する。加盟店バックエンドは平文カード番号を扱わない
  • すべての API リクエストとレスポンスで SHA256WithRSA 署名検証を使用
  • 3DS 認証をサポートし、決済のセキュリティを強化