Multibanco による決算を受け付ける
Multibanco による支払い方法を受け付ける方法をご紹介します。
注意
サーバー側での手動確定を使用する必要がある場合、またはお使いの実装で決済手段を別途表示する必要がある場合を除き、決済を受け付けるガイドに従うことをお勧めします。すでに Elements との連携が完了している場合は、Payment Element 移行ガイドをご覧ください。
Multibanco は、ポルトガルにおける店舗支払いに基づく決済手段です。ビジネスがヨーロッパまたはアメリカを拠点にしている場合、Payment Intents API を使用して、ポルトガルの顧客から Multibanco による決済を受け付けることができます。
取引を完了するために、顧客は Multibanco の法人番号と参照番号が記載された支払い票を受け取ります。顧客はこれらの店舗支払いの詳細を使用して、オンラインバンキングまたは ATM での決済フロー以外の支払いを行います。
顧客が Multibanco の取引詳細に応じて支払いを行う際、銀行振込が開始されるため、支払いの確定が数日遅れる場合があります。銀行振込は特に週末に遅延が発生することがあります。これは支払い確定の遅延の一因になります。
PaymentIntent を作成するサーバー側
Stripe は PaymentIntent オブジェクトを使用して、顧客から支払いを回収するお客様の意図を示し、Multibanco 支払い票の作成から支払いの完了までの状態の変化を追跡します。
金額と eur
通貨 (Multibanco は他の通貨には対応していません) を指定して、サーバー上に PaymentIntent を作成します。Payment Intents API を使用した組み込みをすでにお持ちの場合には、multibanco
を PaymentIntent の決済手段タイプのリストに追加します。
client secret を取得する
PaymentIntent には、client secret が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。
支払い方法の詳細を収集するクライアント側
クライアントで支払いフォームを作成し、必要な請求先情報を顧客から収集します。
フィールド | 値 |
---|---|
email | 顧客のメールアドレス。 |
<form id="payment-form"> <div class="form-row"> <label for="email"> Email </label> <input id="email" name="email" required /> </div> <!-- Used to display form errors. --> <div id="error-message" role="alert"></div> <button id="submit-button">Pay with Multibanco</button> </form>
Stripe への支払いの送信クライアント側
顧客が Multibanco による決済をクリックしたら、Stripe.js を使用してその支払いを Stripe に送信します。Stripe.js は、支払いフローを構築するための Stripe の基本的な JavaScript ライブラリです。
Stripe.js スクリプトを決済ページに含めるには、このスクリプトを HTML ファイルの head
に追加します。
<head> <title>Checkout</title> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>
以下の JavaScript で Stripe.js のインスタンスをチェックアウトページに作成します。
// Set your publishable key. Remember to switch to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
);'pk_test_TYooMQauvdEDq54NiTphI7jx'
作成した PaymentIntent オブジェクトの client secret を指定して、stripe.confirmMultibancoPayment を呼び出し、顧客の請求先情報を送信します。
確定されると、Stripe はモーダルを自動的に開き、顧客に Multibanco の取引詳細を表示します。
const form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const result = await stripe.confirmMultibancoPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { billing_details: { email: document.getElementById('email').value, }, }, }); // Stripe.js will open a modal to display the Multibanco voucher to your customer // This async function finishes when the customer closes the modal if (result.error) { // Display error to your customer const errorMsg = document.getElementById('error-message'); errorMsg.innerText = result.error.message; } });
注
stripe.
の完了には数秒かかる場合があります。この間、フォームが再送信されないように無効化し、スピナーのような待機中のインジケーターを表示します。エラーが発生した場合は、それを顧客に表示し、フォームを再度有効化し、待機中のインジケーターを非表示にします。
Multibanco の取引詳細が正常に作成されると、返された PaymentIntent の status
プロパティの値が requires_
になります。ダッシュボードまたはオブジェクトのステータスプロパティを調べて、PaymentIntent のステータスを確認します。Multibanco の取引詳細が正常に作成されなかった場合は、返された error
を調べて原因を特定します (メールアドレス形式が無効であるなど)。
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 を作成する方法をご紹介します。
実装をテストする
サンドボックスで、stripe.confirmMultibancoPayment を呼び出すときに payment_
に次の値を設定して、さまざまなシナリオをテストします。
メール | 説明 |
---|---|
| 顧客が支払う 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 による返金についてご紹介します。