Web用の要素とカードバウルの実装
DEUNA Elementsを、カードバウルス、Click to Pay、Apple Pay、Google Payを、レスポンシブなWeb体験に統合する。
このページで
initElements は、Payment Widgetを必要とせずに、集中型の認証体験を提供する。カードのバウルス、Click to Payの実行、または設定されたネイティブウォレットの起動に使用できる。
Elementsの種類を選択#
| Type | 目的 | IDまたは注文コンテキスト |
|---|---|---|
vault | トークン化または保存されたカードを選択する。これはデフォルトの動作。 types is omitted. | userToken * 認証されたユーザーの場合、または userInfo; an orderToken * 金額と分割払いオプションを追加できます。 |
click_to_pay | Click to Pay の利用を開始する。 | 顧客の身元と商人の設定が必要です。 |
APPLE_PAY | Apple Pay の利用可能状態が確認された後に開始する。 | 注文コンテキストと設定されたウォレットの認証情報。 |
GOOGLE_PAY | Google Pay の利用可能状態が確認された後に開始する。 | 注文コンテキストと設定されたウォレットの認証情報。 |
カードを Vault に登録する#
await DeunaSDK.initElements({
orderToken,
userInfo: {
firstName: 'Ada',
lastName: 'Lovelace',
email: 'ada@example.com',
},
types: [{name: 'vault'}],
callbacks: {
onSuccess: (credential) => useCredentialResult(credential),
onError: ({type, metadata}) => showRecovery(type, metadata.code),
onClosed: () => restorePaymentMethods(),
onCardBinDetected: ({cardBin, cardBrand}) => updateCardOffers(cardBin, cardBrand),
onInstallmentSelected: ({installmentPlanOptionId}) => rememberPlan(installmentPlanOptionId),
},
});体験フロー#
要素の事前読み込み#
await DeunaSDK.initialize({
publicApiKey: 'YOUR_PUBLIC_API_KEY',
env: 'sandbox',
preloadWidgets: [
{
widget: 'elements',
params: {
types: [{name: 'vault'}],
language: 'en',
callbacks,
},
},
],
});
// Add the order or user context and reveal the prepared experience.
await DeunaSDK.initElements({orderToken, userToken});SDKによって初期化パラメータと後続の呼び出しが統合されます。安定した設定を事前読み込みエントリに、最新のトークンを… initElements.
パラメータ#
| パラメータ | 必須 | 目的 |
|---|---|---|
types | なし | 選択体験; デフォルトはVault。 |
orderToken | フロー依存 | 金額、分割、支払い、またはウォレットの開始に関する注文コンテキスト。 |
userToken | フロー依存 | 認証されたDEUNAユーザーコンテキスト。 |
userInfo | フロー依存 | 部分的な顧客ID: firstName, lastName, および email. |
callbacks | 推奨 | 成功、エラー、クローズ、イベント、リサイズ、BIN、および分割支払い処理。 |
mode + target | なし | デフォルトのモーダルではなく、埋め込みターゲットの表示。 |
walletConfig | 高度 | 承認されたApple PayまたはGoogle Payの設定。 |
behavior | なし | サポートされているトークン化、購入、カード分割、および表示動作。 |
language, styleFile, widgetExperience | なし | ローカライゼーションとサポートされている外観のカスタマイズ。 |
domain | なし | ホストの制御されたオーバーライド; 標準的な本番環境での統合では省略。 |
トークン化または決済#
クレジットカード要素の動作をサポート tokenize または purchase:
behavior: {
paymentMethods: {
creditCard: {
flow: 'tokenize',
},
},
}使用する tokenize 商取引フローが再利用可能な認証情報のみを必要とする場合に利用します。 purchase 必要な注文と商取引設定と組み合わせてのみ使用してください。バックエンドが認証情報の利用方法を決定します。
ネイティブウォレット#
ボタンの表示前に、利用可能かどうかを確認し、顧客の操作から直接対応する処理を開始します。
const wallets = await DeunaSDK.getWalletsAvailable({orderToken, userInfo});
applePayButton.hidden = !wallets.includes('APPLE_PAY');
applePayButton.addEventListener('click', () => {
DeunaSDK.initElements({
orderToken,
userInfo,
types: [{name: 'APPLE_PAY'}],
callbacks,
});
});参照 ウォレットの可用性 プラットフォーム、キャッシュ、およびトラブルシューティングに関する情報。
組み込みおよび制御モード#
使用する mode: 'target', target, および onResize 埋め込み型体験向け。ページが主要なアクションを制御する場合、設定を hidePayButton: true, 呼び出し isValid(), 次に待機 submit()送信処理中に、外側のボタンを無効化する。
await DeunaSDK.initElements({
orderToken,
types: [{name: 'vault'}],
mode: 'target',
target: '#credential-entry',
hidePayButton: true,
callbacks: {
onResize: ({height}) => {
document.querySelector('#credential-entry').style.height = `${height}px`;
},
onSuccess: useCredentialResult,
onError: showRecovery,
},
});既存のセキュアフィールドの移行#
以前のドキュメントには modularPaymentCredentialsStorage, mountPaymentCredentialStorage、および別の sdk.deuna.io 安全なフィールドバンドル。これらの名前は、監査済みの現在の Web SDK の公開型または実装には存在しません。既存の初期化またはフィールドのマウントのコードを新しい統合にコピーしないでください。
現在利用可能な認証情報は、Elements を通じて提供されます。 DeunaSDK.initElements:
| 既存システムの管理 | 標準的な運用方法 |
|---|---|
負荷 sdk.deuna.io/.../main.min.js | 現在値を読み込む cdn.deuna.io/web-sdk/.../index.js まとめて購入する 開始 |
初期化 Deuna または deunaSDK.init インスタンス | コール DeunaSDK.initialize 公開APIキーと明示的な環境で一度 |
| 独立したPAN、有効期限、またはCVVフィールドをマウント | ホストされた環境で initElements({types: [{name: 'vault'}]}) モーダルまたは埋め込みモードで |
| 商社向け、送信ボタン | 使用する hidePayButton, isValid(), および submit() サポートされている制御モードで |
| レガシーな認証イベントを解析する | 使用する onSuccess, onError, onClosed、および専用のBIN/分割払いコールバック |
| 既存のチェックアウトセッションを再利用する | 選択されたフローに必要な orderToken, userToken、または userInfo 現在の情報を渡す |
Hosted Elements は、機密性の高い入力 UI を所有します。現在の公開 SDK は、各カードフィールドを独立した商社 DOM ノードにマウントするための、1 対 1 の API を公開していません。承認された PCI 範囲または製品設計が、独立したフィールドの所有を必要とする場合、移行を停止し、実装前に DEUNA でサポートされているアーキテクチャを確認してください。
移行時には、古い環境と新しい環境を、それぞれ独立した制御されたテストグループで実行してください。かつて使用していたセキュアフレームから Elements への値のコピーや、両方を同じ顧客アクションに対して初期化することは避けてください。
セキュリティと運用#
- Elementsによって表示されたカード情報を読み取らない、複製しない、またはログに記録しない。
- 結果は、必要なバックエンドの商社オペレーションにのみ送信する。
- 顧客がログアウトしたときに、商社のセッションとSDKの状態を同時に無効化する。
- 中断された購入フローの後で注文を再調整する。
- 「
onSuccess顧客の同意と商社の契約範囲外での資格情報の利用権限として、クライアントの結果としてのみ表示する。