このフローはサーバー側(Generate / Inquiry / Remove API の呼び出し)とフロントエンド(
@waffo/payment-sdk によるカード情報の送信)の両方にまたがります。主要なフロー
カードバインドフロー
1
加盟店バックエンドから Generate API を呼び出す
POST /api/v1/tokenization/generate を呼び出し、
tokenRequestId、merchantUserId、tokenType: "CARD" などのパラメータを渡します。成功すると tokenSessionId が返されます。2
フロントエンドからカード情報を送信する
@waffo/payment-sdk の tokenizationSubmit メソッドを使用して、カードデータを暗号化し Waffo サーバーに送信します:3
カードバインド結果のハンドリング
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 認証をサポートし、決済のセキュリティを強化