LoginSignup
2
2

laravel ✕ Stripe サブスクや単発の決済実装の体験記(設定編)

Last updated at Posted at 2023-11-09

概要

  • laravelで提供しているアプリケーションでStripeを使った決済を実装してみる。

前提

  • 設定はすべてStripeのテスト環境で行う。 テスト環境ならどんな設定をしても料金の徴収が発生することはない。

流れ

  1. laravel cashierを入れる。
  2. Stripeに登録する。(テスト環境なら無料)
  3. 税務自動処理の有効化
  4. テストの商品を登録
  5. APIキーの取得と.envの記載
  6. コード側の税の自動計算設定
  7. 疎通確認

方法

  1. laravel cashierを入れる。

    1. 下記を実行してパッケージを入れる。本ライブラリはStripe公式が出しているstripe/stripe-phpのパッケージを完全にラップしている。ただし一部の機能はカバーしていないので必要な場合はstripe/stripe-phpの方で用意されている処理を直接呼び出す必要がある。なお、下記パッケージを入れるとstripe/stripe-phpも依存関係でダウンロードされる。カバーしていない仕組みを使いたい場合、改めてcomposer require stripe/stripe-phpを実行する必要はなさそうだ。

      composer require laravel/cashier
      
    2. 下記を実行してマイグレーションを行う。おそらくusersテーブルへのカラム追加とsubscription_itemsとsubscriptionsというテーブルが追加される。

      php artisan migrate
      
    3. Userモデルのクラスを開き、Billableトレイトをuserする。

      app/Models/User.php
      use Laravel\Cashier\Billable;
      
      use Billable; // クラス定義の中に記載する
      
    4. 下記を実行し、ルーティングの一覧を出力し、GET|HEAD stripe/payment/{id}POST stripe/webhookのルーティングが追加されていることを確認する。

      php artisan route:list
      
  2. Stripeに登録する。(テスト環境なら無料)

    1. 下記にアクセスする。

      1. https://stripe.com/jp
    2. 「今すぐ始める」をクリックする。

      Cursor_と_Stripe___オンライン決済・決済代行プラットフォーム.png

    3. 各種情報を入力して「アカウントを作成」をクリックする。

      新規登録___Stripeのオンライン決済サービスを簡単導入.png

    4. メールが届くので認証する。

      Cursor_と_メールアドレスを確認してください_-miriwo0517_gmail_com-_Gmail.png

    5. 「支払いの受け取りを設定する」を一旦クリックする。

      Cursor_と_ダッシュボード_–新規ビジネス–Stripe__テスト.png

    6. 左上の「✕」をクリックする。

      Cursor_と_本番環境利用の申請_–新規ビジネス–_Stripe.png

    7. ダッシュボードが開く。

      Cursor_と_ホーム_–新規ビジネス–Stripe__テスト.png

  3. 税務自動処理の有効化

    1. Stripeの左サイドバーの「その他+」をクリックし、「Tax」をクリックする。

      Cursor_と_Tax_–DokuPro_test–Stripe__テスト.png

    2. 「始める」をクリックする。

      Cursor_と_Tax_–DokuPro_test–Stripe__テスト.png

    3. ポップアップが出たら「始める」を更にクリックする。

    4. 概要タブで「税金の設定」をクリックする。

      Cursor_と_Tax_–DokuPro_test–Stripe__テスト.png

    5. 諸々の情報を入力する。

      Cursor_と_税金設定_–DokuPro_test–Stripe__テスト.png

    6. 「登録タブ」をクリックし、「登録を追加」をクリックする。

      Cursor_と_Tax_–DokuPro_test–Stripe__テスト.png

    7. 国を選択する。

      Tax_–DokuPro_test–Stripe__テスト.png

    8. 税率などが表示されるので確認して「徴収開始日」をクリックする。

      Tax_–DokuPro_test–Stripe__テスト.png

  4. テストの商品を登録

    1. Stripeの左サイドバーの「Billing」をクリックする。

      Cursor_と_Billing_–DokuPro_test–Stripe__テスト.png

    2. 「テスト商品を追加する」をクリックする。

      Cursor_と_Billing_–DokuPro_test–Stripe__テスト.png

    3. 下記のように設定する。設定が終わったら「商品を追加」をクリックする。

      Billing_–DokuPro_test–Stripe__テスト.png

    4. 左サイドバーの「その他+」をクリックし、「商品カタログ」をクリックする。

      Cursor_と_Billing_–DokuPro_test–Stripe__テスト.png

    5. 先程追加した「premium」という商品をクリックして詳細を開く。

      Cursor_と_商品カタログ_–DokuPro_test–Stripe__テスト.png

    6. 「API ID」をコピーしてメモしておく。(疎通確認時に使用する。)

      Cursor_と_商品カタログ_–DokuPro_test–Stripe__テスト.png

  5. APIキーの取得と.envの記載

    1. ダッシュボードで「開発者向けAPIキー」をクリックする。

      Cursor_と_ホーム_–新規ビジネス–Stripe__テスト.png

    2. 「公開可能キー」をSTRIPE_KEYとして、「シークレットキー」をSTRIPE_SECRETとして.envに記載する。

    3. その他下記の情報を.envに記載する。

      .env
      CASHIER_CURRENCY=ja_JP
      CASHIER_CURRENCY_LOCALE=ja_JP
      CASHIER_LOGGER=daily
      
    4. 下記を実行してconfigのキャッシュクリアを行う。

      php artisan config:clear
      
    5. php -m | grep intlを実行し、ヒットすれば何もしない。ヒットしなかったらphp-intl(ext-intl)という拡張モジュールをインストールする。当該の拡張モジュールは.envのCASHIER_CURRENCYen以外を設定するときに必ず必要らしい。

  6. コード側の税の自動計算設定

    1. app/Providers/AppServiceProvider.phpを開き、bootメソッドに下記の内容を追記する。

      app/Providers/AppServiceProvider.php
      use Laravel\Cashier\Cashier;
      
      public function boot(): void
      {
          Cashier::calculateTaxes();
      }
      
  7. 疎通確認

    1. usersテーブルにデータを1レコード分入れておく。(Stripe系以外のカラム)

    2. tinkerを起動する。

    3. 下記を実行し、エラーが発生しないことを確認する。

      $user = App\Models\User::first();
      $paymentMethod = 'pm_card_visa';
      
      $user->updateStripeCustomer([
          'address' => [
              'line1' => '1234 Main Street',
              'city' => 'San Francisco',
              'postal_code' => '94111',
              'state' => 'CA',
              'country' => 'US',
          ],
      ]);
      
      $user->newSubscription('default', 'price_1OAYFcEwNfmSaNN21CiuaKNj')->create($paymentMethod);
      
    4. Stripeの左サイドバーの「支払い」をクリックする。

      1. 支払いが成功していれば、下記のように支払い情報が登録されている。

        Cursor_と_支払い_–DokuPro_test–Stripe__テスト.png

      2. 詳細を開き、下記のように情報が入っていれば設定が問題なく行えており、疎通が確認できたことになる。

        支払い_–DokuPro_test–Stripe__テスト.png

参考文献

2
2
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
2
2