コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成
サインイン
始める
支払い
売上
プラットフォームおよびマーケットプレイス
資金管理
開発者向けリソース
概要
Stripe Payments について
    概要
    通貨
    支払い拒否
    入金
    継続支払い
    3D セキュア認証
    支払いの返金とキャンセル
    残高と売上処理にかかる期間
    領収書
    Webhook イベントに対応する
    SCA 対応
    以前の API
      支払い
        新しい API への移行
      Sources
      PaymentIntents と Charges の比較
構築済みのシステムをアップグレード
支払いの分析
オンライン決済
概要ユースケースを見つけるManaged Payments
Payment Links を使用する
決済ページを構築
高度なシステムを構築
アプリ内実装を構築
決済手段
決済手段を追加
決済手段を管理
Link による購入の迅速化
支払いインターフェイス
Payment Links
Checkout
Web Elements
アプリ内 Elements
決済シナリオ
複数の通貨を扱う
カスタムの決済フロー
柔軟なアクワイアリング
オーケストレーション
店頭支払い
端末
決済にとどまらない機能
会社を設立する
仮想通貨
Financial Connections
Climate
不正利用について
Radar の不正防止
不審請求の申請の管理
本人確認
ホーム支払いAbout Stripe paymentsOlder APIsCharges

Payment Intents API への移行

Stripe Billing、Stripe Tax や割引、配送、通貨換算の使用をご希望の場合

Stripe は現在、サブスクリプション、税金、割引、配送、通貨換算を管理する Payment Element の実装を開発中です。詳細は、決済ページの構築ガイドをお読みください。

既存のカードと Charges API 組み込みを移行する方法は以下のとおりです。

決済フローの移行は非常に煩雑な場合があります。Payment Intents API を段階的に採用し、それを Charges API と並行して使用するのが安全です。この目的のために、移行を次のステップに分割できます。

  1. API バージョンとクライアントライブラリを更新します。
  2. 該当する場合は、支払いプロパティから読み取るコードを移行して、Charges API によって作成された支払いと Payment Intents API によって作成された支払いの間の読み取りパスの整合性を確保します。これにより、読み取り側のシステムが支払いの古いシステムと新しいシステムの両方で機能するようになります。
  3. Web、iOS、および Android の既存の Charges API の実装を、Payment Intents API を使用するように移行します。
  4. Customer オブジェクトにカードを保存する組み込みを移行します。
  5. 規制用テストカードでテストして、アップグレードしたシステムが認証を正しく処理することを確認します。

API バージョンとクライアントライブラリを更新する

Payment Intents API はすべての API バージョンで機能しますが、最新の API バージョンにアップグレードすることをお勧めします。2019-02-11 より古い API バージョンを使用する場合は、コード例を確認しながら、以下の 2 つの変更点に注意します。

  • requires_source は requires_payment_method に名前が変更されています
  • requires_source_action は requires_action に名前が変更されています

また、Stripe の SDK を使用している場合、Payment Intents API を使用するには、最新バージョンのライブラリにアップグレードする必要があります。

1 回限りの支払いフローを移行

Stripe.js および Elements を使用して構築された組み込みは、以下のステップで構成されます。

  1. サーバ側で支払いを回収する Intent を登録する
  2. クライアント側で支払いの詳細を収集する
  3. 支払いの作成を開始する
  4. サーバ側で顧客の注文のフルフィルメントを実行する

ステップ 1: サーバ側で支払いを回収する Intent を登録する

サーバーで PaymentIntent を作成し、クライアント側でアクセスできるようにします。

前
後

以前は未対応

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "amount"=1099 \ -d "currency"="usd"

ステップ 2: クライアント側で支払いの詳細を収集する

confirmCardPayment 関数を使用して、支払い情報を収集し、Stripe に直接送信します。

前
後
stripe.createToken( cardElement ).then(function(token) { // Send token to server });
stripe.confirmCardPayment( INTENT_SECRET_FROM_STEP_1, { payment_method: {card: cardElement} } ).then(function(result) { if (result.error) { // Display error.message in your UI. } else { // The payment has succeeded // Display a success message } });

ステップ 3: 支払いの作成を開始する

既存の組み込みでは、最後のステップでトークン化された支払い情報を使用してサーバで支払いを作成していますが、このステップは不要になりました。これは、前のステップで呼び出される confirmCardPayment 関数が支払いの作成を開始するためです。

前
後
Command Line
curl https://api.stripe.com/v1/charges \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "source"="{{FROM_PREVIOUS_STEP}}" \ -d "amount"=1099 \ -d "currency"="usd"

前のステップで完了

ステップ 4: 顧客の注文のフルフィルメントを実行

自動確認では、クライアント側での顧客のアクションに基づいて非同期で支払いが作成されるため、Webhook を監視して支払いが正常に完了するタイミングを判断する必要があります。顧客の支払いが成功した後に注文のフルフィルメントなどのステップを実行するには、Webhook のサポートを実装して、payment_intent.succeeded イベントを監視します。

前
後

支払いが成功した場合は、フルフィルメントを実行します。

payment_intent.succeeded Webhook に登録し、Webhook ハンドラでフルフィルメントを実行します。

移行が完了できました。次のセクションではテストカードを使用して、アップグレードした組み込みが 3D セキュア認証を処理することを確認します。

Customer オブジェクトにカードを保存する組み込みに移行する

決済フローでカード情報を収集する Payment Intents API 組み込みは、次のステップで構成されます。

  1. サーバ側で支払いを回収する Intent を登録する
  2. クライアント側で支払いの詳細を収集する
  3. 支払いの作成を開始する
  4. サーバ側で顧客の注文のフルフィルメントを実行する

ステップ 1: サーバ側で支払いを回収する Intent を登録する

サーバー上に PaymentIntent を作成します。ユーザーがアプリケーションの外部にいるときに請求することが多い場合は、setup_future_usage を off_session に設定し、アプリケーション内でユーザーに請求する予定の場合は on_session に設定します。オンセッションとオフセッションの両方の支払いにカードを使用する場合は、off_session を使用します。Customer ID と一緒に setup_future_usage パラメーターを指定すると、PaymentIntent が確定され、顧客の操作が完了した後、結果の PaymentMethod がその Customer に保存されます。次に、PaymentIntent にクライアント側でアクセスできるようにします。

前
後

以前は未対応

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "setup_future_usage"="off_session" \ -d "amount"=1099 \ -d "currency"="usd"

ステップ 2: クライアント側で支払いの詳細を収集する

confirmCardPayment 関数を使用して、支払い情報を収集し、Stripe に直接送信します。

前
後
stripe.createToken( // or stripe.createSource cardElement ).then(function(token) { // Send token to server });
stripe.confirmCardPayment( '{{INTENT_SECRET_FROM_STEP_1}}', { payment_method: {card: cardElement}, } ).then(function(result) { if (result.error) { // Display error.message in your UI. } else { // The payment has succeeded // Display a success message } });

最後に、支払い方法 (paymentIntent.payment_method) を顧客に関連付けます。

前
後
Command Line
curl https://api.stripe.com/v1/customers/{{CUSTOMER_ID}}/sources \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "source"="{{TOKEN_OR_SOURCE}}"
Command Line
curl https://api.stripe.com/v1/payment_method/{{PAYMENT_METHOD_ID}}/attach \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "customer"="{{CUSTOMER_ID}}"

ステップ 3: 支払いの作成を開始する

既存の組み込みでは、最後のステップでトークン化された支払い情報を使用してサーバで支払いを作成していますが、このステップは不要になりました。これは、前のステップで呼び出される confirmCardPayment 関数が支払いの作成を開始するためです。

前
後
Command Line
curl https://api.stripe.com/v1/charges \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "source"="{{FROM_PREVIOUS_STEP}}" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1099 \ -d "currency"="usd"

前のステップで完了

ステップ 4: 顧客の注文のフルフィルメントを実行

自動確認では、クライアント側での顧客のアクションに基づいて非同期で支払いが作成されるため、Webhook を監視して支払いが正常に完了するタイミングを判断する必要があります。顧客の支払いが成功した後に注文のフルフィルメントなどのステップを実行するには、Webhook のサポートを実装して、payment_intent.succeeded イベントを監視します。

前
後

支払いが成功した場合は、フルフィルメントを実行します。

payment_intent.succeeded Webhook に登録し、Webhook ハンドラでフルフィルメントを実行します。

移行が完了できました。次のセクションではテストカードを使用して、アップグレードした組み込みが 3D セキュア認証を処理することを確認します。

保存された支払い方法にアクセスする

以前に保存した顧客のカード、ソース、PaymentMethods を表示するには、Customer オブジェクトの sources プロパティを読み取る代わりに、支払い方法をリストアップします。顧客に追加された新しい PaymentMethod は Customer オブジェクトの sources プロパティに複製されないため、このようにする必要があります。

前
後
Command Line
customer.sources
Command Line
curl https://api.stripe.com/v1/payment_methods?customer={{CUSTOMER_ID}}&type=card \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:

組み込みをテストする

組み込みを十分にテストして、追加の認証が必要なカードと不要なカードが正しく処理されることを確認することが重要です。将来の日付の有効期限と 3 桁のセキュリティコードとともに、これらのカード番号をサンドボックスで使用し、認証が必要な場合と不要な場合について、組み込みを検証します。

番号認証説明
設定時または最初の取引時に必要このテストカードは、1 回限りの支払いの認証が必要です。ただし、Setup Intents API を使用してこのカードを設定し、それ以降の支払いに保存したカードを使用する場合は、追加の認証の必要はありません。
必須このテストカードは、すべての取引で認証を必要とします。
必須このテストカードには認証が必要ですが、認証の成功後に、支払いは insufficient_funds エラーコードで拒否されます。
対応可能このテストクレジットカードは 3D セキュア 2 による認証をサポートしていますが、必須ではありません。このクレジットカードを使用した決済では、サンドボックス Radar ルールで認証をリクエストしない限り、サンドボックスでの追加認証は必要ありません。

これらのカードをアプリケーションまたは支払いデモで使用して、さまざまな動作を確認します。

参照情報

  • iOS での Payment Intents
  • Android での Payment Intents
このページはお役に立ちましたか。
はいいいえ
  • お困りのことがございましたら 、サポートにお問い合わせください。
  • 早期アクセスプログラムにご参加ください。
  • 変更ログをご覧ください。
  • ご不明な点がございましたら、お問い合わせください。
  • LLM ですか?llms.txt を読んでください。
  • Powered by Markdoc