javascript - Paypal Express Checkout 窗口不断加载

标签 javascript jquery html paypal express-checkout

我正在尝试集成 PayPal 按钮以对我刚刚创建的新 Paypal 帐户执行简单的付款。 按照指南我渲染了按钮,但是当我点击它并出现新窗口时,没有任何反应。 “加载锁”不断旋转,但新窗口和我的页面中均未显示任何错误。不执行对“onError()”函数的调用。我不知道怎么了!我遵循了指南的指示!

浏览其他网站时,我在新窗口中看到,在加载(和“加载锁定”旋转)时执行了一些 get/post,但在我的情况下没有执行任何内容。

这是我的 HTML 和相关的 .js 文件(嗯,其中的一部分)

//THIS FUNCTION IS CALLED TO DISPLAY A NEW ELEMENT CONTAINING THE BUTTON 
function payment(todelete) {

    destroy(todelete);
    $("#pay").delay(timeFade).fadeIn(timeFade);
    
    paypal.Button.render({
        env: 'sandbox',
        client: {
            sandbox:    'MYKEY',
            production: 'MYKEY'
        },

        commit: true,

        payment: function(data, actions) {
            fetch("/getOldAmount").then(function(res){
                return (res.json());
            }).then(function(data){

                var old_amount = data[0].Donation;
                var amount_tot = $("#amount").val();
                //BUILDING A RANDOM TEST JSON, NOT RELATED TO MY CODE
                var payment_json = {
                        transactions: [
                            {
                                amount: {
                                    total:    '1.00',
                                    currency: 'USD'
                                }
                            }
                        ]
                    };
                if(amount_tot > old_amount){
                //WHEN CLICKING PAYPAL BUTTON I CAN SEE THIS LOG, SO EVERYTHING IS FINE HERE
                    console.log("EXECUTING PAYPAL POST");
                    return actions.payment.create(payment_json);
                } else {
                    console.log("Amount too low to execute transaction");
                }

            });
        },

        onAuthorize: function(data, actions) {
            return actions.payment.execute().then(function(payment) {
                console.log("AUTHORIZED");
            });
        },
        onError: function(data, actions){
            console.log("ERRORRRRRR");
            console.log(data);
        }

    }, '#paypal-button');
    
}
<div class="container pagination-centered" style="display: block">
            <div class="form-group">
                <label class="richest_header" for="amount">ENTER AMOUNT</label>
                <input type="text" class="form-control amount-field" id="amount" placeholder="Amount..." name="amountField">
            </div>
            <div id="paypal-button"></div>
</div>

<!-- HEADER -->
    [...]
<script src="https://www.paypalobjects.com/api/checkout.js">
    <script type="text/javascript" src="assets/script/myscript.js"></script>
    [...]

我需要做更多的事情吗? 我需要添加代码吗? 难道我做错了什么? 为什么 paypal 文档这么差?

最佳答案

您需要将 promise 返回给 payment() -- return fetch("/getOldAmount").then(...

关于javascript - Paypal Express Checkout 窗口不断加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47445047/

相关文章:

javascript - Google Transliterate 结果未在 Angular Controller 中使用的范围内更新

jquery - 如何使用jQuery区分嵌套元素标签的点击功能?

JavaScript 在数组内迭代数组的意外行为

javascript - 如何隐藏从其他(复杂)3D 对象背面伸出的 3D 对象部分?

javascript - 如何将文本添加到图像 anchor ?

javascript - 单击链接时将事件类添加到父列表

javascript - 无法使用 AjaxSubmitButton 上传图片

python - Flask 不会在 html 中播放视频

Javascript - ERR_CONTENT_LENGTH_MISMATCH

jquery - 鼠标悬停时出现棘手的延迟