Javascript 如何将JS变量传递给第二个脚本,而不必从控制台访问或修改它?
我有两个脚本,一个用于计算购物车中物品的总数,另一个用于将变量传递给PayPal API。是否可以将此变量从购物车脚本传递到PayPal脚本,而没有人能够从控制台更改其值?否则,人们将能够确定他们愿意为这些物品支付多少钱,并将信息发送到PayPal。这是我的密码: 购物车:Javascript 如何将JS变量传递给第二个脚本,而不必从控制台访问或修改它?,javascript,html,paypal,global-variables,private-key,Javascript,Html,Paypal,Global Variables,Private Key,我有两个脚本,一个用于计算购物车中物品的总数,另一个用于将变量传递给PayPal API。是否可以将此变量从购物车脚本传递到PayPal脚本,而没有人能够从控制台更改其值?否则,人们将能够确定他们愿意为这些物品支付多少钱,并将信息发送到PayPal。这是我的密码: 购物车: ``` var total = 0; //Total for all the items in the shopping cart, value is passed off to paypal-buttons.js to c
```
var total = 0; //Total for all the items in the shopping cart, value is passed off to paypal-buttons.js to complete the checkout.
贝宝:
paypal.Buttons({
style: {
shape: 'rect',
color: 'gold',
layout: 'vertical',
label: 'checkout',
},
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: total
}
}]
});
},
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
alert('Thank you for your order ' + details.payer.name.given_name + ', your equipment is on its way!');
});
}
}).render('#paypal-button-container');
我想将购物车中的“总计”值发送到PayPal。我可能会尝试使用模糊处理作为部分解决方案,但我希望它更安全。防止恶意客户端更改的唯一方法是切换到服务器端集成API调用以设置和捕获付款。以下是UI的演示模式: 以下是从服务器实现必要的v2/orders API调用的指南:
如果可以从控制台更改变量,则表示它在全局范围内。一个简单的生活方式就可以解决这个问题。但是,请记住,任何聪明到可以使用浏览器调试器的人都可以绕过这一问题。与其加载多个可以使用的脚本,不如以任何方式存储篮(不需要安全),然后将其发布到已知的安全服务器,而不是执行客户端处理。然后,该服务器根据存储在服务器上的价格计算出总价后,向PayPal发出付款请求。这样,即使客户机发出恶意请求,他们所能做的就是买东西。你还应该确认此人没有购买负数的物品,因为这是一种很容易的偷钱方式。
paypal.Buttons({
style: {
shape: 'rect',
color: 'gold',
layout: 'vertical',
label: 'checkout',
},
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: total
}
}]
});
},
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
alert('Thank you for your order ' + details.payer.name.given_name + ', your equipment is on its way!');
});
}
}).render('#paypal-button-container');