0
我在我的Laravel項目中使用paypal API,當用戶單擊提交時,我想創建並執行一項PayPal付款。問題是,貝寶是用JavaScript以下方式處理: 我-page.blade.php:Laravel paypal表單提交驗證
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script type="text/javascript">
(function ($) {
$('#submit').click(function(event) {
event.preventDefault()
$('#payments').fadeIn('slow')
var CREATE_PAYMENT_URL = '{{ route('change-company-activity-subject-paypal-create') }}'
var EXECUTE_PAYMENT_URL = '{{ route('change-company-activity-subject-paypal-execute') }}'
paypal.Button.render({
env: 'sandbox', // Or 'sandbox'
commit: true, // Show a 'Pay Now' button
payment: function() {
return paypal.request.post(CREATE_PAYMENT_URL, {_token: '{{ csrf_token() }}'}).then(function(data) {
// console.log(data)
return data.id
});
},
// onAuthorize() is called when the buyer approves the payment
onAuthorize: function(data, actions) {
console.log(data)
// Set up the data you need to pass to your server
var data = {
paymentID: data.paymentID,
payerID: data.payerID,
_token: '{{ csrf_token() }}'
};
// Make a call to your server to execute the payment
return paypal.request.post(EXECUTE_PAYMENT_URL, data)
.then(function (res) {
res = JSON.parse(res)
console.log(res)
window.alert('Payment Complete!');
});
}
}, '#paypal-button');
console.log('paypal')
})
})(jQuery)
</script>
當支付完成window.alert()
函數被調用在這種情況下。我想過要做$('#form').submit()
,所以表單在付款執行後提交。我的表單有後端驗證規則,如果您的輸入未通過某個驗證規則,它會重定向您。這樣做的問題是用戶的錢可能被拿走而且表單沒有提交。我怎樣才能避免這個問題?如何使用Javascript顯示登錄表單並執行付款時,僅當驗證通過時才顯示Paypal登錄表單並執行付款?
貝寶沒有的情況下,用戶支付,但關閉瀏覽器的自動響應的網址?該網址將在稍後的時間點通過PayPal與付款訂單的狀態進行通話。貝寶將發送數據到這個網址。即使您付費並點擊了該頁面並且未提交表單。 –
如何進行多個步驟?在第一步中,您將處理所有在後臺管理的內容,當所有內容都準備就緒時,您可以讓用戶選擇付款方式或確認付款並提交給PayPal。如果您不希望在確認付款之前將數據存儲在數據庫中(由於法律要求有時這是必要的),您可以將數據保存在會話中,然後根據付款請求的結果進行提交。如果付款失敗,您可能需要清除該會話,如果它通過,則保留會話中的(先前驗證過的)數據。 – dbrumann