BackEnd

Stripe Connectでダイレクト支払い導入編

投稿日:2021年2月24日 更新日:

はじめに

Stripe Connectとは、マーケットプレイス型のサイトを運営するために、複数の売り手が決済できるようにするサービスです。今回はダイレクト支払いを使用して、店舗に支払う方法を紹介します。

事前準備

Stripe Connectのサンプルを実装する上で、次のテーブルを用意します。

店舗用テーブル:
店舗のStripeアカウントIDを入れておくためのカラムを追加しています。
2021_02_20_000000_create_shops_table.php

商品テーブル:
店舗が販売する商品テーブルです。
2021_02_21_164202_create_products_table.php

StripeConnectの導入

今回はPHP・Laravelで実装していきます。

stripeパッケージの導入

composerで必要なパッケージをインストールしていきます。

envの実装

あらかじめ、.envにStripeに必要なキーを設定しておきます。Stripe管理画面の[開発者]>[APIキー]で確認できます。

店舗アカウントの登録

店舗アカウントを登録する流れを説明します。店舗は自分のStripeアカウントをOauth認証させて、サイトにStripeアカウントIDを登録します。

Stripe Connectの設定

Stripeの管理画面から、[設定]>[Connect]を開きます。
このような画面が表示されるため、設定をしていきます。

  • クライアントIDの取得
    クライアントIDをコピーして控えておいてください。
  • Oauth設定
    今回はStandardを選択します。
  • リダイレクト
    Oauth認証後のリダイレクトURLを指定します。今回は http://localhost/shop/dashboard/stripe_connect を指定します。

Oauth認証とアカウントID取得の実装

ここからは、サイトから店舗ユーザが、StripeにOauth認証でログインする部分を実装していきます。

Oauth認証用リンクの設置

Oauth認証用のURLは以下になります。

ca_hogehogeの部分には、先ほど取得したクライアントIDを指定してください。redirect_urlには、先ほど登録したリダイレクトURLを指定してください。
このリンクにアクセスすると、以下のようなStripeの登録・ログイン画面に遷移します。ここで、店舗はStripeアカウントでログインするか、新規登録することになります。

コードの取得とStripeアカウントIDの取得

認証が終わるとコード付きでリダイレクトされるので、そのパラメータを使用してStripeからアカウント情報を取得します。まずは、先ほどリダイレクト先に指定したルーティングから実装していきます。
web.php

次に、Controllerを実装していきます。
DashboardController.php

Stripeからは、リダイレクトのURLパラメータに、 code というパラメータが取得できます。これが認証に必要なコードなのですが、 Oauth::token() にパラメータごと渡すと、Stripeアカウント情報が取得できます。この中に stripe_user_id という “acct_”から始まる文字列が、Stripe ConnectでのAPI呼び出しに必ず必要になるため、店舗テーブルに保存しておきます。

Stripe Connectでの決済

ここからは実際に決済する部分を実装していきます。

ルーティング

商品の購入ページと購入処理用のルーティングを追加します。

商品購入ページの実装

コントローラーはシンプルですが以下になります。
ProductController.php

viewも実装していきます。カード情報を入力するフォームを表示し、決済できるようにします。

まずは、ここまで実装すると以下のようなページが出来上がります。

カード情報の送信

ここからは、実際に決済する処理を実装していきます。先ほどのviewファイルに以下のJSを追記します。

stripe.createPaymentMethod() を呼び出してStripeにカード情報を送信します。成功するとPaymentMethodが取得できます。PaymentMethodはそのまま決済にも使用できるほか、Stipre顧客を作成し、顧客の支払方法として登録することもできます。(今回は、決済にのみ使用します。)
result.paymentMethod.id がこの後の決済処理で必要となるパラメータなので、これをformにセットして、submitします。

決済処理の実装

先ほど取得したpayment_method_idを使用して、実際に決済する処理を実装していきます。

PaymentIntent::create() メソッドは、任意の金額で決済するメソッドです。第一引数のパラメータは、Stripe Connectを使用しない場合と同じですが、第二引数がポイントです。
第二引数では、 stripe_account キーに、支払先店舗のStripeアカウントIDを指定します。これを指定しないと、プラットフォームアカウント(大元のアカウント)への支払になってしまうため、注意してください。 stripe_account を指定するAPI呼び出しは、他のAPIでも使用できるので、StripeConnectで店舗に関するAPIをリクエストするときは、この第二引数を指定する必要があると覚えておいてください。

さいごに

今回はStripe Connectの導入編でした。次回は、支払方法の管理について紹介したいと思います。

おすすめ書籍

PHPフレームワークLaravel入門 第2版 PHPフレームワーク Laravel実践開発 PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 よくわかるPHPの教科書 【PHP7対応版】

blog-page_footer_336




blog-page_footer_336




-BackEnd
-,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

laravel logo

Laravelの基礎知識

1 はじめに2 Laravelの概要2.1 学習コストが低い2.2 Symfonyがベース2.3 DIを積極的に活用している3 ディレクトリ構成3.1 app3.2 bootstrap3.3 conf ...

Vue.js+TypeScriptな環境整備

1 はじめに2 vue-cliのインストール3 プロジェクトの作成3.1 機能の選択3.2 シンタックスの選択3.3 CSSプリプロセッサの設定3.4 Unit test3.5 E2E test3.6 ...

laravel logo

LaravelのArtisanコマンドを自作する

1 はじめに2 コマンドの作成方法3 コマンドの実装3.1 文字列出力3.2 引数3.3 オプション3.4 入力を使用した対話型3.4.1 ask()メソッド3.4.2 secret()メソッド3.4 ...

Pythonコードが育っても品質を維持するツールを考える[Ruff Pyright]

1 はじめに2 各ツールの目的2.1 Ruff2.1.1 Pylint (参考)2.2 Pyright3 各ツールの設定 (VSCodeでの使用例)3.1 Ruff3.2 Pyright4 pre-c ...

Stripe Connectを使って複合プランの継続課金を実装その2

1 はじめに2 追加プランの作成3 実装3.1 日割り金額の確認3.2 追加プランの契約4 さいごに5 おすすめ書籍 はじめに 前回の記事では、プラン(月額)とユーザ数分のID(従量課金)という2種類 ...

フォロー

blog-page_side_responsive

2021年2月
 123456
78910111213
14151617181920
21222324252627
28  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。