使用客户端 REST api 在 Laravel 中不显示 PayPal 按钮

Posted

技术标签:

【中文标题】使用客户端 REST api 在 Laravel 中不显示 PayPal 按钮【英文标题】:PayPal button is not displayed in Laravel using client side REST api 【发布时间】:2018-04-10 19:10:39 【问题描述】:

我已将 PayPal 付款选项添加到我的网站。我已经集成了 PayPal 支付的代码如下:

<div class="col-md-6 col-xs-12">
 <script src="https://www.paypalobjects.com/api/checkout.js"></script>
                        <div class="sec_pay_hd">
                            Payment Method
                        </div>
                        <div id="paypal-button-container"></div>
                        <div id="confirm" class="hidden">
                                    <div>Ship to:</div>
                                    <div><span id="recipient"></span>, <span id="line1"></span>, <span id="city"></span></div>
                                    <div><span id="state"></span>, <span id="zip"></span>, <span id="country"></span></div>

                                    <button id="confirmButton">Complete Payment</button>
                                </div>
                                <div id="thanks" class="hidden">
                                            Thanks, <span id="thanksname"></span>!
                                        </div>
                        <!-- <div class="pay_mode_img1 visa_imgsasa"> -->
                        <!-- </div> -->
                        <script>
                                    paypal.Button.render(

                                        env: 'sandbox', // sandbox | production

                                        client: 
                                            sandbox:    'AZDxjDScFpQtjWTOUtWKbyN_bDt4OgqaF4eYXlewfBP4-8aqX3PiV8e1GWU6liB2CUXlkA59kJXE7M6R',
                                            production: '<insert production client id>'
                                        ,

                                        payment: function(data, actions) 
                                            return actions.payment.create(
                                                payment: 
                                                    transactions: [
                                                        
                                                            amount:  total: '0.01', currency: 'USD' 
                                                        
                                                    ]
                                                
                                            );
                                        ,

                                        // Wait for the payment to be authorized by the customer

                                        onAuthorize: function(data, actions) 

                                            // Get the payment details

                                            return actions.payment.get().then(function(data) 

                                                // Display the payment details and a confirmation button

                                                var shipping = data.payer.payer_info.shipping_address;

                                                document.querySelector('#recipient').innerText = shipping.recipient_name;
                                                document.querySelector('#line1').innerText     = shipping.line1;
                                                document.querySelector('#city').innerText      = shipping.city;
                                                document.querySelector('#state').innerText     = shipping.state;
                                                document.querySelector('#zip').innerText       = shipping.postal_code;
                                                document.querySelector('#country').innerText   = shipping.country_code;

                                                document.querySelector('#paypal-button-container').style.display = 'none';
                                                document.querySelector('#confirm').style.display = 'block';

                                                // Listen for click on confirm button

                                                document.querySelector('#confirmButton').addEventListener('click', function() 

                                                    // Disable the button and show a loading message

                                                    document.querySelector('#confirm').innerText = 'Loading...';
                                                    document.querySelector('#confirm').disabled = true;

                                                    // Execute the payment

                                                    return actions.payment.execute().then(function() 

                                                        // Show a thank-you note

                                                        document.querySelector('#thanksname').innerText = shipping.recipient_name;

                                                        document.querySelector('#confirm').style.display = 'none';
                                                        document.querySelector('#thanks').style.display = 'block';
                                                    );
                                                );
                                            );
                                        

                                    , '#paypal-button-container');

                                </script>

                        <div class="visa_imgsasa">
                            <img src="asset('assets/resources/images/visa-image.png')" >
                        </div>

我在页面顶部添加了 paypal 脚本。但是现在我反复收到此错误

感谢任何形式的帮助,我已在网络上搜索此错误但找不到任何帮助。这是来自贝宝网站演示的示例代码。但这在我的本地服务器上也不起作用。

【问题讨论】:

我很乐意帮助调试(我维护 checkout.js)——是否有可以重现此错误的实时页面? 删除了包含网站链接的评论。 _/_ 【参考方案1】:

$('nav#menu').mmenu();

^ 从您的页面中删除它可以解决问题。我的猜测是从 DOM 中删除 iframe,然后重新添加它,这会导致 iframe 的内部窗口关闭。

【讨论】:

非常感谢,现在可以正常使用了。 mmenu 是一个第三方脚本来管理移动菜单,向右滑动。不知何故,这干扰了贝宝代码,我正在努力解决这个问题。但这是一种解脱。非常感谢!!

以上是关于使用客户端 REST api 在 Laravel 中不显示 PayPal 按钮的主要内容,如果未能解决你的问题,请参考以下文章

php 使用Passport进行Laravel REST API身份验证:https://www.cloudways.com/blog/rest-api-laravel-passport-authen

Laravel 7 - 使用 REST API 而不是数据库

如何使用 Laravel 5.3 创建 REST 完整 Web 服务的 Api

如何在 laravel 中使用社交名流和护照创建 REST API

如何在 Laravel Jetstream 上使用 REST API 管理用户

Laravel 5 REST API