Sofort での支払いを受け付ける
ヨーロッパで一般的な支払い方法である Sofort を受け付ける方法をご紹介します。
警告
New businesses can’t accept SOFORT payments and our financial partners are in the process of discontinuing SOFORT. For more information, read our support page.
Sofort は 1 回限りの使用の、通知遅延型の支払い方法であり、顧客は支払いの認証を求められます。顧客が Sofort で支払う場合は、ウェブサイトから銀行のポータルにリダイレクトされ、そこで支払いの認証を行います。成功または失敗の通知を受け取るまでに、通常 2 〜 14 日かかります。
注
Sofort を受け付けるには、Sofort 利用規約に従う必要があります。
PaymentIntent を作成するサーバ側
PaymentIntent (支払いインテント) は、顧客から支払いを回収する意図を示し、支払いプロセスのライフサイクルを追跡します。サーバーで PaymentIntent
を作成し、回収する amount
と eur
通貨を指定します (Sofort は他の通貨に対応していません)。すでに Payment Intents のシステムがある場合は、支払い方法タイプのリストに sofort
を追加します。
使用言語の変更
デフォルトでは、Stripe は指定された国コードに基づいた言語で Sofort オーソリページを表示します。リクエストの一部として国コードを指定し、preferred_
プロパティの値を変更することで、オーソリページを顧客の希望言語にカスタマイズできます。サポートされている値は、de
、en
、es
、it
、fr
、nl
、および pl
です。
PaymentIntent オブジェクト全体をアプリに渡す代わりに、その client secret を返します。PaymentIntent の client secret は、支払い額などの機密情報の操作を許可することなく、クライアントで支払いを確定し、支払い情報の詳細を更新できる一意のキーです。
Stripe に支払いを送信するクライアント側
クライアント側で支払いを実行するには、PaymentIntent (支払いインテント) の client secret をクライアントアプリケーションに渡します。
リダイレクトを処理する
Stripe が顧客を return_
にリダイレクトする際に、以下の URL クエリパラメータが提供されます。
パラメータ | 説明 |
---|---|
payment_ | PaymentIntent の一意の識別子。 |
payment_ | PaymentIntent オブジェクトの client secret。 |
return_
を指定する際に、独自のクエリパラメータを追加することもできます。このクエリパラメータは、リダイレクトプロセスの始めから終わりまで存続します。return_
は、支払いのステータスを提供する Web サイトのページと一致している必要があります。戻りページをレンダリングするときに、PaymentIntent
のステータスを確認してください。確認するには、Stripe.js の retrievePaymentIntent
関数を使用し、payment_
を渡します。
(async () => { const url = new URL(window.location); const clientSecret = url.searchParams.get('payment_intent_client_secret'); const {paymentIntent, error} = await stripe.retrievePaymentIntent(clientSecret); if (error) { // Handle error } else if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment } })();
顧客が支払いの実行に使用した銀行口座の詳細は、payment_method_details で確認できます。
"payment_method_details": { "sofort": { "bank_code": "VAPE", "bank_name": "VAN DE PUT & CO", "bics": "VAPEBE22", "country": "DE", "iban_last4": "7061", "preferred_language": "en", "verified_name": "Jenny Rosen", }, "type": "sofort" }
リダイレクトプロセスをテストする
テスト API キーを使用して PaymentIntent (支払いインテント) オブジェクトを作成すると、API リクエストに関する情報を表示する Stripe ページにリダイレクトされ、そこで支払いをオーソリまたはキャンセルできます。支払いをオーソリすると、return_
で指定された URL にリダイレクトされます。
支払い後のイベントを処理する
Sofort は遅延通知型の支払い方法であるため、PaymentIntent のステータスは、作成から最大 14 日間 (カットオフ日とも呼ばれる)、payment_intent.processing 状態のままになります。テスト環境では、これをシミュレートするために、PaymentIntent のステータスが 3 分間処理中の状態のままとなります。
- Stripe では、処理中の状態の間に購入をフルフィルメントすることをお勧めします。平均して、処理中状態に入った後に Sofort の支払い試行が失敗する確率は 0.2% と予測されます。この方法は、Sofort の支払いの失敗率が低い Sofort にのみ適用でき、他の遅延通知型の支払い方法には適用できません。
- 必要に応じて、payment_intent.succeeded イベントを受け取った後にのみ注文をフルフィルメントすることもできます。Stripe では、支払いが確定され、売上が保証された後でこのイベントを送信します。
- 顧客が支払いを行わない場合、Stripe は payment_intent.failed イベントを送信し、PaymentIntent は
requires_
ステータスに戻ります。payment_ method
ダッシュボード、カスタム Webhook、またはパートナーソリューションを使用して、これらのイベントを受信し、顧客への注文確認メールの送信、データベースへの売上の記録、配送ワークフローの開始などのアクションを実行します。
手動
Stripe ダッシュボードは、すべての Stripe での支払いの確認、メール領収書の送信、入金処理、または失敗した支払いの再試行に使用できます。
カスタムコード
Webhook ハンドラを作成してイベントをリッスンし、非同期型のカスタムの支払いフローを作成します。Stripe CLI を使用して、ローカルで Webhook 組み込みのテストとデバッグを行います。
事前構築のアプリ
オートメーションやマーケティングとセールスなどの一般的なビジネスイベントを、パートナーアプリケーションとの連携によって処理します。
不審請求が申請された支払い
顧客が銀行で支払いを許可する必要があるため、不正使用や未認識の支払いのリスクは低くなります。このため、チャージバックに発展する不審請求の申請を受けて、Stripe アカウントから売上が引き出されることはありません。
支払いの失敗
カットオフ時間内に支払い処理が確定されなかった場合は、PaymentIntent (支払いインテント) オブジェクトのステータスが自動的に processing
から requires_
に移行します。また、売上がカットオフ日以降に受け取られた場合は、顧客に自動的に返金されます。
平均して、Sofort の支払い処理の約 0.2% が失敗すると予測されます。この数値は、業種や顧客ベースによって異なります。支払い平均額、取り扱う商品やサービスのタイプ、およびビジネスに付随するリスクによっては、payment_
イベントを受信してからのみ注文のフルフィルメントを行うようにすることもできます。
返金
Sofort は、元の支払い日から 180 日以内の返金リクエストのみを受け付けます。180 日を過ぎると、支払いの返金を実行できなくなります。
まだ確定されていない保留中の支払いに対して返金することができます。PaymentIntent のステータスが processing
の際に全額返金または一部返金を作成する場合、返金は PaymentIntent のステータスが succeeded
になるまで実行されません。支払いの試行が失敗した後の PaymentIntent のステータスが requires_
の場合、資金が顧客の銀行口座から移動していないため、全額返金および一部返金はキャンセルとしてマークされます。