PaymentIntents または SetupIntents を使用して、インドで発行されたカードでオフセッション支払いを作成する場合は、実装を更新する必要があります。
同意書を作成する
同意書を作成するには、(既存のパラメーターに加えて) 以下のパラメーターを PaymentIntent オブジェクトまたは SetupIntent オブジェクトに入力します。
パラメーター | 必須 | 説明 |
---|
payment_method_options[card][mandate_options][reference] | はい | 同意書またはサブスクリプションの一意の ID。 |
payment_method_options[card][mandate_options][description] | いいえ | 顧客に表示される同意書またはサブスクリプションの説明。渡されない場合、Stripe が {merchant_name} - {reference} を入力します。 |
payment_method_options[card][mandate_options][amount_type] | はい | fixed か、maximum のいずれか。fixed に設定されている場合、amount パラメーターは、以降の支払いで請求される正確な金額を参照します。maximum に設定されている場合は、最大金額を超える金額を顧客に請求できますが、最大金額または 15,000 INR (どちらか少ない方の金額) を超える金額の支払いでは AFA (3DS) を完了する必要があります。 |
payment_method_options[card][mandate_options][amount] | はい | 今後の支払いで請求される金額。 |
payment_method_options[card][mandate_options][currency] | はい | このパラメーターは、SetupIntents の専用です。将来の支払いの通貨を設定します。Stripe は、すべてのビジネスで INR の同意書をサポートします。以下の通貨は、国際的な (IN 以外の) ビジネスでのみサポートされます: USD、EUR、GBP、SGD、CAD、CHF、SEK、AED、JPY、NOK、MYR、HKD。 |
payment_method_options[card][mandate_options][start_date] | はい | 同意書またはサブスクリプションの開始日。Epoch タイムスタンプで指定します。開始日は本日以降にする必要があります。 |
payment_method_options[card][mandate_options][end_date] | いいえ | 同意書またはサブスクリプションの終了日。2051 年までの Epoch タイムスタンプで指定します。指定がない場合、同意書は、キャンセルされるまで有効なままになります。 |
payment_method_options[card][mandate_options][interval] | はい | 支払いの頻度を指定します。day 、week 、month 、year 、sporadic のいずれかです。 |
payment_method_options[card][mandate_options][interval_count] | いいえ | 支払いの間隔の回数。たとえば、interval=month および interval_count=3 は、3 カ月ごとに 1 回の支払いを示します。最大 1 年 (1 年、12 カ月、または 52 週) の間隔を指定できます。このパラメーターは、interval=sporadic の場合のみのオプションです。 |
payment_method_options[card][mandate_options][supported_types] | はい | この支払いでサポートされている同意書のタイプを指定する配列。指定できる値は、[‘india’] です。 |
注
すべてのリクエストに対して payment_method_options[card][mandate_options]
パラメーターを渡すことができます。ただし、顧客がインド以外で発行されたカードを使用している場合は、規制が適用されないため、Stripe はこれらのパラメーターを無視します。
支払われる金額が変動する場合は、amount_type=maximum
を指定して同意書を設定します。amount_type=fixed
同意書で定義されている金額を超える金額を顧客に請求することはできません。ただし、amount_type=maximum
を指定すると、最大金額を超える金額を請求できます。最大金額または 15,000 INR (どちらか少ない方の金額) を超える金額では AFA (3DS) を完了する必要があることに注意してください。
例:
amount_type=maximum
、amount=100000
を設定している場合、顧客は、1,000 INR を超える金額を認証する必要があります。amount=2000000
を設定している場合、顧客は、15,000 INR を超える金額を認証する必要があります。
curl https://api.stripe.com/v1/payment_intents \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:" \
-d amount=2000000 \
-d currency=inr \
-d customer= \
-d setup_future_usage=off_session \
-d "payment_method_types[]"=card \
-d "payment_method_options[card][mandate_options][reference]"={{REFERENCE}} \
-d "payment_method_options[card][mandate_options][description]"={{DESCRIPTION}} \
-d "payment_method_options[card][mandate_options][amount]"=2000000 \
-d "payment_method_options[card][mandate_options][start_date]"=1675238400 \
-d "payment_method_options[card][mandate_options][amount_type]"=maximum \
-d "payment_method_options[card][mandate_options][interval]"=month \
-d "payment_method_options[card][mandate_options][interval_count]"=1 \
-d "payment_method_options[card][mandate_options][supported_types][]"=india
決済手段を指定して PaymentIntent を確定すると、PaymentIntent は requires_action
ステータスに移行します。PaymentIntent が succeeded
ステータスに移行して、同意書が作成される前に、カード保有者は AFA (3DS) を完了する必要があります。電子同意書には完全な認証が必要であり、attempt_acknowledged
や処理エラーなどの結果は失敗として扱われます。
以下のいずれかに該当する場合、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 を返しません。
同意書 ID は、PaymentIntent の対応する Charge オブジェクト内にあります。Charge を取得する方法の詳細については、PaymentIntent で支払いを識別するをご覧ください。
{
"id": "ch_xxxxxxxxxxxxxxxxxxxxxxxx",
"object": "charge",
"payment_intent": "pi_xxxxxxxxxxxxxxxxxxxxxxxx",
"payment_method": "pm_xxxxxxxxxxxxxxxxxxxxxxxx",
"payment_method_details": {
"card": {
"brand": "visa",
"country": "IN",
"mandate": "mandate_xxxxxxxxxxxxxxxxxxxxxxxx",
...
},
...
"status": "succeeded",
...
}
同意書の Webhook
保存されている決済手段にオフセッションに請求する前に、mandate.updated
イベントをリッスンして、同意書が active
であることを確認します。
PaymentIntent または SetupIntent が status=succeeded
に移行しても、同意書がまだ active
にならない場合があります。Stripe は、pending
ステータスの Mandate オブジェクトを作成します。同意書が active
ステータスに移行すると、Stripe は、mandate.updated
イベントを送信します。稀に、本番環境で同意書が active
に移行するまでに最大 30 分かかることがあります。30 分経過しても同意書が active にならない場合は、同意書を使用できないと想定してください。
{
"object": {
"id": "mandate_xxxxxxxxxxxxxxxxxxxxxxxx",
"object": "mandate",
"customer_acceptance": {
"accepted_at": 1677301688,
"online": {
"ip_address": "xx.xxx.xx.xxx",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
},
"type": "online"
},
"livemode": false,
"multi_use": {
},
"payment_method": "pm_xxxxxxxxxxxxxxxxxxxxxxxx",
"payment_method_details": {
"card": {
},
"type": "card"
},
"status": "active",
"type": "multi_use"
},
"previous_attributes": {
"status": "pending"
}
}
同意書を作成できない場合は、別のカードの使用を提案するか、サイトで、またはオンライン請求ページへのリンクを使用してオンセッションで支払うなどの別のオプションを提供することができます。
Webhook の受信の詳細については、Webhook を受信するためのステップをご覧ください。
保存された決済手段に後で請求する
オフセッションで顧客に請求する準備ができたら、Customer、PaymentMethod ID、対応する同意書 ID を使用して、PaymentIntent を作成します。
curl https://api.stripe.com/v1/payment_intents \
-u "sk_test_4eC39HqLyjWDarjtT1zdp7dc
:" \
-d amount=2000000 \
-d currency=inr \
-d customer={{CUSTOMER_ID}} \
-d confirm=true \
-d "payment_method_types[]"=card \
-d payment_method={{PAYMENT_METHOD_ID}} \
-d mandate={{MANDATE_ID}} \
-d off_session=true
複製