请求未获取输入字段名称

时间:2021-06-21 13:56:00

标签: php laravel

我目前正在开展一个项目,我确实要出售用户积分,以便用户可以使用这些积分购买商品。我已经设置了条带 API 以在用户购买硬币时向他们收费,但是当我尝试传递用户在下面的功能中选择的数量时,它不起作用并且积分不会更新。它也没有显示错误,付款通过但贷记没有。这是控制器代码:

 public function pay(Request $request){
        Stripe::setApiKey(config('services.stripe.secret'));
        try{
        $charge = Charge::create([
            'amount' => Cart::total() * 100,
            'currency' => 'usd',
            'description' => 'test product',
            'source' => request()->stripeToken
        ]);
        Session::flash('success', 'Purchase successfull. wait for our email.');

        Cart::destroy();



        $credits = UserCredit::where('user_id', '=', Auth::user()->id)->first();
        $qty = $request->get('qty');
        $credits->amount = $credits->amount + $qty;

        $credits->save();

        Mail::to(request()->stripeEmail)->send(new \App\Mail\PurchaseSuccessful);

        } catch (Exception $exception) {
            Session::flash('failure', 'Purchase failed. please try again');
        }
        return redirect('/');
    }

这里是用户选择他想要购买的积分数量的输入

<td class="product-quantity">

<div class="quantity">
<a href="{{ route('cart.decr', ['id' => $pdt->rowId, 'qty' => $pdt->qty ]) }}" class="quantity-minus">-</a>

<input title="Qty" name="qty", id="qty" class="email input-text text" type="text" value="{{ $pdt->qty }}" placeholder="1" readonly>

 <a href="{{ route('cart.incr', ['id' => $pdt->rowId, 'qty' => $pdt->qty ]) }}" class="quantity-plus">+</a>
      </div>

</td>

我这里有没有逻辑错误。还有其他方法可以做到这一点吗? 提前致谢

这里是提交

<form action="{{ route('cart.add') }}" method="post">
                            @csrf
                            <div class="quantity">
                                <a href="#" class="quantity-minus quantity-minus-d">-</a>
                                <input title="Qty" class="email input-text qty text" name="qty" id="qty" type="text" value="1">
                                <a href="#" class="quantity-plus quantity-plus-d">+</a>
                            </div>

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

                            <button class="btn btn-medium btn--primary">
                                <span class="text">Add to Cart</span>

                                <span class="semicircle"></span>
                            </button>
                        </form>

decr 和 incr 函数

 public function incr($id, $qty){
        Cart::update($id, $qty + 99);
        Session::flash('succes', 'Product qunatity updated.');

        return redirect()->route('cart');
    }

    public function  decr($id, $qty){
        Cart::update($id, $qty - 100);
        Session::flash('succes', 'Product qunatity updated.');

        return redirect()->back();
    }

指向支付控制器的表单

 <span style="float: right;">
                                                            <form action="{{ route('cart.checkout') }}" method="POST">
                                                                  @csrf
                                                                  <script
                                                                      src="https://checkout.stripe.com/checkout.js" class="stripe-button"
                                                                      data-key="pk_test_51IxqgMAlDT4eyPaP6esPvqCU1oG6GFqtF9ZhOb0oytpk2WnYA99OcD0kqnNs8VOEm18CpV9k7wYI5VGMwRFXahp700RezbuxMS"
                                                                      data-amount="{{ Cart::total() * 100 }}"
                                                                      data-name="BetGame"
                                                                      data-description="Buy our products"
                                                                      data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
                                                                      data-locale="auto">
                                                                  </script>
                                                            </form>
                                                      </span>
                                    <div>

2 个答案:

答案 0 :(得分:0)

要检索任何 HTTP 动词使用的输入值:

$qty = $request->input('qty');

答案 1 :(得分:0)

感谢@nitrin0 建议使用购物车包的计数功能解决

$qty = Cart::count();
            $credits->amount = $credits->amount + $qty;
            $credits->save();