Afterpay または Clearpay の支払いを受け付ける
注意
Stripe は、顧客の通貨、決済手段の制限、その他のパラメーターを評価して、決済手段オプションを自動的に提示します。決済を受け付けるの手順を使用して、Stripe ダッシュボードから決済手段を設定することをお勧めします。
引き続き、Checkout で顧客に提示する決済手段を手動で設定する必要がある場合は、こちらのガイド (たとえば、_「サブスクリプション」_モードでの決済の受け付け) を使用します。それ以外の場合は、ダッシュボードに移行します。
Afterpay は 1 回限りの使用で即時通知型の支払い方法であり、顧客は支払いの認証を求められます。顧客は Afterpay のサイトにリダイレクトされ、そこで分割払いプランの規約に同意します。顧客が規約に同意すると、Afterpay により、顧客への資金提供が保証され、お客様の Stripe アカウントに送金されます。顧客は一定の期間で直接 Afterpay に返済します。
注
Before you start the integration, make sure your account is eligible for Afterpay by navigating to your Payment methods settings.
支払いを受け付ける
注
This guide builds on the foundational accept a payment Checkout integration.
このガイドでは、Afterpay を有効にする方法を紹介し、カード支払いを受け付ける場合と、Afterpay を使用する場合の違いも説明します。
支払い方法として Afterpay を有効にする
新しい Checkout セッションを作成する際には、以下を実行する必要があります。
afterpay_clearpay
をpayment_method_types
のリストに追加します。- すべての
line_items
でお客様の国内通貨を使用していることを確認します。 shipping_address_collection[allowed_countries]
にお客様の国を追加して、配送先住所を収集します。Checkout で配送先住所を収集していない場合は、payment_intent_data[shipping]
を使用して配送先住所を指定します。
Stripe::Checkout::Session.create({ mode: 'payment', payment_method_types: ['card'], payment_method_types: ['card', 'afterpay_clearpay'], line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, # Make sure the total amount fits within Afterpay transaction amount limits: # https://stripe.com/docs/payments/afterpay-clearpay#collection-schedule unit_amount: 2000, }, quantity: 1, }], shipping_address_collection: { # Specify which shipping countries Checkout should provide as options for shipping locations allowed_countries: ['AU', 'CA', 'GB', 'NZ', 'US'], }, # If you already have the shipping address, provide it in payment_intent_data: # payment_intent_data: { # shipping: { # name: 'Jenny Rosen', # address: { # line1: '1234 Main Street', # city: 'San Francisco', # state: 'CA', # country: 'US', # postal_code: '94111', # }, # }, # }, success_url: 'https://example.com/success', cancel_url: 'https://example.com/cancel', })
注文を実行する
注文のフルフィルメントを処理するには、顧客を支払いのステータスページに戻すのではなく、Webhook などの方法を使用します。
支払いのステータスに変化があると、以下のイベントが送信されます。
イベント名 | 説明 | 次のステップ |
---|---|---|
checkout.session.completed | 顧客が Checkout フォームを送信して、支払いのオーソリを正常に完了しました。 | 支払いが成功するか、失敗するまで待ちます。 |
payment_intent.succeeded | 顧客の支払いが成功しました。PaymentIntent は succeeded に移行します。 | 顧客が購入した商品またはサービスの発送を行います。 |
payment_intent.payment_failed | 顧客の支払いが拒否されたか、その他の理由で失敗しました。PaymentIntent のステータスは requires_payment_method に戻ります。 | 顧客にメールで連絡して、新たに注文するように依頼してください。 |
詳しくは、注文のフルフィルメントを参照してください。
組み込みをテストする
Checkout の組み込みをテストする際は、支払い方法として Afterpay を選択して、支払いボタンをクリックします。
テスト API キーを使用して Afterpay の組み込みをテストするには、リダイレクトページを表示します。リダイレクトページで支払いを認証することにより、支払い成功のケースをテストできます。PaymentIntent は requires_action
から succeeded
に変化します。
ユーザが認証に失敗するケースをテストするには、テスト API キーを使用してリダイレクトページを表示します。リダイレクトページでテスト支払い失敗をクリックします。PaymentIntent は、requires_action
から requires_payment_method
に変化します。
テスト環境で PaymentIntents を手動でキャプチャする場合、キャプチャされていない PaymentIntent は、認証が成功してから 10 分後に自動的に期限切れになります。
失敗した支払い
Afterpay は、取引を受け付けるか拒否するかを決定する際に複数の要因を考慮します (買い手が Afterpay を使用している期間、顧客が返済する必要のある未払い額、現在の注文の値など)。
Afterpay による支払いは多くの支払い方法よりも支払い拒否の確立が高いため、決済フローには常に card
などの他の支払いオプションを提示する必要があります。このような場合、PaymentMethod (支払い方法) は解除され、PaymentIntent (支払いインテント) オブジェクトのステータスは自動的に requires_payment_method
に変わります。
Afterpay の PaymentIntent (支払いインテント) のステータスが requires_action
の場合、顧客は Afterpay のサイトにリダイレクトされてから 3 時間以内に支払いを完了する必要があります (拒否された支払いには適用されません)。3 時間以内にアクションが実行されなければ、PaymentMethod (決済手段) の関連付けが解除され、PaymentIntent のステータスが自動的に requires_payment_method
に移行します。
このような場合、決済フローに表示される別の支払いオプションで再試行するように顧客に通知します。
エラーコード
一般的なエラーコードと対応する推奨アクションは以下のとおりです。
エラーコード | 推奨アクション |
---|---|
invalid_amount_too_small | Afterpay の国別のデフォルトの取引限度額以内の金額を入力してください。 |
invalid_amount_too_large | Afterpay の国別のデフォルトの取引限度額以内の金額を入力してください。 |
payment_intent_invalid_currency | 適切な通貨を入力します。Afterpay は国内取引にのみ対応しています。 |
missing_required_parameter | 必須のパラメーターの詳細については、エラーメッセージを確認してください。 |
nonexistent_country | 配送の詳細と請求の詳細の country プロパティーには、有効な ISO の 2 文字の国コードを入力してください。 |
payment_intent_redirect_confirmation_without_return_url | Afterpay で PaymentIntent を確定する際は、return_url を指定します。 |