Amazon Pay による決済を受け付ける
Amazon Pay の実装の設定方法をご紹介します。
このガイドでは、Payment Element を使用して、ウェブサイトまたはアプリケーションにカスタムの Stripe 決済フォームを埋め込む方法をご紹介します。Payment Element では、Amazon Pay とその他の支払い方法に自動的に対応できます。追加の設定やカスタマイズについては、決済を受け付けるの導入ガイドをご覧ください。
PaymentIntent を作成するサーバー側
PaymentIntent (支払いインテント) は、顧客から支払いを回収する意図を表すオブジェクトで、決済プロセスのライフサイクルの各段階を追跡します。
client secret を取得する
PaymentIntent には、client secret が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。
支払いの詳細を収集するクライアント側
Payment Element を使用してクライアント側で支払い詳細を収集します。Payment Element は事前構築された UI コンポーネントであり、さまざまな決済手段の詳細の収集をシンプルにします。
Payment Element には、HTTPS 接続を介して支払い情報を Stripe に安全に送信する iframe が含まれています。一部の支払い方法では、支払いを確定するために別のページにリダイレクトする必要があるため、Payment Element を別の iframe 内に配置しないでください。
構築済みのシステムを機能させるには、決済ページのアドレスの先頭を http:// ではなく https:// にする必要があります。HTTPS を使用しなくてもシステムをテストできますが、本番環境で決済を受け付ける準備が整ったら、必ず、HTTPS を有効にしてください。
Stripe に支払いを送信するクライアント側
Payment Element からの詳細を指定して stripe.confirmPayment を使用し、支払いを完了します。ユーザーが支払いを完了した後に Stripe がユーザーをリダイレクトする場所を指定するには、この関数に return_url を指定します。ユーザーはまず、銀行のオーソリページなどの中間サイトにリダイレクトされ、その後 return_ にリダイレクトされます。カード支払いでは、支払いが正常に完了するとすぐに return_ にリダイレクトします。
return_ が、Web サイト上の支払いステータスを表示するページと対応していることを確認します。Stripe が顧客を return_ にリダイレクトするときは、以下の URL クエリーパラメーターが指定されます。
| パラメーター | 説明 |
|---|---|
payment_ | PaymentIntent の一意の識別子。 |
payment_ | PaymentIntent オブジェクトの client secret。 |
注意
顧客のブラウザーセッションを追跡するツールを利用している場合、リファラー除外リストに stripe. ドメインの追加が必要になる場合があります。リダイレクトを行うと、一部のツールでは新しいセッションが作成され、セッション全体の追跡ができなくなります。
クエリパラメーターのいずれか 1 つを使用して PaymentIntent を取得します。PaymentIntent のステータスを調べて、顧客に表示する内容を決定します。また、return_ を指定するときにカスタムのクエリパラメーターを追加することもできます。このパラメーターはリダイレクトプロセスの間維持されます。
リダイレクトと取引の認証
顧客はブラウザで Amazon Pay の取引を認証できます。 confirmPayment が呼び出されると、顧客は支払いを確定するために Amazon Pay のウェブサイトにリダイレクトされます。
確定が完了すると、顧客は return_ にリダイレクトされます。
オプションオーソリとキャプチャーを分離する
支払いをすぐ作成して、売上は後でキャプチャーするように、オーソリとキャプチャーを分離できます。7 日の期間内に支払いがキャプチャーされない場合、Stripe は PaymentIntent をキャンセルし、payment_intent.canceled イベントを送信します。
支払いをキャプチャーできないことが分かっている場合は、7 日間経過するのを待つのではなく、PaymentIntent をキャンセルすることをお勧めします。
オーソリのみを行うよう Stripe に指示する
オーソリとキャプチャーの分離を指定するには、PaymentIntent の作成時に capture_method を manual に設定します。このパラメーターは、顧客の Amazon Pay アカウントの金額のみをオーソリするように Stripe に指示します。
curl https://api.stripe.com/v1/payment_intents \ -u sk_test123: \ -d amount=6000 \ -d confirm=true \ -d currency=usd \ -d "payment_method_types[]"=amazon_pay \ -d "payment_method_data[type]"=amazon_pay \ -d capture_method=manual \ --data-urlencode return_url="https://www.example.com/checkout/done"
売上をキャプチャーする
オーソリが成功すると、PaymentIntent のステータスは requires_ に変わります。オーソリされた売上をキャプチャーするには、PaymentIntent のキャプチャーリクエストを作成します。
デフォルトでは、オーソリされた合計金額がキャプチャーされます。amount_ を指定して、合計金額以下の金額を指定することもできます。
任意オーソリをキャンセルする
オーソリをキャンセルする必要がある場合は、PaymentIntent をキャンセルしてください。
オプション支払い後のイベントを処理する
支払いが完了すると、Stripe は payment_intent.succeeded イベントを送信します。ダッシュボード、カスタム Webhook、またはパートナーソリューションを使用してこれらのイベントを受信し、また、顧客への注文確認メールの送信、データベースでの売上の記録、配送ワークフローの開始などのアクションを実行します。
クライアントからのコールバックを待つのではなく、これらのイベントをリッスンします。クライアント側では、コールバックが実行される前に顧客がブラウザーのウィンドウを閉じたり、アプリを終了したりする可能性があります。また、悪意を持つクライアントがレスポンスを不正操作する恐れもあります。非同期型のイベントをリッスンするよう構築済みのシステムを設定することで、これ以降はより多くの決済手段を簡単に受け付けられるようになります。サポートされているすべての決済手段の違いをご確認ください。
ダッシュボードでイベントを手動で処理する
ダッシュボードを使用して、テスト決済をダッシュボードで表示したり、メール領収書を送信したり、入金を処理したり、失敗した決済を再試行したりできます。
Custom Webhook を構築する
Custom Webhook ハンドラを構築してイベントをリッスンし、カスタム非同期型の決済フローを作成します。Stripe CLI を使用して、ローカルで Webhook の導入のテストとデバッグを行います。
構築済みアプリを導入する
パートナーアプリケーションを統合することで、自動化やマーケティング/セールスなどの一般的なビジネスイベントを処理します。
連携をテストする
システムをテストするには、Amazon Pay を決済手段に選択し、支払うをタップします。サンドボックスではテスト用の支払いページにリダイレクトされ、そこで支払いを承認または拒否できます。
本番環境では、支払うをタップすると、Amazon Pay ウェブサイトにリダイレクトされます。Amazon Pay で支払いを承認または拒否するオプションはありません。
失敗した支払い
Amazon Pay が何らかの理由で取引を拒否した場合、PaymentMethod (支払い方法) の関連付けが解除され、PaymentIntent (支払いインテント) オブジェクトのステータスは自動的に requires_ に変わります。
支払いが拒否された場合を除き、Amazon Pay の PaymentIntent (支払いインテント) が requires_ ステータスである場合、顧客は Amazon にリダイレクトされてから 10 分以内に支払いを完了する必要があります。10 分経過しても何もアクションが行われなかった場合は、PaymentMethod (支払い方法) の関連付けが解除され、PaymentIntent (支払いインテント) オブジェクトのステータスは自動的に requires_ に変わります。
これが発生すると、Payment Element はエラーメッセージを表示し、顧客に別の支払い方法で再試行するように求めます。
エラーコード
次の表は、一般的なエラーコードと推奨アクションの詳細を示しています。
| エラーコード | 推奨アクション |
|---|---|
payment_ | 適切な通貨を入力します。Amazon Pay は usd にのみ対応しています。 |
missing_ | 必須のパラメーターについて、詳細はエラーメッセージを確認してください。 |
payment_ | このコードは PaymentIntent の last_payment_error.code フィールドに表示されることがあります。エラーメッセージで失敗の詳細な理由と推奨されるエラー処理を確認します。 |
payment_ | Amazon Pay で PaymentIntent を確定する際は、return_ を指定します。 |