コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
Ask AI
アカウントを作成
サインイン
始める
支払い
財務の自動化
プラットフォームおよびマーケットプレイス
資金管理
開発者向けのツール
始める
支払い
財務の自動化
始める
支払い
財務の自動化
プラットフォームおよびマーケットプレイス
資金管理
概要すべての商品を確認する
構築を開始する
開発の開始
サンプルプロジェクト
API について
    API ツアー
    Payment Intents API
      PaymentIntents の仕組み
      支払いステータスの更新
      非同期キャプチャー
      Charges API との比較
    Setup Intents API
    支払い方法
    以前の API
    リリースフェーズ
LLM を使用した構築
ノーコードで Stripe を使用する
Stripe を設定する
アカウントを作成する
商品と価格
ウェブダッシュボード
モバイルダッシュボード
Stripe に移行
顧客データを移行
決済データを移行
サブスクリプションを移行
不正利用のリスク管理
不正利用について
Radar の不正防止
不審請求の申請の管理
本人確認
規制への対応
ホーム始めるAbout the APIsPayment Intents API

注

このページはまだ日本語ではご利用いただけません。より多くの言語で文書が閲覧できるように現在取り組んでいます。準備が整い次第、翻訳版を提供いたしますので、もう少しお待ちください。

支払いステータスの更新

支払いステータスを監視および確認して、支払いの成功と失敗に対応できるようにします。

ページをコピー

PaymentIntents は、顧客が実行したアクションまたは支払い方法に応じて更新されます。組み込みでは PaymentIntent を確認することで支払いプロセスのステータスを特定できるため、お客様はビジネスアクションを実行したり、さらなる介入が必要な状態に対応できます。

Stripe ダッシュボードを使用して、支払いの成功などの支払いのステータスをメールで送信するようにアカウントを設定することもできます。それには、ユーザー設定でメール通知を変更します。

クライアントで PaymentIntent ステータスを確認する

confirmCardPayment 関数を使用してクライアントで支払いを完了する際に、返される PaymentIntent を確認して現在のステータスを特定できます。

(async () => { const {paymentIntent, error} = await stripe.confirmCardPayment(clientSecret); if (error) { // Handle error here } else if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } })();

以下に、confirmCardPayment 関数を使用する際に想定される結果を示します。

イベント発生内容想定される組み込み
PaymentIntent で解決顧客が決済ページで支払いを完了した支払いが成功したことを顧客に通知する
エラーで解決決済ページで顧客の支払いが失敗したエラーメッセージを表示して、顧客に支払いを再度実行するよう促す

confirmCardPayment によって返される Promise は、支払いプロセスが完了したか、エラーにより失敗したときに解決されます。正常に完了して PaymentIntent が返されると、ステータスは常に succeeded (または、後でキャプチャーする場合は、requires_capture) になります。支払いに認証などの追加のステップが必要な場合、そのステップが完了するかタイムアウトになるまで、Promise は解決されません。

confirmCardPayment を使用せずにクライアントで PaymentIntent ステータスを確認する

confirmCardPayment 関数を使用せずに PaymentIntent のステータスを確認するには、retrievePaymentIntent 関数を使用して、クライアントシークレット を渡すことにより、個別にステータスを取得します。

以下に、確定後の PaymentIntent の想定されるステータスを示します。

発生内容想定される PaymentIntent ステータス
顧客が決済ページで支払いを完了したsucceeded
顧客が決済フローを完了しなかったrequires_action
決済ページで顧客の支払いが失敗したrequires_payment_method

PaymentIntent のステータスの詳細をご覧ください。

(async () => { const {paymentIntent} = await stripe.retrievePaymentIntent(clientSecret); if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } else { // Handle unsuccessful, processing, or canceled payments and API errors here } })();

Webhook で PaymentIntent を監視する

Stripe は、PaymentIntent のステータスが変化した時にサーバーに Webhook イベントを送信して通知することできます。この機能は、商品やサービスのフルフィルメントを実行する時期の決定などに利用できます。

顧客が支払いの完了後、フルフィルメントプロセスの開始前にページを離れる可能性があるため、クライアント側で注文のフルフィルメントを処理しないようにしてください。クライアント側でフルフィルメントを開始するのではなく、Webhook を使用して payment_intent.succeeded イベントを監視し、その完了を非同期で処理します。

注意

技術的には、Webhook の代わりにポーリングを使用して、非同期の操作によって発生した変化を監視することも可能です。その場合、そのステータスを確認するために PaymentIntent の取得を繰り返します。ただし、この方法は信頼性がかなり低く、レート制限の問題が発生する可能性があります。Stripe では API リクエストのレート制限を実施しているため、ポーリングを使用する際には注意が必要です。

Webhook イベントを処理するには、サーバーにルートを作成し、ダッシュボードで対応する Webhook エンドポイントを設定します。Stripe は、支払いが成功した場合は payment_intent.succeeded イベントを、支払いが失敗した場合は payment_intent.payment_failed イベントを送信します。

Webhook ペイロードには PaymentIntent オブジェクトが含まれます。次の例は、この 2 つのイベントの処理方法を示しています。

Ruby
require 'sinatra' require 'stripe' post '/webhook' do payload = request.body.read sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature status 400 return end case event['type'] when 'payment_intent.succeeded' intent = event['data']['object'] puts "Succeeded:", intent['id'] # Fulfill the customer's purchase when 'payment_intent.payment_failed' intent = event['data']['object'] error_message = intent['last_payment_error'] && intent['last_payment_error']['message'] puts "Failed:", intent['id'], error_message # Notify the customer that payment failed end status 200 end

支払いに失敗した場合、PaymentIntent の last_payment_error プロパティを調査することで詳細を確認できます。顧客に支払いが完了していないことを通知し、別の支払い方法で再実行するように促すことができます。同じ PaymentIntent を再利用して顧客の購入を引き続き追跡します。

特定の Webhook イベントを処理する

次のリストは、Webhook イベントの処理方法を示しています。

イベント説明次のステップ
processing顧客の支払いは Stripe に正常に送信されました。これは支払い成功の通知が遅延する支払い方法にのみ適用できます。開始された支払いが成功するか、失敗するかの結果を待ちます。
succeeded顧客の支払いが成功しました購入された商品やサービスのフルフィルメントを実行します
amount_capturable_updated顧客の支払いがオーソリされ、キャプチャーが可能になりました支払いに利用できる売上をキャプチャします
payment_failedカードネットワークから顧客の支払いが拒否されたか、有効期限が切れています顧客にメールまたはプッシュ通知を送信して、別の支払い方法を指定するよう促します

Webhook をローカルでテストするには、Stripe CLI を使用できます。Stripe CLI をインストールすると、サーバーにイベントを転送できるようになります。

Command Line
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)

Webhook の設定についてもっと知る。

PaymentIntent で支払いを識別する

顧客からの支払いを回収しようとしたときに、PaymentIntent によって Charge (支払い) が作成されます。最新の支払いの ID を取得するには、PaymentIntent の latest_charge プロパティを調べます。

Ruby
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
intent = Stripe::PaymentIntent.retrieve('{{PAYMENT_INTENT_ID}}') latest_charge = intent.latest_charge

失敗した支払いも含めて PaymentIntent に関連するすべての支払いを表示するには、すべての支払いをリストして、payment_intent​ パラメーターを指定します。

Command Line
cURL
curl -G https://api.stripe.com/v1/charges \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d payment_intent=
{{PAYMENT_INTENT_ID}}

次のアクションを処理する

支払い方法によっては、支払いプロセスの完了に、認証などの追加ステップが必要になります。Stripe.js は PaymentIntent の確定時に追加ステップを自動的に処理しますが、高度な実装では手動での処理が必要になることもあります。

PaymentIntent の next_action プロパティーは、支払いを完了するために実装で処理する必要がある次のステップを示します。想定される次のアクションのタイプは、支払い方法ごとに異なる可能性があります。想定される次のアクションの詳細リストについては、API ドキュメントをご覧ください。

必要な次のアクションの処理方法について、詳細は支払い方法のドキュメントをご覧ください。

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