コンテンツにスキップ
アカウント作成/サインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成サインイン
導入方法
決済管理
売上管理
プラットフォームとマーケットプレイス
資金管理
開発者向けリソース
API & SDKヘルプ
概要
Stripe Payments について
構築済みのシステムをアップグレード
決済分析
オンライン決済
概要ユースケースを見つけるManaged Payments を使用する
Payment Links を使用する
事前構築済みの決済ページを使用する
Elements を使用したカスタム統合の構築
アプリ内実装を構築
対面決済
Terminal
決済手段
決済手段を追加
    概要
    支払い方法の導入オプション
    ダッシュボードで決済手段を管理
    決済手段のタイプ
    カード
    Stripe 残高で支払う
    ステーブルコインでの支払い
    銀行口座引き落とし
      ACH ダイレクトデビット
        決済を受け付ける
        銀行情報の保存
        ACH 口座振替を Charges から新しい API に移行する
        他の決済代行業者からの移行
        ブロックされた銀行口座
        SEC コード
      Bacs ダイレクトデビット
      カナダのプレオーソリデビット
      オーストラリアの BECS ダイレクトデビット
      ニュージーランドBECS ダイレクトデビット
      SEPA ダイレクトデビット
    銀行へのリダイレクト
    銀行振込
    クレジットトランスファー (Sources)
    後払い
    リアルタイム決済
    店舗支払い
    ウォレット
    国ごとに現地の決済手段を有効化
    カスタムの決済手段
決済手段を管理
Link による購入の迅速化
決済シナリオ
複数の通貨を扱う
カスタムの決済フロー
柔軟なアクワイアリング
オーケストレーション
決済以外の機能
会社を設立する
暗号資産
エージェント型コマース
Financial Connections
Climate
不正利用について
Radar の不正防止
不審請求の申請の管理
本人確認
アメリカ
日本語
ホーム決済管理Add payment methodsBank debitsACH Direct Debit

メモ

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

ACH ダイレクトデビットによる支払いを受け付ける

カスタムの決済フォームを構築するか、Stripe Checkout を使用して、ACH ダイレクトデビットによる決済を受け付けます。

アプリでの ACH ダイレクトデビットによる決済の受け付けは、以下のように構成されます。

  • 決済を追跡するためのオブジェクトを作成する
  • 支払い方法の詳細を収集する
  • 決済を処理するために Stripe に送信する
  • 顧客の銀行口座を確認する

Stripe では、Payment Intent (支払いインテント) を使用して、支払いが完了するまでの状態のすべてを追跡および処理します。

メモ

ACH ダイレクトデビットは通知遅延型の支払い方法であるため、決済後すぐには売上が利用可能になりません。通常、決済金額がお客様のアカウントに入金されるまでに 4 営業日かかります。

Stripe を設定する
サーバ側
クライアント側

サーバ側

この組み込みには、Stripe API と通信するエンドポイントがサーバ上に必要です。Stripe の公式ライブラリを使用して、サーバから Stripe API にアクセスします。

Command Line
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

クライアント側

React Native SDK はオープンソースであり、詳細なドキュメントが提供されています。内部では、ネイティブの iOS および Android の SDK を使用します。Stripe の React Native SDK をインストールするには、プロジェクトのディレクトリーで (使用するパッケージマネージャーによって異なる) 次のいずれかのコマンドを実行します。

Command Line
yarn add @stripe/stripe-react-native

次に、その他の必要な依存関係をインストールします。

  • iOS の場合は、ios ディレクトリに移動して pod install を実行し、必要なネイティブ依存関係もインストールします。
  • Android の場合は、依存関係をインストールする必要はありません。

メモ

公式の TypeScript ガイドに従って TypeScript のサポートを追加することをお勧めします。

Stripe の初期化

React Native アプリで Stripe を初期化するには、決済画面を StripeProvider コンポーネントでラップするか、initStripe 初期化メソッドを使用します。publishableKey の API 公開可能キーのみが必要です。次の例は、StripeProvider コンポーネントを使用して Stripe を初期化する方法を示しています。

import { useState, useEffect } from 'react'; import { StripeProvider } from '@stripe/stripe-react-native'; function App() { const [publishableKey, setPublishableKey] = useState(''); const fetchPublishableKey = async () => { const key = await fetchKey(); // fetch key from your server here setPublishableKey(key); }; useEffect(() => { fetchPublishableKey(); }, []); return ( <StripeProvider publishableKey={publishableKey} merchantIdentifier="merchant.identifier" // required for Apple Pay urlScheme="your-url-scheme" // required for 3D Secure and bank redirects > {/* Your app code here */} </StripeProvider> ); }

メモ

テストおよび開発時には API のテストキーを使用し、アプリの公開時には本番環境キーを使用します。

Stripe では、顧客の銀行口座を即座に確認できます。口座に関する追加データを取得する場合は、Stripe Financial Connections を使用してデータアクセスを登録します。

Stripe Financial Connections を使用すると、金融口座をビジネスに関連付けることで、顧客が財務データを安全に共有できます。Financial Connections を使用して、トークン化された口座番号と金融番号、残高データ、所有者の詳細、取引データなどの顧客に許可された財務データにアクセスします。

このデータにアクセスすることで、決済を開始する前に残高を確認するなどのアクションを実行し、残高不足による決済の失敗の可能性を減らすことができます。

Financial Connections は、ユーザーがより少ないステップで自身のアカウントを Link に関連付け、Stripe のすべての加盟店に銀行口座の詳細を保存して、素早く再利用できるようにします。

顧客を作成または取得する
推奨
サーバー側

Customers v1 と Accounts v2 のリファレンスを比較する

顧客が Accounts v2 の事業体に該当する場合は、ガイドを参照して、コード内の Customer とイベントの参照先を、同等の Accounts v2 API リファレンスに置き換えてください。

ユーザーがビジネスでアカウントを作成する際に、Customer オブジェクトを作成するか、このユーザーに関連付けられた既存の Customer を取得します。この Customer オブジェクトの ID を、顧客を表す社内の内部表記と関連付けることで、保存されている支払い方法の詳細を後で取得して使用することができます。Financial Connections のリピートユーザーの最適化を有効にするには、Customer にメールアドレスを含めます。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d email={{CUSTOMER_EMAIL}}

PaymentIntent を作成する
サーバー側

PaymentIntent (支払いインテント) は、顧客から支払いを回収する意図を表すオブジェクトで、決済プロセスのライフサイクルの各段階を追跡します。

サーバー側

まず、サーバーで PaymentIntent を作成し、回収する金額と通貨 usd を指定します。Payment Intents API を使用した実装がすでにある場合は、PaymentIntent の支払い方法タイプのリストに us_bank_account を追加します。Customer の ID を指定します。

将来その支払い方法を再利用する場合には、値を off_session に設定して setup_future_usage パラメーターを指定します。

Financial Connections 手数料の詳細については、料金体系の詳細をご覧ください。

デフォルトでは、銀行口座の支払い情報の収集では、手動の口座番号入力と少額入金の確認のフォールバックオプションを使用し、Financial Connections で顧客のアカウントを即時確認します。Financial Connections を設定し、ACH の実装を最適化するために追加の口座データにアクセスする方法については、Financial Connections に関するドキュメントをご覧ください。たとえば、Financial Connections を使用して、ACH 決済の開始前にアカウントの残高を確認できます。

メモ

顧客がアカウントを認証した後で、追加データにアクセスを拡張するには、権限を拡張してアカウントを再度関連付ける必要があります。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d setup_future_usage=off_session \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=us_bank_account

クライアント側

PaymentIntent には client secret が含まれています。これを React Native アプリで使用することで、PaymentIntent オブジェクト全体を渡すことなく安全に支払いプロセスを完了できます。アプリで、サーバーの PaymentIntent をリクエストし、その client secret を保存します。

function PaymentScreen() { // ... const fetchIntentClientSecret = async () => { const response = await fetch(`${API_URL}/create-intent`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ // This is an example request body, the parameters you pass are up to you customer: '<CUSTOMER_ID>', product: '<PRODUCT_ID>', }), }); const {clientSecret} = await response.json(); return clientSecret; }; return <View>...</View>; }

支払い方法の詳細を収集する
クライアント側

PaymentIntent オブジェクト全体をクライアントに送信する代わりに、前のステップからの client secret を使用します。これは、Stripe API リクエストを認証する API キーとは異なります。

client secret は支払いを確定できるため、慎重に取り扱う必要があります。記録したり、URL に埋め込んだり、当該の顧客以外に漏洩することがないようにしてください。

collectBankAccountForPayment を使用して銀行口座の詳細を収集し、PaymentMethod を作成して PaymentIntent に関連付けます。ACH Direct Debit PaymentMethod を作成するには、billingDetails パラメーターに口座名義人を含める必要があります。

import {collectBankAccountForPayment} from '@stripe/stripe-react-native'; export default function MyPaymentScreen() { const [name, setName] = useState(''); const handleCollectBankAccountPress = async () => { // Fetch the intent client secret from the backend. // See `fetchIntentClientSecret()`'s implementation above. const {clientSecret} = await fetchIntentClientSecret(); const {paymentIntent, error} = await collectBankAccountForPayment( clientSecret, { paymentMethodType: 'USBankAccount', paymentMethodData: { billingDetails: { name: "John Doe", }, }, }, ); if (error) { Alert.alert(`Error code: ${error.code}`, error.message); } else if (paymentIntent) { Alert.alert('Payment status:', paymentIntent.status); if (paymentIntent.status === PaymentIntents.Status.RequiresConfirmation) { // The next step is to call `confirmPayment` } else if ( paymentIntent.status === PaymentIntents.Status.RequiresAction ) { // The next step is to call `verifyMicrodepositsForPayment` } } }; return ( <PaymentScreen> <TextInput placeholder="Name" onChange={(value) => setName(value.nativeEvent.text)} /> <Button onPress={handleCollectBankAccountPress} title="Collect bank account" /> </PaymentScreen> ); }

これにより、銀行口座の詳細の収集と確認を処理するモーダル UI が読み込まれます。処理が完了すると、PaymentMethod が PaymentIntent に自動的に関連付けられます。

オプション銀行口座の収集機能をカスタマイズする
クライアント側

ダークモード

デフォルトでは、銀行口座の収集機能は、デバイスの設定に基づいて、ライトモードとダークモードの互換性のある色を自動的に切り替えます。アプリがダークモードまたはライトモードに対応していない場合は、style をそれぞれ alwaysLight または alwaysDark に設定できます。

const {session, error} = await collectBankAccountForPayment( clientSecret, { style: 'alwaysLight', }, );

Android アプリで常にライトまたは常にダークのテーマを適用するには、Android の AppCompatDelegate を利用します。Stripe の UI は、この設定を自動的に反映します。

Kotlin
Java
No results
// force dark AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) // force light AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)

戻り先 URL を設定する (iOS のみ)
クライアント側

顧客がアプリを終了すると (Safari やバンキングアプリで認証するなど)、自動的にアプリに戻るための方法を提供します。多くの決済手段タイプで、戻り先 URL の指定が「必須」です。戻り先 URL を有効にしていても、指定がされていないと、戻り先 URL が必要な決済手段をユーザーに提示できません。

戻り先 URL を指定するには、以下のようにします。

  1. カスタム URL を登録します。ユニバーサルリンクはサポートされていません。
  2. カスタム URL を設定 します。
  3. 以下のように、URL を Stripe SDK に転送するようにルートコンポーネントを設定します。

メモ

Expo を使用している場合は、app.json ファイルでスキームを設定します。

App.tsx
import { useEffect, useCallback } from 'react'; import { Linking } from 'react-native'; import { useStripe } from '@stripe/stripe-react-native'; export default function MyApp() { const { handleURLCallback } = useStripe(); const handleDeepLink = useCallback( async (url: string | null) => { if (url) { const stripeHandled = await handleURLCallback(url); if (stripeHandled) { // This was a Stripe URL - you can return or add extra handling here as you see fit } else { // This was NOT a Stripe URL – handle as you normally would } } }, [handleURLCallback] ); useEffect(() => { const getUrlAsync = async () => { const initialUrl = await Linking.getInitialURL(); handleDeepLink(initialUrl); }; getUrlAsync(); const deepLinkListener = Linking.addEventListener( 'url', (event: { url: string }) => { handleDeepLink(event.url); } ); return () => deepLinkListener.remove(); }, [handleDeepLink]); return ( <View> <AwesomeAppComponent /> </View> ); }

ネイティブ URL スキームの詳細については、Android および iOS のドキュメントをご覧ください。

オプションFinancial Connections 銀行口座のデータにアクセスする
サーバー側

PaymentIntent の作成時に、追加のデータ権限をリクエストする場合にのみ、Financial Connections データにアクセスできます。

顧客がStripe Financial Connections 認証フローを完了すると、返される us_bank_account PaymentMethod には、Financial Connections アカウントを指す financial_connections_account ID が含まれます。この ID を使用して口座データにアクセスします。

よくある間違い

顧客が手動入力および少額入金によって関連付けた銀行口座には、Payment Method の financial_connections_account ID がありません。

Financial Connections アカウント ID を特定するには、PaymentIntent を取得して payment_method 属性を拡張します。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -G https://api.stripe.com/v1/payment_intents/
{{PAYMENT_INTENT_ID}}
\ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "expand[]"=payment_method
{ "id": "{{PAYMENT_INTENT_ID}}", "object": "payment_intent", // ... "payment_method": { "id": "{{PAYMENT_METHOD_ID}}", // ... "type": "us_bank_account" "us_bank_account": { "account_holder_type": "individual", "account_type": "checking", "bank_name": "TEST BANK", "financial_connections_account": "{{FINANCIAL_CONNECTIONS_ACCOUNT_ID}}", "fingerprint": "q9qchffggRjlX2tb", "last4": "6789", "routing_number": "110000000" } } // ... }

balances 権限の取得を選択した場合、この段階で残高を確認して、支払いの確定前に十分な資金があることを確認することをお勧めします。

追加の口座データを使用して、Financial Connections で ACH の実装を最適化する方法をご紹介します。

同意書承認を収集し、決済を送信する
クライアント側

決済を開始する前に、同意書の規約を表示して顧客から承認を得る必要があります。

Nacha の運営規則に準拠するため、決済を開始する前に、同意書の規約を表示して顧客から承認を得る必要があります。同意書の詳細については、こちらの記事をご覧ください。

顧客が同意書の規約を承認する際に、お客様は PaymentIntent を確定する必要があります。confirmPayment を使用して、インテントを確定します。

import {confirmPayment} from '@stripe/stripe-react-native'; export default function MyPaymentScreen() { const [name, setName] = useState(''); const handleCollectBankAccountPress = async () => { // See above }; const handlePayPress = async () => { // use the same clientSecret as earlier, see above const {error, paymentIntent} = await confirmPayment(clientSecret, { paymentMethodType: 'USBankAccount', }); if (error) { Alert.alert(`Error code: ${error.code}`, error.message); } else if (paymentIntent) { if (paymentIntent.status === PaymentIntents.Status.Processing) { // The debit has been successfully submitted and is now processing } else if ( paymentIntent.status === PaymentIntents.Status.RequiresAction && paymentIntent?.nextAction?.type === 'verifyWithMicrodeposits' ) { // The payment must be verified with `verifyMicrodepositsForPayment` } else { Alert.alert('Payment status:', paymentIntent.status); } } }; return ( <PaymentScreen> <TextInput placeholder="Name" onChange={(value) => setName(value.nativeEvent.text)} /> <Button onPress={handleCollectBankAccountPress} title="Collect bank account" /> <Button onPress={handlePayPress} title="Pay" /> </PaymentScreen> ); }

成功した場合、Stripe から以下のいずれかのステータスで PaymentIntent オブジェクトが返されます。

ステータス説明次のステップ
RequiresAction銀行口座を確認するには、さらにアクションを実行する必要があります。ステップ 6: 少額入金で銀行口座を確認する
Processing銀行口座が即座に確認されたか、確認が必要ありません。ステップ 7: PaymentIntent の成功を確認する

PaymentIntent の確定に成功した後、同意書の確認メールと収集した銀行口座情報を顧客に送信する必要があります。Stripe はデフォルトでこれらの処理を行いますが、ご希望に応じてカスタム通知の送信を選択することもできます。

少額入金で銀行口座を確認する
クライアント側

すべての顧客が銀行口座を即座に確認できるとは限りません。このような場合、Stripe は少額入金を銀行口座に送金します。この入金は、1 ~ 2 営業日後に顧客のオンライン明細書に表示されます。入金は以下の 2 つのいずれかの形式で行われます。

  • 明細書表記コード。Stripe は、SM で始まる一意の 6 桁の descriptorCode を使用し、0.01 USD の 1 件の少額入金を顧客の銀行口座に送金します。顧客は、この文字列を使用して銀行口座を確認します。
  • 金額。Stripe は、ACCTVERIFY という明細書表記を使用し、一意でない 2 件の少額入金を顧客の銀行口座に送金します。顧客は、この入金額を使用して銀行口座を確認します。

前のステップで行った confirmPayment メソッドの呼び出しの結果として、requiresAction ステータスの PaymentIntent が返される場合、PaymentIntent には、確認を完了するための有益な情報を含む nextAction フィールドが含まれています。

nextAction: { type: 'verifyWithMicrodeposits'; redirectUrl: "https://payments.stripe.com/…", microdepositType: "descriptor_code"; arrivalDate: "1647586800"; }

請求書メールを指定した場合、Stripe はこのメールで入金の到着予定日を顧客に通知します。このメールには、Stripe がオンラインで提供する確認ページへのリンクが含まれ、顧客はそのページで入金額を確認して銀行口座の確認を完了させることができます。

警告

確認の失敗は、明細書表記ベースの少額入金の場合は 10 回、金額ベースの少額入金の場合は 3 回までです。この上限を超えると、Stripe は銀行口座を確認できなくなります。また、少額入金の確認は 10 日経過するとタイムアウトになります。この期間内に少額入金を確認できなかった場合、PaymentIntent は新しい支払い方法の詳細を要求する状態に戻ります。少額入金とは何か、どのように使用されるのかを顧客に明確に伝えることで、確認に関する問題を回避できます。

支払いが requiresAction 状態であり、nextAction のタイプが verifyWithMicrodeposits であることを確認できる場合は、2 つの方法で銀行口座の確認を完了できます。

  1. 明細書表記コードまたは金額を収集した後、verifyMicrodepositsForPayment を呼び出して、入金をアプリで直接確認します。
import { verifyMicrodepositsForPayment } from '@stripe/stripe-react-native'; export default function MyPaymentScreen() { const [verificationText, setVerificationText] = useState(''); return ( <TextInput placeholder="Descriptor code or comma-separated amounts" onChange={(value) => setVerificationText(value.nativeEvent.text)} // Validate and store your user's verification input /> <Button title="Verify microdeposit" onPress={async () => { const { paymentIntent, error } = await verifyMicrodepositsForPayment(secret, { // Provide either the descriptorCode OR amounts, not both descriptorCode: verificationText, amounts: verificationText, }); if (error) { Alert.alert(`Error code: ${error.code}`, error.message); } else if (paymentIntent) { Alert.alert('Payment status:', paymentIntent.status); } }} /> ); }
  1. Stripe が自動的にオンラインで提供する確認ページを使用します。そのためには、nextAction オブジェクトの nextAction[redirectUrl] URL (上記を参照) を使用し、顧客に確認プロセスを完了するよう指示します。
const {error, paymentIntent} = await confirmPayment(clientSecret, { paymentMethodType: 'USBankAccount', }); if (error) { Alert.alert(`Error code: ${error.code}`, error.message); } else if (paymentIntent) { if ( paymentIntent.status === PaymentIntents.Status.RequiresAction && paymentIntent?.nextAction?.type === 'verifyWithMicrodeposits' ) { // Open the Stripe-hosted verification page Linking.openURL(paymentIntent.nextAction.redirectUrl); } }

銀行口座の確認に成功すると、Stripe は PaymentIntent オブジェクトを Processing の status で返し、payment_intent.processing Webhook イベントを送信します。

確認が失敗する原因はいくつか存在します。失敗は直接的なエラー応答で同期的に発生することも、payment_intent.payment_failed Webhook イベントを通じて非同期で発生することもあります (以下の例を参照してください)。

{ "error": { "code": "payment_method_microdeposit_verification_amounts_mismatch", "message": "The amounts provided do not match the amounts that were sent to the bank account. You have {attempts_remaining} verification attempts remaining.", "type": "invalid_request_error" } }
エラーコード同期または非同期メッセージステータスの変化
payment_method_microdeposit_failed同期、または Webhook イベントを通じて非同期で発生少額入金に失敗しました。指定した銀行口座、金融機関、支店の番号を確認してくださいstatus は requires_payment_method で、last_payment_error が設定されます。
payment_method_microdeposit_verification_amounts_mismatch同期指定された金額が銀行口座に送金された金額と一致しません。確認試行の残り回数はあと {attempts_remaining} 回です。変化なし
payment_method_microdeposit_verification_attempts_exceeded同期、または Webhook イベントを通じて非同期で発生許容された確認の試行回数を超えましたstatus は requires_payment_method で、last_payment_error が設定されます。
payment_method_microdeposit_verification_timeoutWebhook イベントを通じて非同期で発生少額入金がタイムアウトになりました。顧客は要求された 10 日の期間内に銀行口座を確認しませんでした。status は requires_payment_method で、last_payment_error が設定されます。

PaymentIntent の成功を確認する
サーバー側

ACH ダイレクトデビットは、通知遅延型の支払い方法です。このため、顧客の口座から引き落としを開始してから、決済の成功または失敗の通知を受けるまでに最大で 4 営業日かかります。

PaymentIntent を作成すると、その初期ステータスは processing となります。決済が成功すると、PaymentIntent のステータスは processing から succeeded に更新されます。

Webhook を使用して決済が成功したことを確認し、顧客に決済完了を通知することをお勧めします。Stripe ダッシュボードでイベントを表示することもできます。

PaymentIntent のステータスが更新されると、以下のイベントが送信されます。

イベント説明次のステップ
payment_intent.processing顧客の支払いは、Stripe に正常に送信されました。開始された決済の成功または失敗の結果を待ちます。
payment_intent.succeeded顧客の支払いが成功しました。購入された商品またはサービスのフルフィルメントを行います。
payment_intent.payment_failed顧客の支払いは拒否されました。これは、少額入金確認の失敗に適用されることもあります。顧客にメールまたはプッシュ通知で連絡し、別の決済手段をリクエストします。少額入金の確認に失敗して Webhook が送信された場合、ユーザーは銀行口座情報の再入力を求められ、その後、新しい少額入金が口座に入金されます。

組み込みをテストする

Financial Connections を使用して即時確認を行うシナリオをテストする方法をご紹介します。

サンドボックスで取引メールを送信する

銀行口座の詳細を収集し、同意書を受け付けたら、サンドボックスで同意書の確認メールと少額入金の確認メールを送信します。

ドメインが {domain} で、ユーザー名が {username} の場合、メール形式 {username}+test_email@{domain} を使用してテスト取引メールを送信します。

たとえば、ドメインが example.com でユーザー名が info の場合、ACH Direct Debit 決済のテストには info+test_email@example.com という形式を使用します。この形式により、メールが正しくルーティングされます。+test_email サフィックスを含めない場合、メールは送信されません。

よくある間違い

テスト中にこれらのメールをトリガーするには、Stripe の本番環境利用の申請を行う必要があります。

テスト用口座番号

Stripe では、手動入力の銀行口座の組み込みが本番環境に移行する準備が整ったかどうかを確認するため、テスト用の口座番号と対応するトークンをいくつか用意しています。

口座番号トークン金融番号動作
000123456789pm_usBankAccount_success110000000支払いは成功します。
000111111113pm_usBankAccount_accountClosed110000000口座が解約済みであるため、支払いは失敗します。
000000004954pm_usBankAccount_riskLevelHighest110000000この支払いは、不正利用のリスクが高いため、Radar によってブロックされています。
000111111116pm_usBankAccount_noAccount110000000口座が見つからないため、支払いは失敗します。
000222222227pm_usBankAccount_insufficientFunds110000000残高不足のため、支払いは失敗します。
000333333335pm_usBankAccount_debitNotAuthorized110000000引き落としがオーソリされていないため、支払いは失敗します。
000444444440pm_usBankAccount_invalidCurrency110000000通貨が無効であるため、支払いは失敗します。
000666666661pm_usBankAccount_failMicrodeposits110000000支払いで少額入金の送金が失敗します。
000555555559pm_usBankAccount_dispute110000000支払いによって不審請求の申請が開始されています。
000000000009pm_usBankAccount_processing110000000支払いは無期限に処理中のままになります。 PaymentIntent キャンセル をテストするのに役立ちます。
000777777771pm_usBankAccount_weeklyLimitExceeded110000000支払い額がアカウントの週次支払い額の上限を超えているため、支払いが失敗しました。

テスト取引を完了する前に、自動的に支払いに成功または失敗するテスト用のすべての口座を確認する必要があります。確認するには、下記の少額入金のテスト用の金額または明細書表記コードを使用します。

少額入金の金額と明細書表記コードをテストする

さまざまなシナリオを再現するために、これらの少額入金の金額「または」明細書表記コードの値 0.01 を使用します。

少額入金の金額明細書表記コードの値 0.01シナリオ
32 および 45SM11AAアカウントの確認をシミュレーションします。
10 および 11SM33CC許容された確認回数の超過をシミュレーションします。
40 および 41SM44DD少額入金のタイムアウトをシミュレーションします。

売上処理の動作をテストする

テスト取引は即座に売上として処理され、利用可能なテスト残高に追加されます。この動作は、利用可能な残高で取引が売上として処理されるまでに数日かかることがある、本番環境とは異なります。

オプション即時の確認のみ
サーバー側

デフォルトでは、アメリカの銀行口座による支払いを使用すると、顧客は銀行口座の即時確認、または少額入金を使用できます。必要に応じて、PaymentIntent を作成するときに、verification_method パラメーターを使用して、銀行口座の即時確認のみを要求するように設定することもできます。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d setup_future_usage=off_session \ -d customer=
"{{CUSTOMER_ID}}"
\ -d "payment_method_types[]"=us_bank_account \ -d "payment_method_options[us_bank_account][verification_method]"=instant \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=payment_method \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=balances

これにより、少額入金の確認を処理する必要はなくなりますが、即時確認に失敗した場合は、PaymentIntent のステータスは、顧客の銀行口座の即時確認に失敗したことを示す requires_payment_method となります。

オプション少額入金のみによる確認
サーバー側

デフォルトでは、アメリカの銀行口座による支払いを使用すると、顧客は銀行口座の即時確認、または少額入金を使用できます。必要に応じて、PaymentIntent を作成するときに、verification_method パラメーターを使用して、少額入金による確認のみを要求するように設定することもできます。

注意

カスタムの決済フォームを使用している場合、独自の UI を構築して銀行口座の詳細を収集する必要があります。Stripe の少額入金に関するメールを無効にしている場合は、少額入金のコードまたは金額を確認するために顧客用の独自の UI を構築する必要があります。

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d setup_future_usage=off_session \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=us_bank_account \ -d "payment_method_options[us_bank_account][verification_method]"=microdeposits

オプション支払いの参照情報

支払い参照番号は銀行で生成され、これを使用して銀行口座の所有者は銀行で資金を確認できます。支払いが成功すると、ダッシュボードと Charge オブジェクト内に支払い参照番号が表示されます。

支払いの状態支払いの参照値
保留中利用不可
失敗利用不可
成功利用可能 (091000015001234 など)

また、charge.succeeded Webhook を受け取ったら、payment_method_details の内容を確認して、payment_reference を見つけます。

次のイベントの例は、成功した ACH 支払いと支払い参照番号を示しています。

{ "id": "{{EVENT_ID}}", "object": "event", // omitted some fields in the example "type": "charge.succeeded", "data": { "object": { "id": "{{PAYMENT_ID}}", "object": "charge", //... "paid": true, "payment_intent": "{{PAYMENT_INTENT_ID}}", "payment_method": "{{PAYMENT_METHOD_ID}}", "payment_method_details": { "type": "us_bank_account", "us_bank_account": { "account_holder_type": "individual", "account_type": "checking", "bank_name": "TEST BANK", "fingerprint": "Ih3foEnRvLXShyfB", "last4": "1000", "payment_reference": "091000015001234", "routing_number": "110000000" } } // ... } } }

destination_details の内容を表示して、返金された ACH 支払いに関連付けられた refund reference を見つけます。

次のイベントの例は、返金参照番号が指定された、成功した ACH 返金のレンダリングを示しています。 返金 の詳細をご覧ください。

{ "id": "{{EVENT_ID}}", "object": "event", "type": "charge.refund.updated", "data": { "object": { "id": "{{REFUND_ID}}", "object": "refund", //... "payment_intent": "{{PAYMENT_INTENT_ID}}", "destination_details": { "type": "us_bank_transfer", "us_bank_transfer": { "reference": "091000015001111", "reference_status": "available" } } // ... } } }
このページはお役に立ちましたか。
はいいいえ
  • お困りのことがございましたら 、サポートにお問い合わせください。
  • 変更ログをご覧ください。
  • ご不明な点がございましたら、お問い合わせください。
  • LLM ですか?llms.txt を読んでください。
  • Powered by Markdoc