概要
Stripeが用意しているテスト用情報で銀行口座をAPIで登録する方法を簡単にまとめる。
前提
フレームワークはlaravelである。
laravel cashierライブラリを入れたときにStripeが用意するPHPのSDKライブラリが依存関係で一緒に入ってきていた。
今回はPHPのSDKを使ってtinkerから実行している。
Stripeのテスト環境にブラウザからログインする事ができ、APIキーとシークレットキーが吐き出され、確認できる状態であること。
本記事を読んでも解決しなかったら
迷わずサポートに連絡してみよう。
Stripeのサポートは非常に丁寧で、時間限定ではあるが日本語のやり取りにも対応し、電話、チャット、メールの中から選ぶ事ができる。
本当に気軽に連絡できるし、無料なのでぜひ使ってみてほしい。この記事を読むよりよっぽど早く解決できるだろう。
方法
下記をみてテスト用口座情報を確認する。
下記をPHPの実行環境で実行する。筆者はlaravelのtinkerで実行した。 金融期間コードと口座番号はこちらを参考にした。(https://stripe.com/docs/connect/payouts-bank-accounts?bank-account-collection-integration=direct-api に「一部の国では、金融機関コードと支店コードなど、別個の情報を組み合わせて金融番号を作成する必要があります。」と記載されているが、日本は「一部の国」には含まれない。そのためrouting_number
には金融機関コードを、account_number
には口座番号を記載しよう。)
$stripe = new \Stripe\StripeClient('sk_test_から始まるシークレットキー');
$stripe->tokens->create([
'bank_account' => [
'country' => 'JP', // 銀行の国の情報
'currency' => 'jpy', // 通貨の情報
'account_holder_name' => 'ヤマダハナコ', // 口座名義人の名前
'account_holder_type' => 'individual', // 口座名義人のタイプ company か individual
'routing_number' => '1100000', // 金融機関コード
'account_number' => '0001234', // 口座番号
],
]);
細かいキーの情報はこちらの隠れているパラメーター内部に記載されている。
下記の内容が返された。
= Stripe\Token {
+saveWithParent: false,
id: "btok_XXXXXXXXXXXXXXXXXXXXXXXX",
object: "token",
bank_account: Stripe\BankAccount {#3905
+saveWithParent: false,
id: "ba_XXXXXXXXXXXXXXXXXXXXXXXX",
object: "bank_account",
account_holder_name: "ヤマダハナコ",
account_holder_type: "individual",
account_type: "futsu",
bank_name: "STRIPE TEST BANK",
country: "JP",
currency: "jpy",
fingerprint: "XXXXXXXXXXXXXXXX",
last4: "1234",
routing_number: "1100000",
status: "new",
},
client_ip: "42.124.117.97",
created: 1702304612,
livemode: false,
type: "bank_account",
used: false,
}
btok_XXXXXXXXXXXXXXXXXXXXXXXX
を使って連結アカウントの送金先アカウントを登録する事ができた。
余談
筆者はStripeのConnectの連結アカウントに送金するための銀行口座を登録したかった。
クレジットカードは下記の様にpaymentMethodの値(支払い方法のpm_
から始まるID?トークン?)がドキュメントで確認する事ができる。
しかしながらテスト用銀行口座はなぜか提示されていない。厳密に言うとUSの口座はID(トークン)が振られ、ドキュメントにも記載されている。↓
日本のテスト用銀行口座はなぜか個々の情報のみでID(トークン)が振られていない。↓
Connectに限った話かもしれないが、国をJPに設定し、通貨をjpyに設定しているアカウントに、別の国と通貨の口座を設定しようとするとエラーになるっぽい。↓エラー内容
Stripe\Exception\InvalidRequestException: Invalid currency: usd. You can use these currencies for transfers for an account in JP
まさかと思って提示されているトークンのusをjpに変えてbtok_jp_verified
で試してみたが「そんな口座は無い」って怒られた。(そりゃそう)
Stripe\Exception\InvalidRequestException: This token contains all valid parts, unfortunately it does not have a corresponding test bank account: 'btok_jp_verified'. in file /app/vendor/stripe/stripe-php/lib/Exception/ApiErrorException.php on line 38
参考文献