前提・実現したいこと
Laravel5.5を使用して、よくあるショッピングサイトを作っています。
Stripeを使った決済処理を以下のサイトを参考にしながら実装しているとあるエラーが発生しました。
https://qiita.com/p_s_m_t/items/a69dfbc75804fe86ad9c
https://takkublog.net/stripe02/
発生している問題・エラーメッセージ
決済用のボタンは表示されているのですが、ボタンをクリックしてもデフォルトの入力フォームが表示されず、以下のエラー文が表示されます。
Cannot charge a customer that has no active card
該当のソースコード
PHP
1<form action="{{ route('settlement') }}" method="POST"> 2{{ csrf_field() }} 3<script src="https://checkout.stripe.com/checkout.js" class="stripe-button" 4data-key="{{ env('STRIPE_KEY') }}" 5data-amount="100" 6data-name="この商品の料金は100円です" 7data-locale="auto" 8data-allow-remember-me="false" 9data-label="購入する" 10data-currency="jpy"> 11</script> 12</form>
PHP
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use Stripe\Stripe; 7use Stripe\Customer; 8use Stripe\Charge; 9 10class SettlementController extends Controller 11{ 12 public function __construct() { 13 Stripe::setApiKey(env('STRIPE_SECRET')); 14 } 15 16 public function charge(Request $request) 17 { 18 try { 19 20 $customer = Customer::create([ 21 'email' => $request->stripeEmail, 22 'source' => $request->stripeToken 23 ]); 24 25 $charge = Charge::create([ 26 'customer' => $customer->id, 27 'amount' => 1000, 28 'currency' => 'jpy', 29 ]); 30 31 return back(); 32 } catch (\Exception $ex) { 33 return $ex->getMessage(); 34 } 35 } 36}
試したこと
StripeのAPIリクエストの部分を見てみると$customerは成功してて、$chargeの方でERR402が発生していることは確認できました。
あなたの回答
tips
プレビュー