Afterpay または Clearpay の支払いを受け付ける
アメリカ、カナダ、イギリス、オーストラリア、ニュージーランドで、Afterpay (イギリスでは Clearpay とも呼ばれている) による支払い方法を受け付ける方法をご紹介します。
アプリで Afterpay を受け付けるには、顧客が支払いを認証するための Webview を表示します。その後、顧客はアプリに戻り、お客様は支払いが成功したか失敗したかをすぐに確認できます。
注
連携を始める前に、決済手段の設定に移動して、アカウントが Afterpay の対象であることを確認してください。
Stripe を設定するサーバ側クライアント側
まず、Stripe アカウントが必要です。今すぐ登録してください。
サーバ側
この組み込みには、サーバ上に Stripe API と通信するエンドポイントが必要です。サーバから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。
クライアント側
Stripe Android SDK はオープンソースであり、詳細なドキュメントが提供されています。
SDK をインストールするには、app/build.gradle ファイルの dependencies
ブロックに stripe-android
を追加します。
注
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases ページをご覧ください。新しいリリースの公開時に通知を受け取るには、リポジトリのリリースを確認してください。
Stripe の公開可能キーを使用して SDK を設定し、 Application
サブクラスなどで、Stripe API へのリクエストを実行できるようにします。
PaymentIntent を作成するサーバ側クライアント側
PaymentIntent は、顧客から支払いを回収する意図を表すオブジェクトであり、支払いプロセスのライフサイクルをステージごとに追跡します。
サーバ側
まず、サーバーで PaymentIntent
を作成し、回収する金額と通貨を指定します。Payment Intents API を使用した組み込みをすでにお持ちの場合には、afterpay_
を PaymentIntent
の決済手段タイプのリストに追加します。
その他の支払い方法オプション
決済手段オプションで、支払いの内部的な注文 ID を設定する PaymentIntent
でオプションの reference
パラメーターを指定できます。これは通常、企業にも消費者にも表示されませんが、Afterpay の社内サポートチームは手動サポートリクエストの際にアクセスできます。ID は 128 文字に制限され、文字、数字、アンダースコア、バックスラッシュ、ダッシュのみを使用できます。
クライアント側
返される PaymentIntent には client secret が含まれ、これを使用することでクライアント側は、PaymentIntent オブジェクト全体を渡すことなく安全に決済プロセスを完了できます。クライアントで、サーバの PaymentIntent をリクエストし、その client secret を保存します。
支払い方法の詳細を収集するクライアント側
Afterpay で支払いを成功させるには請求先情報が提示されている必要があります。アプリで、必要な請求先情報を顧客から収集します。
- 氏名 (姓と名)
- メールアドレス
- 請求先住所
これらの詳細を使用して、PaymentMethodCreateParams を作成します。
また、配送先情報は必須ではありませんが、認証率の向上に役立ちます。配送先情報を収集するには、以下を顧客から収集します。
- 氏名
- 詳細な配送先住所
これらの詳細を使用して、ConfirmPaymentIntentParams.Shipping を作成します。
Stripe に支払いを送金するクライアント側
ステップ 2 で作成した PaymentIntent から client secret を取得し、PaymentLauncher confirm メソッドを呼び出します。これにより、Webview が表示され、顧客は銀行のウェブサイトまたはアプリで支払いを完了できます。完了後、支払い結果とともに、onActivityResult が呼び出されます。
オプションPaymentIntent にラインアイテムを追加する
オプションで、ラインアイテムデータを受け入れて、Afterpay により多くのリスク警告を提供できます。この機能は現在、プライベートベータです。アクセスをリクエストする場合は、お問い合わせください。
オプションオーソリとキャプチャの分離
カード支払いでのオーソリとキャプチャーの分離とは異なり、Afterpay ではオーソリ時点で分割払いの初回の金額を顧客に請求します。その後、オーソリから最長 13 日間以内であれば、残りの支払いをキャプチャーすることができます。この期間に支払いがキャプチャーされない場合、初回分の分割払いが顧客に返金され、それ以降の分割払いは請求されません。この場合、Stripe は PaymentIntent もキャンセルし、payment_intent.canceled イベントを送信します。
支払いをキャプチャーできないと分かっている場合は、13 日間が経過するのを待つのではなく PaymentIntent をキャンセルすることをお勧めします。先を見越して PaymentIntent をキャンセルすると、すぐに最初の分割払いが顧客に返金され、顧客の明細書上の支払いに関して混乱が生じるのを避けられます。
オーソリのみ行うように Stripe に指示する 
オーソリとキャプチャーを分離することを指定するには、PaymentIntent の作成時に、capture_method を manual
に設定します。このパラメーターは、顧客の Afterpay アカウントの金額のみをオーソリするよう Stripe に指示します。
オーソリが成功すると、Stripe は payment_intent.amount_capturable_updated イベントを送信します。この機能については、イベントガイドでご確認ください。
売上をキャプチャする 
オーソリが成功すると、PaymentIntent の status が requires_
に移行します。オーソリされた売上をキャプチャーするために、PaymentIntent capture リクエストを実行します。デフォルトでは、オーソリされた合計金額がキャプチャーされます。これを超える金額のキャプチャーはできませが、これ未満でしたらキャプチャーできます。
任意オーソリをキャンセルする
オーソリを取り消す必要がある場合は、PaymentIntent をキャンセルできます。
オプション支払い後のイベントを処理する
支払いが完了すると、Stripe は payment_intent.succeeded イベントを送信します。ダッシュボード、カスタム Webhook、またはパートナーソリューションを使用してこれらのイベントを受信し、また、顧客への注文確認メールの送信、データベースでの売上の記録、配送ワークフローの開始などのアクションを実行します。
クライアントからのコールバックを待つのではなく、これらのイベントをリッスンします。クライアント側では、コールバックが実行される前に顧客がブラウザーのウィンドウを閉じたり、アプリを終了したりする可能性があります。また、悪意を持つクライアントがレスポンスを不正操作する恐れもあります。非同期型のイベントをリッスンするよう構築済みのシステムを設定することで、これ以降はより多くの決済手段を簡単に受け付けられるようになります。サポートされているすべての決済手段の違いをご確認ください。
ダッシュボードでイベントを手動で処理する
ダッシュボードを使用して、テスト決済をダッシュボードで表示したり、メール領収書を送信したり、入金を処理したり、失敗した決済を再試行したりできます。
Custom Webhook を構築する
Custom Webhook ハンドラを構築してイベントをリッスンし、カスタム非同期型の決済フローを作成します。Stripe CLI を使用して、ローカルで Webhook の導入のテストとデバッグを行います。
構築済みアプリを導入する
パートナーアプリケーションを統合することで、自動化やマーケティング/セールスなどの一般的なビジネスイベントを処理します。
オプションAfterpay の組み込みをテストする
テスト API キーを使用して Afterpay の組み込みをテストするには、リダイレクトページを表示します。リダイレクトページで支払いを認証することにより、支払い成功のケースをテストできます。PaymentIntent は requires_
から succeeded
に変化します。
ユーザが認証に失敗するケースをテストするには、テスト API キーを使用してリダイレクトページを表示します。リダイレクトページでテスト支払い失敗をクリックします。PaymentIntent は、requires_
から requires_
に変化します。
テスト環境で PaymentIntents を手動でキャプチャする場合、キャプチャされていない PaymentIntent は、認証が成功してから 10 分後に自動的に期限切れになります。
失敗した支払い
Afterpay は、取引を受け付けるか拒否するかを決定する際に複数の要因を考慮します (買い手が Afterpay を使用している期間、顧客が返済する必要のある未払い額、現在の注文の値など)。
Afterpay による支払いは多くの決済手段よりも支払い拒否の確立が高いため、チェックアウトフローには常に card
などの他の支払いオプションを提示する必要があります。このような場合、PaymentMethod は解除され、PaymentIntenオブジェクトのステータスは自動的に requires_
に変わります。
Afterpay の PaymentIntent のステータスが requires_
の場合、顧客は Afterpay のサイトにリダイレクトされてから 3 時間以内に支払いを完了する必要があります (拒否された支払いには適用されません)。3 時間以内にアクションが実行されなければ、PaymentMethod の関連付けが解除され、PaymentIntent のステータスは自動的に requires_
に移行します。
このような場合、決済フローに表示される別の支払いオプションで再試行するように顧客に通知します。
エラーコード
一般的なエラーコードと対応する推奨アクションは以下のとおりです。
エラーコード | 推奨される対応 |
---|---|
payment_ | Afterpay の決済が失敗したことを示す一般的なエラー。これは、拒否エラーコードとして表示されない拒否である可能性もあります。 |
payment_ | Afterpay が顧客の支払いを拒否しました。次のステップとして、顧客から Afterpay に詳細を問い合わせる必要があります。 |
payment_ | 顧客が Afterpay の決済ページで支払いを完了しなかったため、支払いセッションの有効期限が切れました。Stripe では、決済が正常に行われなかった PaymentIntent は、最初のチェックアウト作成から 3 時間後に自動的に有効期限切れとなります。 |
payment_ | Afterpay でサービス関連のエラーが発生したため、リクエストを完了できません。後で再試行してください。 |
amount_ | Afterpay の国別のデフォルトの取引限度額以内の金額を入力してください。 |
amount_ | Afterpay の国別のデフォルトの取引限度額以内の金額を入力してください。 |