インドの継続支払いベータ
RBI の電子同意書に対応するために組み込みを更新する方法をご紹介します。
インド準備銀行 (RBI) は、インドで発行されたカードでの継続支払いに対するセキュリティ対策を強化する対策を導入する指令を発布しました (その後、2020 年 12 月および 2021 年 3 月に改正)。以下のような対策が導入されています。
- 銀行/発行会社は、カード保有者を登録し、3D セキュア (3DS) などの追加要素認証 (AFA) を使用して 1 回限りのプロセスで電子同意書を作成する必要があります。
- 銀行/発行会社は、支払いが行われる 24 時間以上前にカード保有者に通知して、取引をオプトアウトできるようにする必要があります。
- 15,000 INR (または他の通貨での相当額) を超える継続取引では、毎回 AFA を使用する必要があります。
インド所在の Stripe ユーザーまたは国際的な (IN 以外の) Stripe ユーザーのビジネスは、インドのカードを以下の目的で使用する顧客が存在する場合に影響を受けます。
- オフセッション支払い
collection_
がmethod charge_
に設定されているサブスクリプションまたは請求書automatically
電子同意書を使用する支払いの仕組み
Stripe は、パートナープラットフォームと連携して、電子同意書の登録と顧客への引き落としの事前通知の送信をサポートしています。
注
現時点では、メキシコと日本の Stripe ユーザーは電子同意書をご利用いただけません。
Stripe の導入方法によっては、同意書を設定するための追加情報を Stripe に送信しなければならない場合があります。顧客が同意書を登録するには、AFA (3DS) を実行する必要があります。
サブスクリプションの後続のオフセッション支払いや自動引き落としについては重大な変更があります。実際の支払いの 24 時間以上前に、正確な引き落とし金額が記載された引き落としの事前通知が顧客に届いていなければなりません。引き落としの事前通知には、支払いに関する情報と、同意書をキャンセルするオプションが記載されます。支払い額が 15,000 INR または同意書の最大金額を超える場合は、引き落としの事前通知にリンクが記載され、そのリンクから AFA (3DS) を実行して支払いを承認します。
Stripe は、パートナープラットフォームと提携しているため、支払いリクエストの受信後、26 時間待機してから顧客に請求します (26 時間前の事前通知が必要となるダウンストリームでの問題の発生に備えて調整時間を追加します)。そのため、Stripe は支払いの回収を 26 時間延期します。
オフセッションの支払いの同意書がない場合、支払いは拒否されます。
実装
RBI 規制は、collection_
を使用してインドで発行されたカードに請求するするサブスクリプションに影響します。
サブスクリプションの作成
新しいサブスクリプションを作成する方法については、サブスクリプションの実装を構築するをご覧ください。
サブスクリプションの売上回収
Stripe は、失敗した支払いの回収に対応する自動回収機能を多数提供しています。このような支払いの失敗を自社で処理する場合は、継続支払いの失敗を処理するカスタムの方法を構築するのガイドをご覧ください。自社での処理を行わない場合は、以下の推奨事項のリストをご覧ください。
注
インドで発行されたカードによる支払いは、一度だけ試行されます。この動作は、支払い再試行の設定による影響を受けません。インドで発行されたカードによる支払いが失敗した場合でも、サブスクリプションと請求書のステータスは、 「支払いの再試行がすべて失敗した場合」のサブスクリプションおよびメールの設定に基づき、更新されます。
3D セキュアのメール
サブスクリプションの更新時にデフォルトの支払い方法に同意書が存在しない場合、Stripe は新しい同意書を作成しようとします。同意書を登録するには、顧客は、AFA (3DS) を完了する必要があります。サブスクリプションおよびメールの設定 で Send a Stripe-hosted link for customers to confirm their payments when required
を有効にして、必要に応じて顧客をオンセッションに戻し、認証を完了できるようにしてください。
注
サブスクリプションで現在使用されている同意書が inactive
である場合、Stripe は新しい同意書の作成はしません。
失敗した支払いを管理する
サブスクリプションの支払いが失敗して、サブスクリプションが一時停止されたときの顧客への通知を有効にすることをお勧めします。サブスクリプションおよびメールの設定で有効にすると、Stripe は、失敗したカードの支払い方法の更新を求めるメールを顧客に送信できます。
同意書の作成
Stripe によって同意書が自動的に作成されるようにしている場合、同意書の詳細は請求書の基盤となる PaymentIntent と対応する Charge で返されます。また、トライアルを含むサブスクリプションを作成している場合には SetupIntent で返されます。
以下のいずれかに該当する場合、Stripe は同意書 ID を返しません。
- カードがインドで発行されたカードではない。
- 同意書の通貨が、カード発行会社または Stripe アカウントの国でサポートされていない。
- インドで発行されたカードが Visa でも Mastercard でもない。Stripe は、この 2 つのカードブランドでのみ同意書をサポートしています。
Stripe は、すべてのビジネスで INR の同意書をサポートします。以下の通貨は、国際的な (IN 以外の) ビジネスでのみサポートされています。
- USD
- EUR
- GBP
- SGD
- CAD
- CHF
- SEK
- AED
- JPY
- NOK
- MYR
- HKD
インドには、100 以上のカード発行銀行/会社があり、新しい要件のすべてに対応するためのプロセスには時間がかかると思われます。カード発行元が、まだ特定の通貨で電子同意書に対応していない場合があります。その場合は、Stripe は同意書 ID を返しません。
同意書のステータスとトラブルシューティング
Stripe が同意書を作成できない場合は、別のカードの使用を提案するか、サブスクリプションの send_
として collection_method を設定するなどの別のオプションを提供することができます。
また、顧客が同意書をキャンセルした場合などには、有効だった同意書が無効になることがあります。この場合、同意書は inactive
になり、Stripe から mandate.
イベントが送信されます。
Webhook の受信について、詳細は Webhook を受信するためのステップをご覧ください。
サブスクリプションの更新
銀行が送信する引き落としの事前通知は、少なくともビジネスの名前、取引金額、引き落としの日付または時刻、同意書の参照番号、引き落としの理由をカード保有者に通知するものです。混乱や支払い拒否を防止するために、同意書の詳細が顧客に対する実際の引き落としの内容と一致していることを確認してください。
Stripe によってサブスクリプションの同意書が自動的に作成される場合に、サブスクリプションを更新するには、顧客をオンセッションに戻して元のサブスクリプションをキャンセルすることをお勧めします。そうすると、以下のシナリオで新しいサブスクリプションが作成され、サブスクリプションの詳細が正確に反映された新しい同意書が作成されます。
- サブスクリプションの請求期間の変更
- 顧客が更新のたびに支払いを承認しなくても済むようにするサブスクリプションのアップグレード。コンテキストとして、Stripe は、デフォルトで
amount_
を指定して同意書を作成します。type=maximum amount_
を指定すると、最大金額を超える金額を顧客に請求できます。ただし、type=maximum mandate_
または 15,000 INR (どちらか少ない方の金額) を超える金額の支払いは、顧客による承認が必要です。options[amount]
例:
amount_
、type=maximum amount=100000
を設定している場合は、顧客が 1,000 INR 以上の金額を認証する必要があります。amount=2000000
を設定している場合、15,000 INR 以上の金額では顧客による認証が必要になります。
引き落としの事前通知
オフセッションの PaymentIntent が確定されると、カード発行会社は、引き落としの事前通知を顧客に送信します。PaymentIntent は、引き落としの事前通知の期間全体 (26 時間) にわたって processing
ステータスに移行し、キャンセルすることはできません。
{ "object": "payment_intent", ... "processing": { "card": { "customer_notification": { "approval_requested": true, "completes_at": 1677307005 } }, "type": "card" }, ... "status": "processing", ... }
processing.card.customer_notification.approval_requested が true
である場合、顧客は、カード発行会社から送信された引き落としの事前通知を使用して支払いを認証する必要があります。
processing.card.customer_notification.completes_at 属性は、Stripe がカードへの請求を試行する時刻を指定します。顧客の承認が必要な支払いが正常に処理された場合、顧客は、指定された時刻までに支払いを認証する必要があります。
エラーおよび拒否コード
以下のシナリオではエラーコード が返されます。
エラーコード | 説明 |
---|---|
payment_ | 無効な同意書を使用して継続支払いを試行するとこのコードが返されます。支払いを試行する前に同意書のステータスを確認することで、これを防ぐことができます。 |
india_ | 無効な同意書を使用して継続支払いを試行するとこのコードが返されます。この時点で同意書がキャンセルされていることのみが明らかな場合に、発生する可能性があります。 |
processing_ | (通常は一時的な) 処理中のエラーが見つかると、このコードが返されます。 |
電子同意書では、特定の拒否コードに、一般的なシナリオよりも具体的な説明が含まれる可能性が高くなります。
拒否コード | 説明 |
---|---|
transaction_ | 顧客が自動引き落としの権限を一時停止したか、必要な時点で支払いを認証していない場合に、後続の支払いを試行するとこのコードが返されます。 |
テスト
これらのテストカード番号を使用して、さまざまなシナリオをシミュレーションすることができます。
テスト環境では、オフセッションの PaymentIntent が processing
ステータスから移行するまでに約 15 分かかります。初回の支払い用のオンセッションの PaymentIntent が processing
ステータスになることはありません。
制限事項
以下の制限事項にご注意ください。