我目前正在开展一个项目,我确实要出售用户积分,以便用户可以使用这些积分购买商品。我已经设置了条带 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>
答案 0 :(得分:0)
要检索任何 HTTP 动词使用的输入值:
$qty = $request->input('qty');
答案 1 :(得分:0)
感谢@nitrin0 建议使用购物车包的计数功能解决
$qty = Cart::count();
$credits->amount = $credits->amount + $qty;
$credits->save();