Affirm 支払いの受け付け
世界で普及している後払い決済方法である Affirm を受け付ける方法をご紹介します。
Stripe ユーザーは、Payment Intents API (サポートされている方法を使用して支払いを作成する単一の導入パス) を使用して、以下の国の顧客からの Affirm による支払いを受け付けることができます。
- カナダ
- アメリカ
Web サイトでの Affirm による支払いの受け付けは、以下のように構成されます。
- 支払いを追跡するオブジェクトを作成する
- 支払い方法の詳細を収集する
- 支払いを Stripe に送信して処理する
- Affirm リダイレクトと関連する Webhook イベントを処理する
PaymentIntent を作成するサーバー側
PaymentIntent (支払いインテント) は、顧客から支払いを回収する意図を表すオブジェクトで、決済プロセスのライフサイクルの各段階を追跡します。
まず、サーバーで PaymentIntent
を作成し、回収する金額と通貨を指定します。すでに Payment Intents API を使用した実装がある場合は、affirm を PaymentIntent
の支払い方法のタイプのリストに追加します。
また Payment Element を使用して、支払い方法をダッシュボードで管理することもできます。Stripe は取引額、通貨、決済フローなどの要素に基づいて、適切な支払い方法が返されるように処理します。詳細については、支払いを受け付けるをご覧ください。
client secret を取得する
PaymentIntent には、client secret が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。
支払い方法の詳細を収集して送信するクライアント側
顧客が Affirm での支払いをクリックしたときは、Stripe.js を使用してその支払いを Stripe に送信することをお勧めします。Stripe.js は、決済フローを構築するための Stripe の基本的な JavaScript ライブラリです。これにより、実装に関する複雑な処理が自動的に行われ、今後、実装を他の支払い方法にも簡単に拡張できます。
Stripe.js スクリプトを決済ページに含めるには、このスクリプトを HTML ファイルの head に追加します。
<head> <title>Checkout</title> <script src="https://js.stripe.com/v3/"></script> </head>
決済ページで以下の JavaScript を使用して、Stripe.js のインスタンスを作成します。
// Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys var stripe = Stripe(
);'pk_test_TYooMQauvdEDq54NiTphI7jx'
PaymentIntent オブジェクト全体をクライアントに送信する代わりに、ステップ 1 で作成したその client secret を使用します。これは、Stripe API リクエストを認証する API キーとは異なります。
client secret は支払いを完了できるため、慎重に取り扱う必要があります。記録したり、URL に埋め込んだり、当該の顧客以外に漏洩することがないようにしてください。
その他の詳細情報による支払い成功率の向上
Shipping (配送先) と Billing (請求先) の詳細は必須ではありませんが、購入完了率の向上のために渡すことをお勧めします。
この組み込みガイドでは、顧客が支払い方法を選択した後に配送先と請求先の情報をクライアントに渡すことが推奨されています。
これらのフィールドを渡す場合、配送先住所の line1
、city
、state
、postal_
、country
には有効なデータを含める必要があります。同様に、指定されている場合は、請求先の詳細の line1
、city
、state
、postal_
、country
のすべてにも有効なデータを含める必要があります。
PaymentIntent を確定する
stripe.
を使用し、ページからのリダイレクトを処理して支払いを完了します。この関数に return_url を渡して、ユーザーが Affirm のウェブサイトまたはモバイルアプリで支払いを完了した後に Stripe がユーザーをリダイレクトする場所を指定する必要があります。
Affirm の支払いページで、顧客は使用可能な支払いオプションを選択します。詳細については、概要ページをご覧ください。Affirm 支払いページで支払いオプションを制限したり、事前に選択したりすることはできません。この選択を消費者に任せることで、取引の機会が最大化されます。
// Redirects away from the client stripe.confirmAffirmPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { // Billing information is optional but recommended to pass in. billing_details: { email: 'jenny@rosen.com', name: 'Jenny Rosen', address: { line1: '1234 Main Street', city: 'San Francisco', state: 'CA', country: 'US', postal_code: '94111', }, }, }, // Shipping information is optional but recommended to pass in. shipping: { name: 'Jenny Rosen', address: { line1: '1234 Main Street', city: 'San Francisco', state: 'CA', country: 'US', postal_code: '94111', }, }, // Return URL where the customer should be redirected after the authorization. return_url: 'https://example.com/checkout/complete', } ).then(function(result) { if (result.error) { // Inform the customer that there was an error. console.log(result.error.message); } });
顧客が支払いを送信すると、Stripe は顧客を return_
にリダイレクトし、以下の URL クエリーパラメーターを含めます。返品ページでは、これらを使用して PaymentIntent のステータスを取得し、顧客に支払いステータスを表示できます。
return_
を指定する際に、返品ページで使用する独自のクエリパラメーターを追加することもできます。
パラメーター | 説明 |
---|---|
payment_ | PaymentIntent の一意の識別子。 |
payment_ | The client secret of the PaymentIntent object. For subscription integrations, this client_secret is also exposed on the Invoice object via confirmation_ |
顧客が自社のサイトにリダイレクトされたら、payment_
を使用して PaymentIntent をクエリし、顧客に取引ステータスを表示できます。
Affirm の組み込みをテストする
テスト API キーを使用して Affirm の組み込みをテストするには、リダイレクトページを表示します。リダイレクトページで支払いを認証することにより、支払い成功のケースをテストできます。PaymentIntent は requires_
から succeeded
に変化します。
ユーザーが認証に失敗するケースをテストするには、テスト API キーを使用してリダイレクトページを表示します。リダイレクトページの左上隅にある X をクリックします。PaymentIntent は、requires_
から requires_
に移行します。
Affirm サンドボックスにリダイレクトされると、Affirm によって SSN の末尾 4 桁が求められることがあります。Affirm Sandboxは、'0000'
または '5678'
の使用を提案します。
失敗した支払い
Affirm では、取引を受け付けるか拒否するかを決定するときに複数の要素が考慮されます (買い手が Affirm を使用している期間、顧客が返済する必要のある未払い額、現在の注文額など)。
Affirm による支払いは他の多くの支払い方法と比較して支払いの拒否率が高いため、決済フローには常に card
などの他の支払いオプションを提示してください。状況に従って、PaymentMethod (支払い方法) の関連付けが解除され、PaymentIntent (支払いインテント) オブジェクトのステータスが自動的に requires_
に変わります。
支払いが拒否された場合を除き、Affirm の PaymentIntent (支払いインテント) のステータスが requires_
の場合、Affirm のサイトにリダイレクトされてから 12 時間以内に顧客は支払いを完了する必要があります。12 時間経過してもアクションが実行されない場合、PaymentMethod (決済手段) は解除され、PaymentIntent オブジェクトのステータスは自動的に requires_
に移行します。
このようなケースでは、決済フローに表示される別の支払いオプションで再試行するように顧客に通知します。
エラーコード
一般的なエラーコードと対応する推奨アクションは次のとおりです。
エラーコード | 推奨アクション |
---|---|
payment_ | Affirm の決済が失敗したことを示す一般的なエラー。請求結果の理由で追加の情報が提供される場合があります。 |
payment_ | Affirm が顧客の支払いを拒否しました。次のステップとして、顧客から Affirm に詳細を問い合わせる必要があります。 |
payment_ | 顧客が Affirm の決済ページで支払いを完了しておらず、支払いセッションの期限が切れています。Stripe は、最初の決済フローの作成から 12 時間が経過しても正常にオーソリされなかった Payment Intents を自動的に期限切れにします。 |
payment_ | Affirm でサービス関連のエラーが発生したため、リクエストを完了できません。後で再試行してください。 |
amount_ | Affirm のデフォルトの取引限度額 内の金額を入力します。 |
amount_ | Affirm のデフォルトの取引限度額 内の金額を入力します。 |
エラーによっては、請求結果の理由に追加の分析情報が含まれている場合があります。
結果の理由 | 意味 |
---|---|
generic_ | 決済エラーのデフォルトの結果理由。通常、これは提携金融機関が支払いを拒否した (残高不足など)、カード発行会社が支払いを拒否した、取引にリスクの高い購入が含まれていたなどの理由を示します。このような場合、Stripe は必ずしも支払い拒否の理由を受け取るとは限りません。 |
affirm_ | 顧客が Affirm での決済を明示的にキャンセルしたか、または Affirm が顧客はローン対象資格に該当しないと判断しました。Stripe では、これら 2 種類のイベントの違いを区別できません。 |