Laravel paypal表单提交验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel paypal表单提交验证相关的知识,希望对你有一定的参考价值。

我在Laravel项目中使用paypal API,当用户点击提交时,我想创建并执行PayPal付款。问题是paypal是用以下方式用javascript处理的:my-page.blade.php

<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.Button.render({
  payment: function() {},
  onAuthorize: function(data) {},
  onError: function(err) {
    // error handling
  },
  onCancel: function(data, actions) {
    // cancel handling
  },
});

以上是关于Laravel paypal表单提交验证的主要内容,如果未能解决你的问题,请参考以下文章

为 Laravel 集体表单创建手动提交按钮

使用 laravel 提交带有验证的模态表单

Laravel 重新提交表单验证仍然显示旧输入值

通过 jquery submit() 提交表单后的 Laravel 文件验证;

1000hz Bootstrap 验证器在验证触发时未提交 - Laravel

使用 laravel 框架提交数据后清除表单输入