PayPal 智能结账按钮是否容易受到攻击?

Are PayPal Smart Checkout Buttons vulnerable?

我正在制作一个电子商务网站,该网站应允许使用 Smart Checkout Buttons 进行 Paypal 付款。 我担心每个人都可以卷曲我的网站,获取原始 HTML+js 页面并编辑购买单位值。一旦他们完成了,他们就可以 运行 网页,将执行 js 代码,使用假值呈现按钮,并且他们可以伪造付款(用更少的钱)。 真的吗?是否有任何解决方案仍在使用智能按钮(没有 REST API)?

我无法手动创建按钮,因为会有很多不同用户出售的商品。

paypal.Buttons({

        // Set up the transaction
        createOrder: function(data, actions) {

            var o = actions.order.create({
                purchase_units: [{
                    amount: {
                        value: '30.99' //Can users change this ?
                    },
                    payee: {
                      email_address: 'sb-qloys3515897@business.example.com'//email of the sellers
                    }
                }]
            })

            return o;
        },

        // Finalize the transaction
        onApprove: function(data, actions) {
            console.log(details);
            return actions.order.capture().then(function(details) {
                // Show a success message to the buyer
                //alert('Transaction completed by ' + details.payer.name.given_name + '!');
                alert(details);
            });
        }


    }).render('#paypal-button-container');

如果你只使用 client-side 代码,那么是的,任何人都可以直接在他们的浏览器中编辑该客户端代码,并向你支付他们想要的任何金额,从 0.01 美元到数万美元不等。

如果您担心这种情况,那么仅 client-side 的集成对您来说显然太简单了,您应该使用您的服务器实现一个来执行您想要的验证。

在您的服务器上创建两条路线,一条用于 'Set Up Transaction',一条用于 'Capture Transaction',documented here.

然后让您的 PayPal 按钮调用这两个路由;这是最好的演示代码:https://developer.paypal.com/demo/checkout/#/pattern/server