WEBエンジニアによるキンスレと技術系ブログ

今はまっているゲームと技術系の記事をメインに投稿を続けるブログ

ページ内リンク

【Laravel】Stripeをインストールして決済処理を実装してみた

先日Stripe勉強会に参加しクレジットカードによる決済処理を容易に実装出来ることを知り、
実際にLaravelプロジェクトに決済処理を実装していきます。

決済には、テストモードと本番モードが存在しますが、今回はテストモードのみとなります。

事前準備

決済処理にはAPIキーが必要となります。
Stripeの公式でアカウントを作成するだけでテスト用のAPIキーが取得できます。

本番用APIキーの取得には、「本番環境利用の申請」を行う必要があります。
本番モードへの切り替えはAPIキーを入れ替えるだけで簡単に切り替えが可能となります。

stripe.com

Stripeをインストール

まずはインストールから行います。
公式のドキュメントに沿ってやっていきます。

公式ドキュメント:https://stripe.com/docs/development#php

今回はComposerを使用します。

[実行コマンド]

$composer require stripe/stripe-php

決済のテストを実施

テスト用の処理を実行して決済が実行されるかを確認します。

確認用コード(公式より抜粋)

<?php
\Stripe\Stripe::setApiKey("[シークレットキー]");

$charge = \Stripe\Charge::create([
    'amount' => 999,
    'currency' => 'usd',
    'source' => 'tok_visa',
    'receipt_email' => 'jenny.rosen@example.com',
]);
?>

※[シークレットキー]はStripe画面の「シークレットキー」の内容をコピーして貼り付けます。

実際に処理を実行してみましょう。

処理が実行されるとStripeの画面に決済の結果が追加されます。

[支払い確認画面] f:id:raruspeer:20190402230225p:plain amountで999を指定していたので$9.99の決済が追加されています。
currencyが「usd」となっているので$になっています。
日本円にする場合は「jpy」を指定します。

決済用ボタンを画面に表示してみよう

公式のドキュメントに沿ってボタンを追加してきます。

公式ドキュメント: https://stripe.com/docs/quickstart

<form action="/stripetest" method="POST">
    @csrf
    <script
        src="https://checkout.stripe.com/checkout.js" class="stripe-button"
        data-key="[テスト用APIキー]"  {{-- テスト用APIキー --}}
        data-amount="1000"   {{-- 金額 --}}
        data-name="WEBエンジニアによるキンスレと技術系ブログ"    {{-- 実際に画面に表示されるタイトル --}}
        data-description="決済処理"  {{-- サブタイトル --}}
        data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
        data-locale="ja"  {{-- 言語設定:日本(ja) --}}
        data-currency="jpy" {{-- 日本円 --}}
        data-label="購入手続き"  {{-- ボタンの表示名 --}}
    ></script>
</form>

今回はFormのactionに「/stripetest」を設定しています。
画面で決済ボタンが押下されるとaction(*決済処理)が実行されます。

web.phpにrouteの設定を追加します。

*決済処理については公式ドキュメントを参照します。
https://stripe.com/docs/charges

<?php
Route::post('/stripetest', function () {

    /**
     * 以下の処理は公式ドキュメント(動的な明細書表記)より抜粋
     */
    \Stripe\Stripe::setApiKey("[シークレットキー]");

    $token = $_POST['stripeToken'];

    $charge = \Stripe\Charge::create([
        'amount' => 1000,
        'currency' => 'jpy',
        'description' => '決済処理',
        'source' => $token,
        'statement_descriptor' => 'Custom descriptor',
    ]);

    // 完了後画面遷移...
    dd("決済完了");
});
?>

上記コードを追加すると、下記のボタンが表示されます。

f:id:raruspeer:20190402232747p:plain

ボタンを押下することでクレジットカード情報の入力画面が表示されます。

f:id:raruspeer:20190402232853p:plain

Stripeにはテスト用のクレジットカードがあるので、動作確認用に内容を入力していきます。

テスト用カード一覧は公式ドキュメントをチェック: https://stripe.com/docs/testing

今回は下記内容を入力します。
カード番号以外はエラーが出ない程度の自由入力で大丈夫みたいです。

  • メールアドレス
    aaaaa000@test.com
  • カード番号
    4242424242424242
  • 利用期限
    01 / 20
  • セキュリティコード
    000

入力したら決済ボタンを押下してみましょう。
f:id:raruspeer:20190402233525p:plain

決済が完了したらStripeの画面でチェックしましょう。

f:id:raruspeer:20190403000332p:plain

1000円の明細が登録されていますね。
これで決済処理が実装完了です!!

まとめ

初めてStripeの決済を実装しましたが、30分ほどで実装できました・・・!
皆さんもこの記事を読んで実装ができましたでしょうか。。。?

実装の方法で質問などがあった場合はこの記事のコメントで受け付けています。
ありがとうございました。