インドの電子同意書を導入する
このガイドでは、Stripe Invoicing を使用して 1 回限りの支払いのインドの電子同意書を生成し、使用する方法の概要を説明します。現時点では、インドの電子同意書の実装には API のみを使用できます。
オフセッションという用語は、顧客が直接介入せずに行われる支払いを表す用語として使用されます。この種の支払いでは、あらかじめ収集しておいた顧客の支払い情報が使用されます。オンセッション支払いはこれとは異なり、顧客が支払いに直接介入して行われます。オンセッション支払いは、顧客がユーザーインターフェイスを使用するか、3D Secure (3DS) などの 2 段階認証フローを完了して行われます。
同意書を生成する
同意書を生成するには、顧客がサインインしているときに、決済手段 ID と同意書の詳細が含まれる SetupIntent を作成するための呼び出しを行います。
注
SetupIntent を作成するリクエストを送信する際は、開始日を本日から 1 日以内のタイムスタンプにする必要があります。
SetupIntent を作成した後、Payment Element を使用して、顧客の決済情報を収集し、支払いの事前設定を行います。stripe.confirmSetup を使用し、Payment Element によって収集された情報を使用して設定を完了します。
stripe.confirmSetup({ elements, confirmParams: { // Return URL where the customer should be redirected after the SetupIntent is confirmed. return_url: 'https://example.com', }, }) .then(function(result) { if (result.error) { // Inform the customer that there was an error. } });
SetupIntent は、確定されると requires_action
ステータスに移行し、next_action
プロパティには、支払いの完了に必要なアクションが示されます。
{ "payment_method_options": { "card" : { "mandate_options" : { "reference" : "{{REFRENCE}}", "description" : "{{DESCRIPTION}}", "amount" : "{{AMOUNT}}", "currency" : "inr", "type" : "{{AMOUNT_TYPE}}", "start_date" : "{{START_DATE}}", "end_date" : "{{END_DATE}}", "interval" : "{{INTERVAL}}", "interval_count" : "{{INTERVAL_COUNT}}" } } }, "status": "requires_action", "next_action": { "type": "use_stripe_sdk", "use_stripe_sdk": { "type": "three_d_secure_redirect", "stripe_js": "https://hooks.stripe.com/redirect/authenticate/src_xxxxxxxxxxx", "source": "src_xxxxxxxx" } }, // Other existing SetupIntent params }
カード保有者が AFA (3DS) を正常に完了すると、SetupIntent は succeeded
ステータスに移行し、Stripe は同意書を作成します。この同意書は、SetupIntent
オブジェクトで使用できます。
{ "mandate": "{{MANDATE_ID}}", "payment_method_options": { "card" : { "mandate_options" : { "reference" : "{{REFRENCE}}", "description" : "{{DESCRIPTION}}", "amount" : "{{AMOUNT}}", "currency" : "inr", "type" : "{{AMOUNT_TYPE}}", "start_date" : "{{START_DATE}}", "end_date" : "{{END_DATE}}", "interval" : "{{INTERVAL}}", "interval_count" : "{{INTERVAL_COUNT}}" } } }, status: "succeeded", // Other existing SetupIntent params }
注
すべてのサブスクリプション登録リクエストに対して payment_method_options[card][mandate_options]
パラメーターを渡すことができます。ただし、顧客がサブスクリプションに使用しているカードがインド以外のカードである場合は、規制が適用されないため、Stripe はこれらのパラメーターを無視します。
同意書を使用して請求書を作成する
請求書を作成する際に、請求書のオフセッション支払いにデフォルトの同意書を設定できます。デフォルトの同意書を使用する場合は、対応する決済手段と default_payment_method
を設定することをお勧めします。
# Request to create an Invoice with a default mandate curl https://api.stripe.com/v1/invoices \ -u sk_test_123: \ -d customer=cus_xyz \ -d default_payment_method=pm_xxx \ -d payment_settings[default_mandate]=mandate_xyz
最終的に、この請求書ではこの決済手段でオフセッションの請求が試行される可能性があります。その理由は、請求書を自動的に処理されるように設定したか、Invoice Pay エンドポイントを使用して手動で処理したか、請求書の支払いインテントを確定したためです。請求書で顧客に対する請求が実行される場合、default_mandate
パラメーターと default_payment_method
パラメーターが連携して請求書に対するオフセッションの支払いが行われます。
同意書が有効であり、請求が金額と頻度に関する同意書の初期パラメーターの範囲内である限り、請求は正常に処理されます。Invoice Update (請求書の更新) エンドポイントを使用して、請求書に default_mandate
パラメーターと default_payment_method
パラメーターを設定することもできます。
同意書を使用して請求書の請求を行う
作成時に請求書で同意書を設定しない場合 (たとえば、同意書を収集していない場合)、同意書のライフサイクルの 2 ポイント後で指定できます。そのルートは、既存の Invoicing の組み込みの設定方法によって異なります。
また、Invoice Pay
エンドポイントを使用している場合は、最上位の mandate
パラメーターとして同意書を指定することができます。デフォルトの同意書を設定する場合と同様、同意書で使用する決済手段を明示的に指定します。
# Request to attempt payment on an open invoice with a mandate curl https://api.stripe.com/v1/invoices/in_aaa/pay \ -u sk_test_123: \ -d payment_method=pm_xxx \ -d mandate=mandate_xyz
同様に、同意書を使用して、請求書に関連付けられた支払いインテントを確認することができます。
# Request to retrieve the invoice's PaymentIntent ID curl https://api.stripe.com/v1/invoices/in_aaa \ -u sk_test_123: # Response to GET /v1/invoices/in_aaa { "id": "in_abc789", "status": "open", "payment_intent": "pi_zyx", # ... more fields } # Request to attempt invoice payment with a mandate by confirming the payment intent curl https://api.stripe.com/v1/payment_intents/pi_zyc012/confirm \ -u sk_test_123: \ -d mandate=mandate_xyz
通知と待機期間
請求が最終的に処理される前に、顧客は請求に関する通知を受け取ります。また、顧客は同意書を変更またはキャンセルすることもできます。26 時間が経過した後、金額が顧客のカードに請求され、請求書は paid
状態に移行します。