LoginSignup
2
2

More than 3 years have passed since last update.

Stripeでの課金@Laravel 5.8

Posted at

まえがき

個人開発を行っているアプリで課金を行いため、調査を行った。

以前から気にはなっていたがテスト環境での課金が完了したため、記事とする。

日本語情報が少ない中試行錯誤したため更新していくかもしれない。

なお、動作確認を主としているためコードの可読性に関してはご容赦ください。

環境

Windows10 Pro 64bit
PHP7.3
Laravel 5.8

必要な設定

composer

composer require "stripe/stripe-php"

以上。Stripeの色々やってくれる便利なやつ。

.env

STRIPE_KEY=pk_test_***************************************
STRIPE_SECRET=sk_test_***************************************

.envファイルに記載。わかりゃ何でもいいです。

これは、ダッシュボードから確認できるものですね。

単独課金

// コントローラのアクションにベタ書きしてます

$token = env('STRIPE_SECRET');

// キーの設定。
\Stripe\Stripe::setApiKey($token);

/* 
入力してもらったカード情報をsubmitすると、"stripeToken"というキーで取得できるトークンを利用。
5000円の課金。
*/
$charge = \Stripe\Charge::create([
    'amount' => 5000,
    'currency' => 'jpy',
    'description' => 'Example charge',
    'source' => $request->stripeToken,
]);

顧客登録、顧客に基づく課金

// コントローラのアクションにベタ書きしてます

$token = env('STRIPE_SECRET');

// キーの設定。
\Stripe\Stripe::setApiKey($token);

/* 
顧客の登録。
配列のキー追加で顧客のアドレス、名称等々設定できますが今は必要最低限のもの。
*/
$customer = \Stripe\Customer::create([
    'source' => $request->stripeToken,
]);

// 上記で登録した顧客IDを元に、登録できます。
$charge = \Stripe\Charge::create([
    'amount' => 1000,
    'currency' => 'jpy',
    'customer' => $customer->id,
]);

登録済み顧客データから課金

前項の例で分かった方はいらっしゃるかと思いますが

// コントローラのアクションにベタ書きしてます

$token = env('STRIPE_SECRET');

// キーの設定。
\Stripe\Stripe::setApiKey($token);

// 顧客の取得。適当なモデルに紐付けたstripe_idで課金します。
$customer_id = Customer::find(1)->stripe_id;

// 上記で登録した顧客IDを元に、登録できます。
$charge = \Stripe\Charge::create([
    'amount' => 1000,
    'currency' => 'jpy',
    'customer' => $customer_id,
]);

参考

ドキュメント(カード登録んところ):https://stripe.com/docs/saving-cards
ドキュメント(テストカード):https://stripe.com/docs/testing

おわり

雑記のようなものですが備忘録。
希望貧乏なエンジニアなので何卒ご容赦を。

2
2
4

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