猿问

Laravel Stripe 支付表不是刚刚发布的

我正在使用来自 Stripe 的默认卡片元素,可以在这里找到。表单呈现,验证条包括作品和呈现。但是,我从未stripeToken生成过,因此订阅失败是由于;


This customer has no attached payment source

当我死了转储我的请求stripeToken是NULL。我认为这是因为条带表单处理程序对我来说根本不起作用,它们包含的事件侦听器永远不会触发。


看起来表单只是像普通表单一样发布,而不是条带添加的阻止默认 JS 侦听器。


<form action="{{ route('subscriptionCreate') }}" method="post" id="payment-form">

  @csrf

  <input type="hidden" name="plan" value="{{ $plan->id }}">

  <div class="form-row">

    <label for="card-element">

      Credit or debit card

    </label>

    <div id="card-element">

      <!-- A Stripe Element will be inserted here. -->

    </div>


    <div id="card-errors" role="alert"></div>

  </div>


  <button>Submit Payment</button>

</form>

这是我的控制器,正如我提到的,$request->stripeToken它不存在,我认为它永远不会被添加到表单中。


public function create(Request $request)

{


    $plan = Plan::findOrFail($request->get('plan'));


    $user = $request->user();


    $request->user()

        ->newSubscription($plan->name, $plan->stripe_plan)

        ->create($request->stripeToken,[

            'email' => $user->email

        ]);


    return redirect()->route('home')->with('success', 'Your plan subscribed successfully');

}


紫衣仙女
浏览 140回答 3
3回答

天涯尽头无女友

在这对我有用之前,我遇到了同样的问题:composer require stripe/stripe-php然后使用您的密钥更新 env 文件STRIPE_KEY=xxxxxxxxxxxxxxxxSTRIPE_SECRET=xxxxxxxxxxxxxxx然后用你的控制器use Stripe;&nbsp; &nbsp; public function create(Request $request)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; $plan = Plan::findOrFail($request->get('plan'));&nbsp; &nbsp; &nbsp; &nbsp; $user = $request->user();&nbsp; &nbsp; &nbsp; &nbsp; $request->user()&nbsp; &nbsp; &nbsp; &nbsp; ->newSubscription($plan->name, $plan->stripe_plan);&nbsp; &nbsp; &nbsp; &nbsp;// getting the plan cost&nbsp; &nbsp; &nbsp; &nbsp; $amount = $plan->plan_amount;&nbsp; &nbsp; &nbsp; &nbsp; Stripe\Stripe::setApiKey(env('STRIPE_SECRET'));&nbsp; &nbsp; &nbsp; &nbsp; Stripe\Charge::create ([&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "amount" => ($amount * 100),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "currency" => "usd",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "source" => $request->stripeToken,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "description" => "Test payment"&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ]);&nbsp; &nbsp; return redirect()->route('home')->with('success', 'Your plan subscribed successfully');&nbsp; &nbsp; &nbsp;}

红糖糍粑

默认的 Laravel 安装将包含一个app.js文件。通过简单地删除或注释掉包含在标题中的这个文件,Stripe 可以使用 Stripe Elements 生成令牌。
随时随地看视频慕课网APP
我要回答