メインコンテンツへスキップ
このページで

決済ウィジェットは、既存の注文に対して利用可能な決済方法を表示し、選択された方法をDEUNAを通じて処理します。カードおよび設定された代替決済方法をサポートし、商人のJavaScriptに機密情報を公開することなく処理します。

開始する前に#

完了 Web SDK を使用して開始する、バックエンドで注文を作成し、注文IDのみをブラウザに返します。 order_token 注文ID

Payment Widget の起動#

JavaScript
await DeunaSDK.initPaymentWidget({
  orderToken,
  language: 'en',
  callbacks: {
    onSuccess: async () => {
      await DeunaSDK.close();
      await verifyOrderOnBackend();
    },
    onError: ({type, metadata}) => {
      showRecovery({type, code: metadata.code});
    },
    onClosed: (action, metadata) => {
      restorePaymentMethods(action, metadata);
    },
    onCardBinDetected: ({cardBin, cardBrand}) => {
      updateCardOffers(cardBin, cardBrand);
    },
    onInstallmentSelected: ({cardBin, installmentPlanOptionId}) => {
      rememberPlan(cardBin, installmentPlanOptionId);
    },
    onPaymentProcessing: () => disableDuplicateActions(),
    onEventDispatch: (event, payload) => trackSafeEvent(event, payload),
  },
});

統合手順#

01 · server
注文を作成
合計金額を計算し、注文トークンを取得します。
02 · browser
Payment Widget の起動
トークンとサポートされているクライアント設定を渡します。
03 · SDK
選択された決済方法を処理します。
検証、チャレンジ、プロバイダー、およびライフサイクル動作を処理します。
04 · server
検証と実行
信頼できる注文状態を使用します。

パラメータ#

パラメータ必須目的
orderTokenはいバックエンドで注文を作成した際に返されるトークン。
callbacks推奨成功、エラー、クローズ、リサイズ、決済、BIN、分割払い、およびイベントハンドラ。
languageなしen, es、または pt; それ以外の場合は、商人のデフォルト設定が適用されます。
userTokenなし利用可能な保存された決済方法に対する認証されたDEUNAユーザーコンテキスト。
paymentMethodsなし設定された方法を制限または直接開きます。ルーティングで使用されるプロセッサをハードコードしない限り、必要な場合にのみ使用してください。
mode + targetなしデフォルトのモーダルではなく、対応する要素内にレンダリングします。ターゲットモードでは、両方が必要です。
hidePayButtonなしページが送信を処理する場合、ウィジェットのアクションを非表示にします。
styleFileなしDEUNAが管理するテーマ/スタイル識別子または承認されたスタイルリソース。
widgetExperienceなしサポートされているテーマとユーザーエクスペリエンスのオーバーライド。
behaviorなしサポートされているフローの動作(分割カードや親ウィンドウへのリダイレクトなど)
fraudCredentialsなし承認された不正検知プロバイダーの設定のみ。
sessionId, idempotencyKeyなしサポートされているフローにおける関連性と重複試行の制御。
domainなし制御された環境のオーバーライド; 通常のプロ덕ション環境では使用しない

モーダルまたは埋め込み#

モーダルがデフォルトです。 埋め込みモードの場合:

HTML
<div id="deuna-payment" aria-label="支払い詳細"></div>
JavaScript
await DeunaSDK.initPaymentWidget({
  orderToken,
  mode: 'target',
  target: '#deuna-payment',
  callbacks: {
    onResize: ({height}) => {
      document.querySelector('#deuna-payment').style.height = `${Math.ceil(height)}px`;
    },
    onSuccess: verifyOrderOnBackend,
    onError: showRecovery,
  },
});

セレクターは、安定した要素と一致する必要があります。要素の中にレンダリングしないでください。 display: none 初期化時またはクリップのオーバーフローが発生した場合。

支払い方法のフィルタリング#

省略 paymentMethods 注文と商取引設定に基づいて、承認条件を決定できるようにします。フォームを直接開くための方法を1つ提供するか、選択肢を制限するための複数の方法を提供します。

JavaScript
await DeunaSDK.initPaymentWidget({
  orderToken,
  paymentMethods: [
    {paymentMethod: 'credit_card'},
    {paymentMethod: 'wallet', processors: ['click_to_pay']},
  ],
  callbacks,
});

ルーティングは、設定されたカードプロセッサの中から選択できるため、クレジットカード入力は通常、次の必要ありません。 processors list.

送信ボタンを所有#

JavaScript
await DeunaSDK.initPaymentWidget({
  orderToken,
  hidePayButton: true,
  callbacks,
});

payButton.addEventListener('click', async () => {
  if (!(await DeunaSDK.isValid())) return;

  payButton.disabled = true;
  const result = await DeunaSDK.submit();
  if (result.status === 'error') showRecovery(result);
  payButton.disabled = false;
});

アクティブなインスタンスも公開しています getWidgetState(), getSelectedPaymentMethod(), refetchOrder(), setOrderData(...), setCustomStyles(...), および close()アクティブなエクスペリエンスにのみ関連するメソッドを使用し、更新をシリアル化して、古い注文トークンが新しいチェックアウトを上書きしないようにします。

カードと分割払い#

設定された2つのカードフローの場合、ドキュメントに記載されているネストされた動作を使用します。

JavaScript
behavior: {
  paymentMethods: {
    creditCard: {
      splitPayments: {maxCards: 2},
    },
  },
}

参照 カード分割払い 調整とテスト用に。 onInstallmentSelected 正確な installmentPlanOptionId; 視覚的な情報から推測しないでください。

エラーとクローズ処理#

フロー図
1Widget outcome2-- No3Verify order onbackend4-- No, closed orinterrupted5Map type andmetadata code torecovery6Retrieve orderbefore retry7Render verifiedstate
レビューまたは保留中

プロバイダの生のメッセージを表示しないでください。既知のタイプとコードを、ローカライズされた顧客ガイダンスにマッピングし、安全な診断を記録し、汎用的な再試行メッセージにフォールバックします。