1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Stripe テスト用銀行口座をAPI実行で登録する

Last updated at Posted at 2023-12-11

概要

Stripeが用意しているテスト用情報で銀行口座をAPIで登録する方法を簡単にまとめる。

前提

フレームワークはlaravelである。
laravel cashierライブラリを入れたときにStripeが用意するPHPのSDKライブラリが依存関係で一緒に入ってきていた。
今回はPHPのSDKを使ってtinkerから実行している。
Stripeのテスト環境にブラウザからログインする事ができ、APIキーとシークレットキーが吐き出され、確認できる状態であること。

本記事を読んでも解決しなかったら

迷わずサポートに連絡してみよう。
Stripeのサポートは非常に丁寧で、時間限定ではあるが日本語のやり取りにも対応し、電話、チャット、メールの中から選ぶ事ができる。
本当に気軽に連絡できるし、無料なのでぜひ使ってみてほしい。この記事を読むよりよっぽど早く解決できるだろう。

方法

下記をみてテスト用口座情報を確認する。

銀行口座とデビットカードを管理する___Stripe_のドキュメント.png

下記を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',         // 口座番号
    ],
]);

細かいキーの情報はこちらの隠れているパラメーター内部に記載されている。

Create_a_bank_account_token___Stripe_API_Reference.png

下記の内容が返された。

= 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(トークン)が振られ、ドキュメントにも記載されている。↓

Stripe_Connect_のテスト___Stripe_のドキュメント.png

日本のテスト用銀行口座はなぜか個々の情報のみで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

参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?