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

クーポンウィジェットは、サポートされているクーポンまたは現金支払い方法に対して生成された指示または参照を表示します。既存の注文トークを使用し、新しい注文を作成または支払いません。

クーポンライフサイクル#

01 · backend
注文を作成
設定されたクーポン方法に対応する注文を作成。
02 · app
クーポンを開く
返された情報を渡す order_token to the platform SDK.
03 · customer
指示を保存する
顧客は、サポートされている参照を確認、コピー、またはダウンロードします。
04 · backend
支払いを確定する
履行前に、信頼できる非同期注文ステータスを待つ。
シーケンス図
1Merchant app2DEUNA API3Voucher widget4CustomerCreate eligible orderorder_tokenOpen with the same tokenVoucher / referenceinstructionsCopy or downloadVerified webhook orretrieved state
商社または顧客DEUNA

ウィジェットを開く#

await DeunaSDK.initVoucherWidget({
  orderToken,
  language: 'en',
  callbacks: {
    onSuccess: (data) => showVoucherInstructions(data),
    onError: (error) => showRecovery(error),
    onClosed: () => showPaymentMethods(),
    onPaymentProcessing: () => disableDuplicateActions(),
  },
});

パラメータ#

パラメータプラットフォーム必須目的
orderTokenすべてはい既存のクーポンの利用可能な注文に対応するためのトークン。
callbacksすべてはい成功、エラー、クローズ、イベント、およびサポートされている決済処理ハンドラ。
languageすべてなしサポートされているウィジェットの言語。Web タイプは現在、 en, es、または pt.
modeReact Nativeはいmodal またはサポートされている埋め込みレンダラーモードを受け入れます。
fraudCredentialsネイティブ + React Nativeなしプロバイダーの認証情報は、設定された不正行為フローがそれらを必要とする場合にのみ使用します。
customUserAgentiOS + Androidなし承認された統合に必要な、アプリ固有のWebViewユーザーエージェント。
domainすべてなし制御されたテスト用の環境のオーバーライド。通常のプロ덕ション統合では省略します。

完了と支払い状態#

onSuccess は、Voucherエクスペリエンスがサポートされているクライアントアクションを完了したことを意味します。Voucherの決済は通常、アプリ外で行われます。インターフェースで「処理中」の状態を維持し、バックエンドが検証されたWebhookまたはAPIリトリーブを通じて最終状態を認識するまで待機します。

状況顧客メッセージ加盟店の対応
表示される指示「これらの指示を使用して支払い完了」商人の注文IDを保持し、状態の変更を待機します。
ウィジェットが閉じられました「後でこの注文に戻ることができます」自動でキャンセルまたは再作成しないでください。まず、照合してください。
ネットワークエラー「Voucherを読み込めませんでした」同じ注文トークンを使用した再試行を提供します。
Voucherが支払われた「支払いを確認しました」バックエンドでの検証後にのみ実行します。
Voucherが期限切れまたは拒否されましたサポートされている次の手順を説明します。API応答からターミナルまたは再試行可能な状態に移動します。

領収書とファイル配信#

参照決済の応答には、以下が含まれることがあります。 reference_processors 配列。利用可能な各プロセッサのエントリには、バーコード、有効期限、プロセッサ名、およびホストされたHTMLまたはPDFレシートのURLを提供できます。このフィールドが配列であるため、処理された支払いによって複数の参照プロセッサが返される場合、ホストされたVoucher機能は複数のレシートを表示できます。

フロー図
NoYes1Reference paymentresponse2reference_processorspresent?3Show the widget'ssupportedcontinuation4Present one or morereceipts5View processorinstructions6Open, save, or sharethe availablereceipt7Keep payment pendinguntil backendconfirmation
結果またはアウトカムプロバイダーまたはプロセッサレビューまたは保留中

プロセッサは、どのレシートフィールドが存在するかを決定します。バーコードからPDF URLを生成したり、すべての参照方法がHTMLとPDFの両方の形式を持っていると仮定したりしないでください。

プラットフォーム所有権のダウンロード統合時の動作
Webホストされたウィジェットとブラウザウィジェットは、利用可能なレシートアクションを表示します。現在のWebコールバック契約には、専用のファイルコールバック機能はありません。
React Native商社アプリケーションonDownloadFile 受信 {type, data}. type 経由で提供されます。 url プロセッサがレシートURLを供給した場合、または base64 SDKが現在のバウチャーの表示をキャプチャした場合。
AndroidネイティブSDKSDKは、供給されたレシートURLをダウンロードするか、ウィジェットが保存アクションを送信した場合に代替として現在の表示を保存します。サポートされているAndroidバージョンで、保存および共有の動作をテストしてください。
iOSネイティブSDKSDKは、供給されたレシートURLをダウンロードするか、現在の表示をキャプチャします。サポートされているiOSバージョンで、結果の保存/共有体験をテストしてください。

React Nativeの場合、ペイロードが常にファイルボディであると仮定するのではなく、ディスクリミネータで分岐してください。

JavaScript
import {DownloadType} from '@deuna/react-native-sdk';

const onDownloadFile = async ({type, data}) => {
  if (type === DownloadType.URL) {
    await openTrustedReceiptUrl(data);
    return;
  }

  await saveBase64VoucherImage(data);
};

URLを開いたり、取得したりする前に、必ず検証してください。HTTPSを使用し、ダウンロードしたファイルを適切な保護された場所に保存するか、ユーザーが選択した場所に保存し、レシートの内容をログに記録しないでください。保存されたレシートは、顧客向けの証拠であり、支払い確定の公式な確認ではありません。

モバイルとアクセシビリティ#

  • Voucherを、バックグラウンドコールではなく、表示される画面から提示します。
  • ダウンロード、コピー、およびクローズのアクションを200%のテキストサイズで利用可能にしてください。
  • React Native で、保存の実装に必要なストレージまたは共有機能のみをリクエストしてください。
  • モーダルを開いたコントロールにフォーカスを戻し、プラットフォームのアクセシビリティ API を通じてロードエラーを通知します。
  • 長い商社名、長いローカライズされた指示、および狭いデバイスで参照をテストしてください。

トラブルシューティング#

ウィジェットは無効な注文トークンを報告トークン検証

文字列が空でないこと、選択された環境に属していること、および表示する注文と同じものであることを確認してください。 秘密の API キーや生の注文ボディをクライアントと交換しないでください。

割引に関する指示が表示されない資格

割引フロー用に注文と支払い方法が設定されていることを確認してください。 このウィジェットを開くだけで、通常のカード注文は割引注文にはなりません。

成功コールバックが発火したが、注文はまだ保留中期待される非同期状態

これは現金と割引方法の場合に該当します。 コールバックは UI 操作を完了し、決済ではありません。 検証されたバックエンドの状態を継続的に監視してください。