Swish 決済招待のみ
スウェーデンで広く普及している支払い方法である Swish を受け付ける方法をご紹介します。
Swish は、スウェーデンで使用されている 1 回限りの使用の支払い方法です。顧客は Swish モバイルアプリとスウェーデンの BankID モバイルアプリを使用して、支払いの認証と承認を行うことができます。
支払いが成功したか失敗したかに関する即時通知を受け取ります。
必要な通知
Swish の規則に準拠するには、顧客が Swish 支払いを承認する前に、決済フローの画面に以下のテキストを表示する必要があります。
- 英語の場合: “Stripe Technology Europe Limited (“Stripe”) has acquired the claim for payment. Therefore your payment will be made to Stripe.”
- スウェーデン語の場合: “Stripe Technology Europe Limited (“Stripe”) har övertagit fordran på betalning. Din betalning görs därför till Stripe.”
- 他の言語の場合、上記の翻訳文。
Checkout や Payment Element、Stripe がホストする決済フォームや UI コンポーネントから Swish を導入する場合、Stripe はこの通知を表示します。
Stripe を設定するサーバー側
アプリケーションから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。
PaymentIntent を作成するサーバー側
PaymentIntent (支払いインテント) は、顧客から支払いを回収する意図を表すオブジェクトであり、支払いプロセスのライフサイクルの各段階を追跡します。まず、サーバーで PaymentIntent
を作成し、回収する金額と通貨を指定します。すでに Payment Intents API を使用した実装がある場合は、swish
を PaymentIntent
の支払い方法タイプのリストに追加します。
注
Swish アプリケーションで顧客に表示される注文参照情報を設定できます。
レスポンス
{ "id": "pi_12345", "amount": 6000, "client_secret": "pi_12345_secret_abcdef", "currency": "sek", "payment_method": "pm_12345", "payment_method_types": [ "swish" ], "payment_method_options": { "swish": { "reference": "Order-123", }, }, "status": "requires_confirmation" }
client secret を取得する
PaymentIntent には、client secret が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。
PaymentIntent を確定する
PaymentIntent を確定するには、ステップ 2 の PaymentIntent の id を使用します。これにより、指定された 支払い方法で顧客が支払うことを宣言します。PaymentIntent が確定されると、支払いが開始されます。return_url は、ユーザーが支払いを完了した後に Stripe がユーザーをリダイレクトする場所を示します。
Payment Intent を確定して、Swish 決済を開始します。顧客が支払いを完了した後にリダイレクトされる return_
を指定します。
レスポンス
{ "id": "pi_12345", "amount": 6000, "currency": "sek", "payment_method": "pm_12345", "next_action": { "swish_handle_redirect_or_display_qr_code": { "hosted_instructions_url": "https://stripe.com/hiu-pi_123", "qr_code": { "data": "abc123", "image_url_png": "https://qr.stripe.com/qr_123.png", "image_url_svg": "https://qr.stripe.com/qr_123.svg" } }, "type": "swish_handle_redirect_or_display_qr_code" }, "payment_method_types": [ "swish" ], "payment_method_options": { "swish": { "reference": "Order-123", }, }, "status": "requires_action" }
支払いを承認するには、顧客を next_action[swish_handle_redirect_or_display_qr_code][hosted_instructions_url] フィールドの URL にリダイレクトするか、このページを iframe に読み込みます。このページには、Swish アプリにリダイレクトする QR コードとボタンの両方が表示されます。
デスクトップユーザーは、Swish アプリを使用して QR コードをスキャンして、支払いを承認することができます。
モバイルデバイスのユーザーはボタンをクリックすると Swish アプリにリダイレクトされるので、そこで支払いを承認できます。
注
顧客が 3 分以内に Swish アプリで支払いを承認しない場合、支払いは失敗になり、Payment Intent は requires_
に移行します。
注文のフルフィルメントを実行するサーバー側
Webhook などを使用して、注文のフルフィルメントを処理します。顧客が支払いを完了すると、PaymentIntent
のステータスが succeeded
に移行し、payment_intent.succeeded の Webhook イベントを送信します。顧客が支払いを行わない場合、PaymentIntent
は、payment_intent.payment_failed の Webhook イベントを送信し、requires_
ステータスに戻ります。
失敗した支払い
Swish は複数のデータポイントを使用して、取引を拒否する状況を判断します (たとえば、顧客の銀行口座に十分な残高がない場合や、顧客がアプリでキャンセルをクリックした場合など)。
このケースでは、PaymentMethod は切り離され、PaymentIntent オブジェクトのステータスは自動的に requires_
に移行します。
支払いが拒否された場合を除き、Swish の PaymentIntent (支払いインテント) が requires_
ステータスである場合、顧客は 3 分以内に支払いを完了する必要があります。3 分経過してもアクションが行われない場合、PaymentMethod (支払い方法) の関連付けが解除され、PaymentIntent オブジェクトのステータスは自動的に requires_
に移行します。