<p>我正在使用Stripe,在這裡用戶透過一次付款訂閱不同的付費方案。付款成功進行,但主要問題是在3D Secure付款過程中(我們在歐洲運營,3D Secure付款檢查是強制性的),顯示給用戶的金額是0,00。這不僅是錯誤的,更重要的是,對即將進行付款的人來說是令人困惑的。</p>
公用函數purchase(Request $request, Plan $plan)
{
$user = $request->user();
$ paymentMethod = $ request - > input(' payment_method');
$encryptedSystemId = $request->input('system_id');
$encryptedBoxId = $request->input('box_id');
// 解密加密的ID
$systemId = Crypt::decrypt($encryptedSystemId);
$boxId = Crypt::decrypt($encryptedBoxId);
// 驗證ID和使用者授權
$system = System::findOrFail($systemId);
$box = Box::findOrFail($boxId);
$總計 = $計劃->價格;
嘗試 {
$user->createOrGetStripeCustomer();
$user->updateDefaultPaymentMethod($ paymentMethod);
$user->charge($total * 100, $ paymentMethod, [
'元資料' =>
['系統ID' => $系統ID,
'box_id'=> $boxId,
'租戶id'=> $用戶->租戶->id,
]
]); // * 100 因為 Stripe 處理的是美分
} catch (異常$異常) {
return back()->with('error', '處理付款時發生錯誤:' . $exception->getMessage());
}
<腳本 src="https://js.stripe.com/v3/"></script>
<腳本>
令 stripe = Stripe("{{ env('STRIPE_KEY') }}")
讓元素 = stripe.elements()
讓樣式= {
根據: {
顏色: '#32325d',
fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
fontSmoothing: '抗鋸齒',
字體大小:'16px',
'::佔位符': {
顏色:'#aab7c4'
}
},
無效的: {
顏色: '#fa755a',
圖示顏色:'#fa755a'
}
}
讓卡 = elements.create('卡', {
風格: 風格
})
卡.mount('#card-element')
讓 paymentMethod = null
$('.card-form').on('提交', function(e) {
$('#pay-btn').attr('已停用', true)
if (付款方式) {
回傳真
}
stripe.confirmCardSetup(
"{{ $intent->client_secret }}", {
付款方式: {
卡: 卡,
結算明細: {
名稱:$('.card_holder_name').val()
}
}
}
).then(函數(結果) {
if (結果.錯誤) {
toastr.錯誤(
'__("出租。您輸入的資料有錯誤!請審核
然後再試一次")')
$('#pay-btn').removeAttr('已停用')
}別的 {
paymentMethod = result.setupIntent. payment_method
$('.支付方法').val(支付方法)
$('.card-form').submit()
$('span.icon').removeAttr('隱藏');
$('#pay-btn').attr('已停用', true)
}
})
回傳錯誤
})
<div id="card-errors" role="alert"></div>
<div class="mt-3 text-center">
根據您提供的程式碼,您正在使用SetupIntents來收集付款方式的詳細資訊。 SetupIntents用於收集用於將來使用的付款方式詳細資訊:https://stripe.com/docs/payments/save-and-reuse。預計如果需要3DS,則金額為0.00,因為您在收集付款方式時不會對卡片收取任何金額。
如果您正在使用訂閱功能,您應該按照此指南進行操作:https://stripe.com/docs/billing/subscriptions/build-subscriptions?ui=elements,在付款時收集和保存付款方式。
如果您正在使用一次性付款,則可以在付款同時收集和保存付款方式的詳細資訊:https://stripe.com/docs/payments/save-during-payment。
#