【技術解説】Laravel CashierとStripeを利用して決済機能を実装する手順

みなさんこんにちは。Wakka Inc.ベトナム拠点テクニカルマネージャーの鍋山です。今回はサービスで決済機能を検討されている方に向けて、実装方法の概要を解説したいと思います。 特にECサイトやSaaS系アプリケーションを提供される企業では、決済機能が必要になります。楽天やAmazon, AppStoreなどの決済機能を使う方法もありますが、規模が大きくなるにつれて加盟料や手数料の負担が大きくなりがちです。そのため、自社で決済機能の構築を検討されている方も多いのではないでしょうか。 PHPで決済機能を実装する場合、Laravel CashierとStripeを利用するケースが多いです。そこで、今回はStripeの概要をご説明した上で、決済機能を実装する手順について簡単に解説します。 目次 ●開発リソースの不足にお悩みなら● >>>Wakka.Inc独自の海外子会社設立サービスがおすすめ!無料でサービス資料をダウンロードできますのでぜひご覧ください。 Stripeとは? 『Stripe』とは、Webアプリケーションなどインターネットを通じて決済機能を提供するサービスです。企業規模に関係なく、幅広い企業がすでに導入しています。APIが準備されているため、さまざまなシステムと連携することが可能です。そのため、LaravelのCashierを使用してPHPで実装することができます。 Stripeのメリットは下記の通りです。 安価な費用で負担が少ない簡単に利用を開始できる画面遷移がない 費用が安い 1つ目のメリットは、費用が安いことです。 Stripeの決済サービスは、成果報酬制を採用しています。Stripeで決済された金額の3.6%のみを負担するだけです。もちろん、初期費用や月額費用などはかからないため、新規サービスをこれから立ち上げる方も導入しやすくなっています。 簡単にはじめられる 2つ目のメリットは、簡単にはじめられることです。 Stripeはメールアドレスや氏名、国情報、パスワードを入力すれば、新規会員登録ができます。また、審査も最短で1日程度となっており、素早くはじめられるという点が魅力です。「実装してすぐにテストをしたい」、「既存サービスに追加で実装し、すぐに決済できるようにしたい」という要望を叶えることができるため、非常に便利なサービスになります。 画面遷移がない 3つ目は、画面遷移がないことです。 画面遷移がある決済サービスは、お支払いをするときに別のサイトに自動でアクセスします。ユーザーによっては、怪しいと感じてしまい支払いを途中でやめてしまう人もいるでしょう。また、画面遷移をするときは、ほかのURLにアクセスすることになるため、回線状況が悪いとうまく画面が切り替わらずに決済ができないというようなトラブルが発生するケースも珍しくありません。 一方、Stripeは画面遷移をすることなく、実装したWebサイト上で決済が完了します。支払いまでがスムーズなので、ユーザーに不信感を抱かせることがありません。また、移動中のユーザーがWi-Fiからモバイル回線に切り替わった時にエラーが発生してしまう心配もないため決済画面での無駄な離脱を防ぐことができます。 Stripeのアカウントを取得する手順 まず、Laravel Cashierを利用して実装する前に、StripeでAPIを取得する必要があります。そのため、アカウント登録が必須です。ここでは、会員登録からAPI取得までの具体的な流れを解説しますので、APIの取得を検討している方は、ぜひ参考にしてください。 1.まずは、下記のURLにアクセスしてください。https://stripe.com/ja-us 2.画面右上のサインインをクリックします。 3.すでにアカウントを登録している人は、下記の画面でサインインしてください。アカウント登録が必要な方は、画面下部にあるユーザー登録をクリックします。 4.Stripeアカウント作成画面に遷移します。メールアドレスや氏名、国、パスワードなど必要事項を明記の上、プライバシーポリシーにチェックをし、「アカウントを作成」のボタンをクリックしてください。 5.以上でアカウント登録は終了です。この時点から決済機能のAPI取得が可能となります。 6.次に、APIの取得に移ります。APIは審査など必要なく、その場ですぐに取得可能です。 7.ホーム画面のサイドバーから「開発者」を選択してください。 8.次に、「開発者」の項目の中にある「APIキー」をクリックします。 9.アクセスすると画面中央に公開可能キーとシークレットキーが表示されています。トークンをコピーすれば、APIの取得が完了です。また、セキュリティをさらに高めたい場合は、制限付きのキーを作成して、公開可能キーとシークレットキーを生成します。 Laravel Cashierをインストールして決済機能を実装する手順 次は、Laravel Cashierをインストールして、先ほど取得したAPIキーを.encファイルに記載し、決済機能を実装します。具体的な手順は下記の通りです。ちなみに、PHPやLaravelなど、開発環境は事前に構築されていることが前提となっています。 1.まずは、Laravel Cashierをインストールします。インストールには、composerを使用してください。ちなみに、ルートユーザーではcomposerを使用できませんので注意しましょう。composer require “laravel/cashier”:”~7.0″ 2.次に.envファイルを編集して先ほど取得したAPIキーを貼り付けます。STRIPE_KEYに公開可能キーを貼り付け、STRIPE_SECRETにはシークレットキーを設定してください。STRIPE_KEY=公開可能キーSTRIPE_SECRET=シークレットキー 3.次に、コントローラーを作成します。コントローラー名は適切なものに変更してください。php artisan make:controller StripePaymentsController 4.次にコントローラーを実装します。APIキーをセットし、Create a charge通貨や金額などを設定してください。namespace App\Http\Controllers;use Illuminate\Http\Request;use Stripe\Stripe;use Stripe\Customer;use Stripe\Charge; class StripePaymentsController extends Controller{public function index(){return view(‘index’);} public function payment(Request $request){try{Stripe::setApiKey(env(‘STRIPE_SECRET’)); $customer = Customer::create(array(’email’ => $request->stripeEmail,‘source’ => $request->stripeToken)); $charge = Charge::create(array(‘customer’ => $customer->id,‘amount’ => 2000,‘currency’ => ‘jpy’)); return redirect()->route(‘complete’);}catch(Exception $e){return $e->getMessage();}} public function complete(){return view(‘complete’);}} 5.次にルーティング設定です。クラス名は適切なものに変更しましょう。Route::get(‘/’, ‘StripePaymentsController@index’)->name(‘index’); Route::get(‘/payment’, ‘StripePaymentsController@payment’)->name(‘payment’); Route::get(‘/complete’, ‘StripePaymentsController@complete’)->name(‘complete’); 6.ルーティング設定が完了したら、Viewを作成します。index.blade.phpとcomplete.blade.phpを作成し、支払い画面と決済完了画面を作りましょう。 7.今回のチュートリアルでは、 index.blade.phpは下記のようにコーディングしました。 {{ csrf_field() }} 8.complete.blade.phpで決済完了画面のViewを作成してください。 この度はご購入いただき、誠にありがとうございます! 10.下記が支払い画面と決済完了画面です。 11.StripeのAPIキーを使用してLaravel Cashierで決済機能を実装する手順は以上です。 StripeとPayPal、Squareとの違いについて Stripeのほかにも決済サービスはいくつか挙げることができます。その代表例としてピックアップできるのがPayPalやSquareです。実際に、StripeとPayPal、Squareの3種類でどのような違いがあるのか知っておきたい方も少なくないでしょう。この見出しでは、これらの違いについて解説します。 … Continue reading 【技術解説】Laravel CashierとStripeを利用して決済機能を実装する手順