# オンラインカード決済に対して、保留期間を延長する
オーソリの延長を使用して、オーソリ後、最長 30 日後にオンラインのカード支払いをキャプチャする方法をご紹介します。
# ホスト型ページ
> This is a ホスト型ページ for when platform is web and ui is stripe-hosted. View the full page at https://docs.stripe.com/payments/extended-authorization?platform=web&ui=stripe-hosted.
延長されたオーソリではオーソリの有効期間が長くなるため、標準のオーソリ有効期間よりも長く顧客の資金を保持できます。ほとんどのカードネットワークの場合、デフォルトのオーソリ有効期間は、オンライン決済の場合は 7 日間、対面の [Terminal](https://docs.stripe.com/terminal.md) 決済の場合は 2 日間ですが、カードネットワークによっては、有効期間を最大 30 日間まで延長できます。オーソリの有効期間について詳細は、[支払い方法の売上を保留](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md)をご覧ください。
## サポート状況
オーソリの拡張を使用する場合、地域別の制限はありません。ただし、次のような制限があることに注意してください。
- オーソリの拡張は、Visa、Mastercard、アメリカン・エキスプレス、ディスカバーでのみ利用できます。
- カードブランドによっては加盟店カテゴリーの制限があります。以下のネットワークのサポート状況一覧を参照してください。
- このページでは、オンラインカード決済のオーソリの拡張について説明します。対面カード決済でオーソリの拡張を利用する場合は、[Terminal のドキュメント](https://docs.stripe.com/terminal/features/extended-authorizations.md)をご覧ください。
- [CheckoutSession](https://docs.stripe.com/api/checkout/sessions/.md) で [mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) は `payment` に設定され、[capture_method](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-capture_method) は `manual` に設定されます。
> #### IC+ の特長
>
> Stripe は、*IC+* (A pricing plan where businesses pay the variable network cost for each transaction plus the Stripe fee rather than a flat rate for all transactions. This pricing model provides more visibility into payments costs) 料金体系のユーザーにオーソリの拡張を提供しています。Stripe のブレンド料金体系をご利用で、この機能へのアクセスをご希望の場合は、[Stripe サポート](https://support.stripe.com)のフォームからお問い合わせください。
### カードネットワークと加盟店カテゴリー別のサポート状況
オーソリの拡張を利用できる決済と、その有効期間を決定する規則は、カードネットワークごとに異なります。次の表には、Visa、Mastercard、アメリカン・エキスプレス、ディスカバーでオーソリの拡張を利用した場合の有効期間および取引タイプが表示されています。ただし、カードネットワークの規則は事前の通告なしに変更される場合があるため、[capture_before フィールド](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before)で支払いの有効期間をその都度確認することをお勧めします。
| カードブランド | 加盟店カテゴリー | オーソリの有効期間を延長 |
| ------------------------------------------ | ------------------------------------------------------------------------------ | ------------ |
| **Visa** | ホテル、宿泊施設、車のレンタル、クルーズ会社
その他すべての加盟店カテゴリー* | 30 日間** |
| **Mastercard** (Maestro および Cirrus カードを除く) | すべての加盟店カテゴリー | 30 日間 |
| **アメリカン・エキスプレス** | 宿泊施設および車のレンタル | 30 日*** |
| **ディスカバー** | 航空会社、バスチャーター / ツアー、車のレンタル、クルーズ会社、地方 / 郊外の通勤・通学用交通機関、旅客輸送 (フェリー、ホテル、宿泊施設、鉄道を含む) | 30 日間 |
その他の加盟加盟店カテゴリーの場合、Stripe は取引ごとに 0.08% の追加手数手数料を請求します。延長期間は[顧客主導の取引](https://docs.stripe.com/payments/cits-and-mits.md)にのみ適用され、日本の事業者との取引や、医療、請求書の支払い、債務の返済に関連する取引には適用されません。** Visa の正確なオーソリの拡張期間は、クリアリングプロセスに十分な時間をとるため、29 日 18 時間となります。*** 有効期間は 30 日間に延長されますが、顧客の宿泊またはレンタルの終了時までにオーソリされた売上をキャプチャーする必要があります。
### サポートが限定されるネットワーク (ベータ)
次のカードネットワークは、オーソリの拡張を限定的にサポートしています。
| カードブランド | 加盟店の所在国 | 加盟店カテゴリー | オーソリ拡張後の有効期間 |
| ------------ | ------------------- | ----------------------------------------------------------------------------- | ------------ |
| **ダイナースクラブ** | アメリカ (ディスカバー経由) | すべての加盟店カテゴリー | 30 日 |
| **銀聯** | グローバル (アメリカとカナダを除く) | すべての加盟店カテゴリー | 27~29 日 |
| | アメリカとカナダ (ディスカバー経由) | 航空会社、バスチャーター / ツアー、レンタカー、クルーズ会社、地方 / 郊外の通勤・通学用交通機関、旅客輸送 (フェリー、ホテル、宿泊施設、鉄道を含む) | 30 日 |
### 最近のサポート状況の変更
- **2023 年 9 月**:ディスカバーでのオーソリの拡張は、次の加盟店カテゴリーで利用できなくなりました (ネットワークの提供情報を引用): 飲食店、レンタルボート、キャンピングカー / RV レンタル、レンタルトラック、タイムシェア、タクシー / リムジン、トレーラーパーク / キャンプ場、機器 / 家具 / 家電レンタル、遊園地、サーカス、占い、レクリエーションサービス。
- **2023 年 9 月**:不履行によるネットワーク手数料を防ぐため、Visa のオーソリ有効期間が 31 日から 30 日に短縮されました。その期間内に確実に取引を完了できるよう、6 時間の猶予時間を設けた上でオーソリの有効期間を 29 日と 18 時間に設定しています。
## ベストプラクティス
オーソリの拡張を実行すると、顧客には資金が長期間保留されているように表示されます。身に覚えのない支払いによる不審請求の申し立てが増加するのを防ぐために、明瞭な[明細書表記](https://docs.stripe.com/get-started/account/statement-descriptors.md)を提供するようにしてください。
新しい [CheckoutSession](https://docs.stripe.com/api/checkout_sessions.md) を作成する際、[custom_text](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-custom_text) フィールドを使用して決済ページに追加のテキストを表示することで、法令遵守要件を満たせます。
> #### 法令遵守
>
> オーソリの拡張を行うにあたり、お客様は適用されるすべての法律、規制、ネットワーク規則を遵守する責任を負うものとします。この機能を受け付けるカードネットワークの仕様に照らし、取引の内容が適用されるすべての規則に準拠していることを確認してください。規則はネットワークごとに異なります。たとえば、ほとんどのネットワークでは、オーソリの時点で最終的なキャプチャー金額を知らされていない場合にのみ有効期間を延長することが認められています。
>
> このページに記載されている情報のうち、これらの要件の遵守に関する情報は一般的なガイダンスであり、法律、税務、会計、その他の専門的なアドバイスではありません。自らの義務について不明な点がある場合は、専門家に相談することをお勧めします。
## CheckoutSession を作成する
サーバー側のエンドポイントを呼び出す決済ボタンをウェブサイトに追加して [Checkout セッション](https://docs.stripe.com/api/checkout/sessions/create.md)を作成します。
```html
Buy cool new product
```
Checkout セッションには、顧客が支払いフォームにリダイレクトされたときに表示される内容がプログラム的に表されます。セッションは、以下のオプションを使用して設定することが可能です。
- 請求[項目](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items)
- 利用通貨
`success_url`。お客様のウェブサイト上にあり、決済完了後に顧客が戻されるページの URL 値です。
> デフォルトでは、Checkout セッションは作成後 24 時間で期限切れとなります。
Checkout セッションを作成したら、レスポンスで返された [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) に顧客をリダイレクトします。
オーソリの拡張機能を有効にするには、[request_extended_authorization](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-card-request_extended_authorization) を `if_available` に設定します。
#### Ruby
```ruby
# This example sets up an endpoint using the Sinatra framework.
require 'json'
require 'sinatra'
require 'stripe'
# Don't put any keys in code. See https://docs.stripe.com/keys-best-practices.
# Find your keys at https://dashboard.stripe.com/apikeys.
Stripe.api_key = '<>'
post '/create-checkout-session' do
session = Stripe::Checkout::Session.create({
line_items: [{
price_data: {
currency: 'usd',
product_data: {
name: 'T-shirt'
},
unit_amount: 2000
},
quantity: 1
}],payment_method_options: {
card: {
request_extended_authorization: 'if_available'
}
},
mode: 'payment',
# These placeholder URLs will be replaced in a following step.
success_url: 'https://example.com/success'
})
redirect session.url, 303
end
```
特定の支払いの有効期間を確認するには、[capture_before フィールド](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before)を使用します。CheckoutSession の完了後に有効期間の変更は行われません。CheckoutSession の完了後にオーソリが拡張されているかを判断するには、関連する支払いの [extended_authorization.status フィールド](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-extended_authorization-status)を確認します。
```json
{
"id": "pi_xxx",
"object": "payment_intent",
"amount": 1000,
"amount_capturable": 1000,
"amount_received": 0,
"status": "requires_capture",
...
// if latest_charge is expanded
"latest_charge": {
"id": "ch_xxx",
"object": "charge",
"payment_method_details": {
"card": {
"amount_authorized": 1000,"capture_before": 1696524701,
"extended_authorization": {
"status": "enabled", // or "disabled"
}
}
}
...
}
...
}
```
## 実装内容をテストする
以下の Stripe テストカードを、任意のセキュリティコードと将来の有効期限とともに使用して、テスト時にオーソリの拡張をリクエストします。テスト時に、所定のネットワークの決済でオーソリの拡張がが可能であれば、本番環境の決済でも利用できます。
| カードブランド | 番号 | 決済手段 |
| ------------ | ---------------- | -------------------- |
| Visa | 4242424242424242 | `pm_card_visa` |
| Mastercard | 5555555555554444 | `pm_card_mastercard` |
| アメリカン・エキスプレス | 378282246310005 | `pm_card_amex` |
| Discover | 6011111111111117 | `pm_card_discover` |
# 埋め込みページ
> This is a 埋め込みページ for when platform is web and ui is embedded-form. View the full page at https://docs.stripe.com/payments/extended-authorization?platform=web&ui=embedded-form.
延長されたオーソリではオーソリの有効期間が長くなるため、標準のオーソリ有効期間よりも長く顧客の資金を保持できます。ほとんどのカードネットワークの場合、デフォルトのオーソリ有効期間は、オンライン決済の場合は 7 日間、対面の [Terminal](https://docs.stripe.com/terminal.md) 決済の場合は 2 日間ですが、カードネットワークによっては、有効期間を最大 30 日間まで延長できます。オーソリの有効期間について詳細は、[支払い方法の売上を保留](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md)をご覧ください。
## サポート状況
オーソリの拡張を使用する場合、地域別の制限はありません。ただし、次のような制限があることに注意してください。
- オーソリの拡張は、Visa、Mastercard、アメリカン・エキスプレス、ディスカバーでのみ利用できます。
- カードブランドによっては加盟店カテゴリーの制限があります。以下のネットワークのサポート状況一覧を参照してください。
- このページでは、オンラインカード決済のオーソリの拡張について説明します。対面カード決済でオーソリの拡張を利用する場合は、[Terminal のドキュメント](https://docs.stripe.com/terminal/features/extended-authorizations.md)をご覧ください。
- [CheckoutSession](https://docs.stripe.com/api/checkout/sessions/.md) で [mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) は `payment` に設定され、[capture_method](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-capture_method) は `manual` に設定されます。
> #### IC+ の特長
>
> Stripe は、*IC+* (A pricing plan where businesses pay the variable network cost for each transaction plus the Stripe fee rather than a flat rate for all transactions. This pricing model provides more visibility into payments costs) 料金体系のユーザーにオーソリの拡張を提供しています。Stripe のブレンド料金体系をご利用で、この機能へのアクセスをご希望の場合は、[Stripe サポート](https://support.stripe.com)のフォームからお問い合わせください。
### カードネットワークと加盟店カテゴリー別のサポート状況
オーソリの拡張を利用できる決済と、その有効期間を決定する規則は、カードネットワークごとに異なります。次の表には、Visa、Mastercard、アメリカン・エキスプレス、ディスカバーでオーソリの拡張を利用した場合の有効期間および取引タイプが表示されています。ただし、カードネットワークの規則は事前の通告なしに変更される場合があるため、[capture_before フィールド](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before)で支払いの有効期間をその都度確認することをお勧めします。
| カードブランド | 加盟店カテゴリー | オーソリの有効期間を延長 |
| ------------------------------------------ | ------------------------------------------------------------------------------ | ------------ |
| **Visa** | ホテル、宿泊施設、車のレンタル、クルーズ会社
その他すべての加盟店カテゴリー* | 30 日間** |
| **Mastercard** (Maestro および Cirrus カードを除く) | すべての加盟店カテゴリー | 30 日間 |
| **アメリカン・エキスプレス** | 宿泊施設および車のレンタル | 30 日*** |
| **ディスカバー** | 航空会社、バスチャーター / ツアー、車のレンタル、クルーズ会社、地方 / 郊外の通勤・通学用交通機関、旅客輸送 (フェリー、ホテル、宿泊施設、鉄道を含む) | 30 日間 |
その他の加盟加盟店カテゴリーの場合、Stripe は取引ごとに 0.08% の追加手数手数料を請求します。延長期間は[顧客主導の取引](https://docs.stripe.com/payments/cits-and-mits.md)にのみ適用され、日本の事業者との取引や、医療、請求書の支払い、債務の返済に関連する取引には適用されません。** Visa の正確なオーソリの拡張期間は、クリアリングプロセスに十分な時間をとるため、29 日 18 時間となります。*** 有効期間は 30 日間に延長されますが、顧客の宿泊またはレンタルの終了時までにオーソリされた売上をキャプチャーする必要があります。
### サポートが限定されるネットワーク (ベータ)
次のカードネットワークは、オーソリの拡張を限定的にサポートしています。
| カードブランド | 加盟店の所在国 | 加盟店カテゴリー | オーソリ拡張後の有効期間 |
| ------------ | ------------------- | ----------------------------------------------------------------------------- | ------------ |
| **ダイナースクラブ** | アメリカ (ディスカバー経由) | すべての加盟店カテゴリー | 30 日 |
| **銀聯** | グローバル (アメリカとカナダを除く) | すべての加盟店カテゴリー | 27~29 日 |
| | アメリカとカナダ (ディスカバー経由) | 航空会社、バスチャーター / ツアー、レンタカー、クルーズ会社、地方 / 郊外の通勤・通学用交通機関、旅客輸送 (フェリー、ホテル、宿泊施設、鉄道を含む) | 30 日 |
### 最近のサポート状況の変更
- **2023 年 9 月**:ディスカバーでのオーソリの拡張は、次の加盟店カテゴリーで利用できなくなりました (ネットワークの提供情報を引用): 飲食店、レンタルボート、キャンピングカー / RV レンタル、レンタルトラック、タイムシェア、タクシー / リムジン、トレーラーパーク / キャンプ場、機器 / 家具 / 家電レンタル、遊園地、サーカス、占い、レクリエーションサービス。
- **2023 年 9 月**:不履行によるネットワーク手数料を防ぐため、Visa のオーソリ有効期間が 31 日から 30 日に短縮されました。その期間内に確実に取引を完了できるよう、6 時間の猶予時間を設けた上でオーソリの有効期間を 29 日と 18 時間に設定しています。
## ベストプラクティス
オーソリの拡張を実行すると、顧客には資金が長期間保留されているように表示されます。身に覚えのない支払いによる不審請求の申し立てが増加するのを防ぐために、明瞭な[明細書表記](https://docs.stripe.com/get-started/account/statement-descriptors.md)を提供するようにしてください。
新しい [CheckoutSession](https://docs.stripe.com/api/checkout_sessions.md) を作成する際、[custom_text](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-custom_text) フィールドを使用して決済ページに追加のテキストを表示することで、法令遵守要件を満たせます。
> #### 法令遵守
>
> オーソリの拡張を行うにあたり、お客様は適用されるすべての法律、規制、ネットワーク規則を遵守する責任を負うものとします。この機能を受け付けるカードネットワークの仕様に照らし、取引の内容が適用されるすべての規則に準拠していることを確認してください。規則はネットワークごとに異なります。たとえば、ほとんどのネットワークでは、オーソリの時点で最終的なキャプチャー金額を知らされていない場合にのみ有効期間を延長することが認められています。
>
> このページに記載されている情報のうち、これらの要件の遵守に関する情報は一般的なガイダンスであり、法律、税務、会計、その他の専門的なアドバイスではありません。自らの義務について不明な点がある場合は、専門家に相談することをお勧めします。
## CheckoutSession を作成する
サーバーから、*決済セッション* (A Checkout Session represents your customer's session as they pay for one-time purchases or subscriptions through Checkout. After a successful payment, the Checkout Session contains a reference to the Customer, and either the successful PaymentIntent or an active Subscription)を作成し、[ui_mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-ui_mode) を `embedded_page` に設定します。[決済セッション](https://docs.stripe.com/api/checkout/sessions/create.md)には、含める[項目](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items)と[通貨](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-currency)などのオプションを設定できます。
自社サイトでホストされているカスタムページに顧客を戻すには、そのページの URL を [return_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-return_url) パラメーターに指定します。URL にテンプレート変数 `{CHECKOUT_SESSION_ID}` を含めて、戻り先ページでセッションのステータスを取得します。Checkout では、リダイレクト前にこの変数が Checkout セッション ID に自動的に置き換えられます。
[戻り先ページの設定](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=embedded-form#return-page)と、[リダイレクト動作をカスタマイズ](https://docs.stripe.com/payments/checkout/custom-success-page.md?payment-ui=embedded-form)するためのその他のオプションについて、詳細をご覧ください。
Checkout セッションの作成後、レスポンスで返される `client_secret` を使用して、[Checkout をマウント](https://docs.stripe.com/payments/extended-authorization.md#mount-checkout)します。
オーソリの拡張機能を有効にするには、[request_extended_authorization](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_method_options-card-request_extended_authorization) を `if_available` に設定します。
#### Ruby
```ruby
# This example sets up an endpoint using the Sinatra framework.
require 'json'
require 'sinatra'
require 'stripe'
# Don't put any keys in code. See https://docs.stripe.com/keys-best-practices.
# Find your keys at https://dashboard.stripe.com/apikeys.
Stripe.api_key = '<>'
post '/create-checkout-session' do
session = Stripe::Checkout::Session.create({
line_items: [{
price_data: {
currency: 'usd',
product_data: {
name: 'T-shirt',
},
unit_amount: 2000,
},
quantity: 1,
}],
mode: 'payment',
ui_mode: 'embedded_page',payment_method_options: {
card: {
request_extended_authorization: 'if_available',
},
},
return_url: 'https://example.com/checkout/return?session_id={CHECKOUT_SESSION_ID}'
})
{clientSecret: session.client_secret}.to_json
end
```
特定の支払いの有効期間を確認するには、[capture_before フィールド](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before)を使用します。CheckoutSession の完了後に有効期間の変更は行われません。CheckoutSession の完了後にオーソリが拡張されているかを判断するには、関連する支払いの [extended_authorization.status フィールド](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-extended_authorization-status)を確認します。
```json
{
"id": "pi_xxx",
"object": "payment_intent",
"amount": 1000,
"amount_capturable": 1000,
"amount_received": 0,
"status": "requires_capture",
...
// if latest_charge is expanded
"latest_charge": {
"id": "ch_xxx",
"object": "charge",
"payment_method_details": {
"card": {
"amount_authorized": 1000,"capture_before": 1696524701,
"extended_authorization": {
"status": "enabled", // or "disabled"
}
}
}
...
}
...
}
```
## Checkout をマウントする
#### HTML + JS
Checkout は [Stripe.js](https://docs.stripe.com/js.md) の一部として利用できます。HTML ファイルのヘッダーに Stripe.js スクリプトを追加してページに含めます。次に、マウンティングに使用する空の DOM ノード (コンテナー) を作成します。
```html
```
公開可能な API キーで Stripe.js を初期化します。
Checkout セッションの作成、および client secret の取得をサーバーにリクエストする、非同期の `fetchClientSecret` 関数を作成します。 Checkout インスタンスを作成する際に、この関数を `options` に渡します。
```javascript
// Initialize Stripe.js
const stripe = Stripe('<>');
initialize();
// Fetch Checkout Session and retrieve the client secret
async function initialize() {
const fetchClientSecret = async () => {
const response = await fetch("/create-checkout-session", {
method: "POST",
});
const { clientSecret } = await response.json();
return clientSecret;
};
// Initialize Checkout
const checkout = await stripe.createEmbeddedCheckoutPage({
fetchClientSecret,
});
// Mount Checkout
checkout.mount('#checkout');
}
```
#### React
npm から [react-stripe-js](https://docs.stripe.com/sdks/stripejs-react.md) と Stripe.js ローダーをインストールします。
```bash
npm install --save @stripe/react-stripe-js @stripe/stripe-js
```
埋め込みの Checkout コンポーネントを使用するには、`EmbeddedCheckoutProvider` を作成します。公開可能 API キーを使用して `loadStripe` を呼び出し、返された `Promise` をプロバイダーに渡します。
Checkout セッションの作成、および client secret の取得をサーバーにリクエストする、非同期の `fetchClientSecret` 関数を作成します。この関数をプロバイダーで受け入れられる `options` プロパティに渡します。
```jsx
import * as React from 'react';
import {loadStripe} from '@stripe/stripe-js';
import {
EmbeddedCheckoutProvider,
EmbeddedCheckout
} from '@stripe/react-stripe-js';
// Make sure to call `loadStripe` outside of a component’s render to avoid
// recreating the `Stripe` object on every render.
const stripePromise = loadStripe('pk_test_123');
const App = () => {
const fetchClientSecret = React.useCallback(() => {
// Create a Checkout Session
return fetch("/create-checkout-session", {
method: "POST",
})
.then((res) => res.json())
.then((data) => data.clientSecret);
}, []);
const options = {fetchClientSecret};
return (
)
}
```
Checkout は、HTTPS 接続を介して支払い情報をStripeに安全に送信する iframe でレンダリングされます。
> 一部の支払い方法では、別のページにリダイレクトして支払いを確定する必要があるため、Checkout は別の iframe 内に配置しないでください。
### デザインをカスタマイズする
アカウントの[ブランディング設定](https://dashboard.stripe.com/settings/branding)で、背景色、ボタンの色、枠線の角丸半径、フォントを設定して、サイトのデザインに合わせて Checkout をカスタマイズします。
デフォルトでは、Checkout は外側に余白やマージンが追加されずに表示されます。必要なマージンを適用するには (四方すべてに 16px など)、目的の余白を適用するコンテナー要素 (div など) を使用することをお勧めします。
## 戻り先ページを表示する
顧客が支払いを試行すると、Stripe はサイトがホストしている戻りページに顧客をリダイレクトします。Checkout セッションを作成したときに、[return_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-return_url) パラメーターで戻りページの URL は指定されています。[リダイレクト動作をカスタマイズする](https://docs.stripe.com/payments/checkout/custom-success-page.md?payment-ui=embedded-form)ためのオプションについては、こちらの記事をご覧ください。
戻り先ページを表示する際は、URL に含まれる Checkout セッション ID を使用して、Checkout セッションのステータスを取得します。セッションのステータスに応じて、結果を次のように処理します。
- `complete`:支払いが成功しました。Checkout セッションの情報を成功ページに表示します。
- `open`:支払いが失敗したか、またはキャンセルされました。顧客が再試行できるように Checkout を再マウントしてください。
#### Ruby
```ruby
get '/session-status' do
session = Stripe::Checkout::Session.retrieve(params[:session_id])
{status: session.status, customer_email: session.customer_details.email}.to_json
end
```
```javascript
const session = await fetch(`/session_status?session_id=${session_id}`)
if (session.status == 'open') {
// Remount embedded Checkout
} else if (session.status == 'complete') {
// Show success page
// Optionally use session.payment_status or session.customer_email
// to customize the success page
}
```
#### リダイレクトベースの決済手段
決済手段によっては、決済中に顧客が銀行のオーソリページなどの中間ページにリダイレクトされることがあります。顧客はそのページでアクションを完了すると、戻り先ページにリダイレクトされます。
[リダイレクトベースの決済手段とリダイレクト動作](https://docs.stripe.com/payments/checkout/custom-success-page.md?payment-ui=embedded-form#redirect-based-payment-methods)についてご紹介します。
## 実装内容をテストする
以下の Stripe テストカードを、任意のセキュリティコードと将来の有効期限とともに使用して、テスト時にオーソリの拡張をリクエストします。テスト時に、所定のネットワークの決済でオーソリの拡張がが可能であれば、本番環境の決済でも利用できます。
| カードブランド | 番号 | 決済手段 |
| ------------ | ---------------- | -------------------- |
| Visa | 4242424242424242 | `pm_card_visa` |
| Mastercard | 5555555555554444 | `pm_card_mastercard` |
| アメリカン・エキスプレス | 378282246310005 | `pm_card_amex` |
| Discover | 6011111111111117 | `pm_card_discover` |
# 高度な連携機能
> This is a 高度な連携機能 for when platform is web and ui is elements. View the full page at https://docs.stripe.com/payments/extended-authorization?platform=web&ui=elements.
延長されたオーソリではオーソリの有効期間が長くなるため、標準のオーソリ有効期間よりも長く顧客の資金を保持できます。ほとんどのカードネットワークの場合、デフォルトのオーソリ有効期間は、オンライン決済の場合は 7 日間、対面の [Terminal](https://docs.stripe.com/terminal.md) 決済の場合は 2 日間ですが、カードネットワークによっては、有効期間を最大 30 日間まで延長できます。オーソリの有効期間について詳細は、[支払い方法の売上を保留](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md)をご覧ください。
## サポート状況
オーソリの拡張を使用する場合、地域別の制限はありません。ただし、次のような制限があることに注意してください。
- オーソリの拡張は、Visa、Mastercard、アメリカン・エキスプレス、ディスカバーでのみ利用できます。
- カードブランドによっては加盟店カテゴリーの制限があります。以下のネットワークのサポート状況一覧を参照してください。
- このページでは、オンラインカード決済のオーソリの拡張について説明します。対面カード決済でオーソリの拡張を利用する場合は、[Terminal のドキュメント](https://docs.stripe.com/terminal/features/extended-authorizations.md)をご覧ください。
- [capture_method](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-capture_method) が [PaymentIntent](https://docs.stripe.com/api/payment_intents/.md) で `manual` に設定されています。
> #### IC+ の特長
>
> Stripe は、*IC+* (A pricing plan where businesses pay the variable network cost for each transaction plus the Stripe fee rather than a flat rate for all transactions. This pricing model provides more visibility into payments costs) 料金体系のユーザーにオーソリの拡張を提供しています。Stripe のブレンド料金体系をご利用で、この機能へのアクセスをご希望の場合は、[Stripe サポート](https://support.stripe.com)のフォームからお問い合わせください。
### カードネットワークと加盟店カテゴリー別のサポート状況
オーソリの拡張を利用できる決済と、その有効期間を決定する規則は、カードネットワークごとに異なります。次の表には、Visa、Mastercard、アメリカン・エキスプレス、ディスカバーでオーソリの拡張を利用した場合の有効期間および取引タイプが表示されています。ただし、カードネットワークの規則は事前の通告なしに変更される場合があるため、[capture_before フィールド](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before)で支払いの有効期間をその都度確認することをお勧めします。
| カードブランド | 加盟店カテゴリー | オーソリの有効期間を延長 |
| ------------------------------------------ | ------------------------------------------------------------------------------ | ------------ |
| **Visa** | ホテル、宿泊施設、車のレンタル、クルーズ会社
その他すべての加盟店カテゴリー* | 30 日間** |
| **Mastercard** (Maestro および Cirrus カードを除く) | すべての加盟店カテゴリー | 30 日間 |
| **アメリカン・エキスプレス** | 宿泊施設および車のレンタル | 30 日*** |
| **ディスカバー** | 航空会社、バスチャーター / ツアー、車のレンタル、クルーズ会社、地方 / 郊外の通勤・通学用交通機関、旅客輸送 (フェリー、ホテル、宿泊施設、鉄道を含む) | 30 日間 |
その他の加盟加盟店カテゴリーの場合、Stripe は取引ごとに 0.08% の追加手数手数料を請求します。延長期間は[顧客主導の取引](https://docs.stripe.com/payments/cits-and-mits.md)にのみ適用され、日本の事業者との取引や、医療、請求書の支払い、債務の返済に関連する取引には適用されません。** Visa の正確なオーソリの拡張期間は、クリアリングプロセスに十分な時間をとるため、29 日 18 時間となります。*** 有効期間は 30 日間に延長されますが、顧客の宿泊またはレンタルの終了時までにオーソリされた売上をキャプチャーする必要があります。
### サポートが限定されるネットワーク (ベータ)
次のカードネットワークは、オーソリの拡張を限定的にサポートしています。
| カードブランド | 加盟店の所在国 | 加盟店カテゴリー | オーソリ拡張後の有効期間 |
| ------------ | ------------------- | ----------------------------------------------------------------------------- | ------------ |
| **ダイナースクラブ** | アメリカ (ディスカバー経由) | すべての加盟店カテゴリー | 30 日 |
| **銀聯** | グローバル (アメリカとカナダを除く) | すべての加盟店カテゴリー | 27~29 日 |
| | アメリカとカナダ (ディスカバー経由) | 航空会社、バスチャーター / ツアー、レンタカー、クルーズ会社、地方 / 郊外の通勤・通学用交通機関、旅客輸送 (フェリー、ホテル、宿泊施設、鉄道を含む) | 30 日 |
### 最近のサポート状況の変更
- **2023 年 9 月**:ディスカバーでのオーソリの拡張は、次の加盟店カテゴリーで利用できなくなりました (ネットワークの提供情報を引用): 飲食店、レンタルボート、キャンピングカー / RV レンタル、レンタルトラック、タイムシェア、タクシー / リムジン、トレーラーパーク / キャンプ場、機器 / 家具 / 家電レンタル、遊園地、サーカス、占い、レクリエーションサービス。
- **2023 年 9 月**:不履行によるネットワーク手数料を防ぐため、Visa のオーソリ有効期間が 31 日から 30 日に短縮されました。その期間内に確実に取引を完了できるよう、6 時間の猶予時間を設けた上でオーソリの有効期間を 29 日と 18 時間に設定しています。
## ベストプラクティス
オーソリの拡張を実行すると、顧客には資金が長期間保留されているように表示されます。身に覚えのない支払いによる不審請求の申し立てが増加するのを防ぐために、明瞭な[明細書表記](https://docs.stripe.com/get-started/account/statement-descriptors.md)を提供するようにしてください。
> #### 法令遵守
>
> オーソリの拡張を行うにあたり、お客様は適用されるすべての法律、規制、ネットワーク規則を遵守する責任を負うものとします。この機能を受け付けるカードネットワークの仕様に照らし、取引の内容が適用されるすべての規則に準拠していることを確認してください。規則はネットワークごとに異なります。たとえば、ほとんどのネットワークでは、オーソリの時点で最終的なキャプチャー金額を知らされていない場合にのみ有効期間を延長することが認められています。
>
> このページに記載されている情報のうち、これらの要件の遵守に関する情報は一般的なガイダンスであり、法律、税務、会計、その他の専門的なアドバイスではありません。自らの義務について不明な点がある場合は、専門家に相談することをお勧めします。
## 未キャプチャーの PaymentIntent を作成して確定する
デフォルトでは、ほとんどのカードネットワークで、オンラインカード決済のオーソリの有効期間は 7 日間です。有効期間を延ばすには、[request_extended_authorization](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-payment_method_options-card-request_extended_authorization) パラメーターで `if_available` を使用し、オーソリの延長をリクエストできます。
```curl
curl https://api.stripe.com/v1/payment_intents \
-u "<>:" \
-d amount=1099 \
-d currency=usd \
-d payment_method=pm_card_visa \
-d confirm=true \
-d capture_method=manual \
-d "expand[]=latest_charge" \
-d "payment_method_options[card][request_extended_authorization]=if_available"
```
特定の支払いの有効期間を確認するには、[capture_before フィールド](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before)を使用してください。PaymentIntent の確定後に有効期間の変更は行われません。PaymentIntent の確定後にオーソリが拡張されているかを判断するには、関連する支払いの [extended_authorization.status フィールド](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-extended_authorization-status)を確認します。
```json
// PaymentIntent response
{
"id": "pi_xxx",
"object": "payment_intent",
"amount": 1000,
"amount_capturable": 1000,
"amount_received": 0,
"status": "requires_capture",
...
// if latest_charge is expanded
"latest_charge": {
"id": "ch_xxx",
"object": "charge",
"payment_method_details": {
"card": {
"amount_authorized": 1000,"capture_before": 1696524701,
"extended_authorization": {
"status": "enabled", // or "disabled"
}
}
}
...
}
...
}
```
## 実装内容をテストする
以下の Stripe テストカードを、任意のセキュリティコードと将来の有効期限とともに使用して、テスト時にオーソリの拡張をリクエストします。テスト時に、所定のネットワークの決済でオーソリの拡張がが可能であれば、本番環境の決済でも利用できます。
| カードブランド | 番号 | 決済手段 |
| ------------ | ---------------- | -------------------- |
| Visa | 4242424242424242 | `pm_card_visa` |
| Mastercard | 5555555555554444 | `pm_card_mastercard` |
| アメリカン・エキスプレス | 378282246310005 | `pm_card_amex` |
| Discover | 6011111111111117 | `pm_card_discover` |
## See also
- [支払い方法を保留する](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md)