Multibanco による決算を受け付ける
Multibanco による支払い方法を受け付ける方法をご紹介します。
注意
サーバー側での手動確定を使用する必要がある場合、またはお使いの実装で決済手段を別途表示する必要がある場合を除き、決済を受け付けるガイドに従うことをお勧めします。すでに Elements との連携が完了している場合は、Payment Element 移行ガイドをご覧ください。
Multibanco は、ポルトガルにおける店舗支払いに基づく決済手段です。ビジネスがヨーロッパまたはアメリカを拠点にしている場合、Payment Intents API を使用して、ポルトガルの顧客から Multibanco による決済を受け付けることができます。
取引を完了するために、顧客は Multibanco の法人番号と参照番号が記載された支払い票を受け取ります。顧客はこれらの店舗支払いの詳細を使用して、オンラインバンキングまたは ATM での決済フロー以外の支払いを行います。
顧客が Multibanco の取引詳細に応じて支払いを行う際、銀行振込が開始されるため、支払いの確定が数日遅れる場合があります。銀行振込は特に週末に遅延が発生することがあります。これは支払い確定の遅延の一因になります。
Stripe を設定するサーバ側クライアント側
まず、Stripe アカウントが必要です。今すぐ登録してください。
サーバ側
この組み込みには、サーバ上に Stripe API と通信するエンドポイントが必要です。サーバから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。
クライアント側
Stripe iOS SDK はオープンソースです。詳細なドキュメントが提供されており、iOS 13 以降をサポートするアプリと互換性があります。
注
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases (リリース) ページをご覧ください。リポジトリのリリースをウォッチして、新しいリリースの公開時に通知を受け取ることも可能です。
アプリの起動時に Stripe 公開可能キーを使用して SDK を設定します。これにより、アプリが Stripe API にリクエストを送信できるようになります。
PaymentIntent を作成するサーバー側クライアント側
Stripe は PaymentIntent オブジェクトを使用して、顧客から支払いを回収するお客様の意図を示し、Multibanco 支払い票の作成から支払いの完了までの状態の変化を追跡します。
サーバー側
金額と eur
通貨 (Multibanco は他の通貨には対応していません) を指定して、サーバー上に PaymentIntent を作成します。Payment Intents API を使用した組み込みをすでにお持ちの場合には、multibanco
を PaymentIntent の決済手段タイプのリストに追加します。
返される PaymentIntent には client secret が含まれ、これは PaymentIntent の確定に使用されます。次のステップで使用できるように、クライアントに client secret を送り返します。
クライアント側
クライアント側で、サーバーの PaymentIntent をリクエストし、その client secret を保存します。
Stripe への支払いの送信クライアント側
作成した PaymentIntent オブジェクトの client secret を指定して、STPPaymentHandler confirmPayment を呼び出し、顧客の請求先情報を送信します。これにより、Multibanco の取引詳細を表示する Webview が表示されます。その後、支払いの結果とともに完了ブロックが呼び出されます。
Stripe は、Multibanco の支払い票が正常に作成されると、payment_intent.requires_action イベントを送信します。支払い手順へのリンクをメールで送信する必要がある場合は、payment_intent.next_action.multibanco_display_details.hosted_voucher_url の hosted_
に記載されています。
支払い後のイベントを処理するサーバー側
Multibanco は、遅延通知の決済手段です。顧客は、オンラインバンキングまたは ATM での決済フローの外部で、Multibanco の取引詳細に応じて支払いを行います。
Multibanco による支払いが完了すると、Stripe は payment_intent.succeeded イベントを送信します。ダッシュボードを使用してまたは webhook ハンドラを構築して、これらのイベントを受信し、顧客への注文確認メールの送信、データベースへの販売の記録、配送ワークフローの開始などのアクションを実行します。
Multibanco の有効期限について説明します。
イベント | 説明 | 次のステップ |
---|---|---|
payment_ | Multibanco の支払い票が正常に作成されました。 | 顧客が Multibanco で支払うのを待ちます。 |
payment_ | 顧客は Multibanco で支払いができなくなりました。 | 開始された決済の成功または失敗の結果を待ちます。 |
payment_ | 顧客は Multibanco で支払いました。 | 顧客が購入した商品またはサービスのフルフィルメントを行います。 |
payment_ | 顧客は Multibanco で支払いませんでした。 | 顧客にメールまたはプッシュ通知で連絡し、別の支払い方法をリクエストします。 |
イベントを受信して、ビジネスアクションを実行する
手動
Stripe ダッシュボードを使用して、Stripe のすべての支払いの確認、メールによる領収書の送信、入金処理、失敗した支払いの再試行を行います。
カスタムコード
Webhook ハンドラを構築してイベントをリッスンし、非同期型のカスタムの決済フローを作成します。Stripe CLI を使用して、ローカルで Webhook の実装のテストとデバッグを行います。
カスタム Webhook を作成する方法をご紹介します。
実装をテストする
サンドボックスで、STPPaymentHandler confirmPayment を呼び出すときに STPPaymentMethodBillingDetails email に次の値を設定して、さまざまなシナリオをテストします。
メール | 説明 |
---|---|
| 顧客が支払う Multibanco のバウチャーをシミュレーションします。約 3 分後に 例: jenny#example.com |
| 顧客が即座に支払う Multibanco のバウチャーをシミュレーションします。数秒以内に 例: succeed_immediately@example.com |
| すぐに有効期限が切れる Multibanco のバウチャーをシミュレーションします。 例: expire_immediately@example.com |
| 顧客が支払う前に有効期限が切れる Multibanco のバウチャーをシミュレーションします。約 3 分後に 例: expire_with_delay@example.com |
| 成功しない Multibanco の支払い票をシミュレーションします。 例: fill_never@example.com |
有効期限
Multibanco の支払い票の有効期限は、next_action.multibanco_display_details.expires_at にある expires_
UNIX タイムスタンプに記載されています。これは支払い票が作成されてから 7 日後です。有効期限が切れると、顧客は Multibanco で支払うことができなくなります。有効期限が過ぎると、PaymentIntent のステータスは requires_
から processing
に移行し、Stripe は payment_intent.processing イベントを送信します。
PaymentIntent では、銀行振込の遅延にる支払い完了通知の遅延の可能性を考慮して、最大 4 日間のバッファ期間中は processing
ステータスのままになります。バッファ期間内に Multibanco による支払いが完了しない場合、PaymentIntent のステータスは requires_
に移行し、Stripe は payment_intent.payment_failed イベントを送信します。バッファ期間後に顧客の資金を受け取ると、Stripe は誤った支払い金額の返金プロセスを自動的に開始します。
キャンセル
PaymentIntent をキャンセルを使用して、Multibanco の支払い票をキャンセルできます。キャンセル後に、Stripe は payment_intent.canceled イベントを送信します。
キャンセルされた Multibanco のバウチャーに応じた顧客の資金を受け取った場合、Stripe は誤った支払い金額の返金プロセスを自動的に開始します。
注
保留中の決済をキャンセルすると、元のバウチャーの指示は無効になります。保留中の Multibanco による決済をキャンセルするときは、顧客に通知します。
ステータスが requires_
の PaymentIntent を正常に再確定すると、Stripe は新しいバウチャーの手順と新しい hosted_
を作成します。これらを顧客に提示する必要があります。
返金
Multibanco による返金についてご紹介します。