我在名为pp.js的脚本中运行以下代码。我正在我的index.html上运行这个加载页面进行测试。我正在使用最新的webpack模块捆绑每个源文件。
var paypal = require('paypal-rest-sdk');
var user_config ={
'mode': 'sandbox', //sandbox or live
'client_id': 'xxxxxxx',
'client_secret': 'xxxxxxx'
};
paypal.configure(user_config);
var create_payment_json = {
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"redirect_urls": {
"return_url": "http://return.url",
"cancel_url": "http://cancel.url"
},
"transactions": [{
"item_list": {
"items": [{
"name": "item",
"sku": "item",
"price": "1.00",
"currency": "USD",
"quantity": 1
}]
},
"amount": {
"currency": "USD",
"total": "1.00"
},
"description": "This is the payment description."
}]
};
// TILL HERE THERE IS NO ERROR
paypal.payment.create(create_payment_json, function (error, payment) {
if (error) {
console.log("There seems to be some error... I hope it can be corrected.");
throw error;
} else {
console.log("Create Payment Response");
console.log(payment);
}
});
当代码的最后一位运行时,paypal.payment.create(create_
...我在浏览器的控制台中收到以下错误。
我如何纠正这个问题?
答案 0 :(得分:1)
此代码应在服务器端运行。 PayPal SDK跟踪器中的相同问题:https://github.com/paypal/PayPal-node-SDK/issues/220
引用1(来自链接的票证)
请参阅#149 (comment)。您似乎试图在浏览器中运行此代码,这可能是一个安全问题。如果用户有权访问您的凭据或拥有访问令牌,他们可以执行您作为商家可以执行的任何操作(例如,创建更多付款,退款等等)。
引用2(来自#149 ticket):
我做了一些调查。显然,此
request.js:54 Uncaught Error: Invalid value for opts.mode.
错误来自stream-http/request.js版本。我猜你正在尝试使用browserify
并在浏览器中使用stream-http
来模拟node.js的内置http模块。您是否尝试在浏览器中运行此SDK代码(而不是在服务器端node.js进程中)?
此node.js SDK只能在安全的服务器上使用。我使用browserify的经验非常有限。除非我弄错了,否则您需要让此SDK访问您的客户端ID和客户端密码以使此SDK工作,如果您的代码在浏览器中运行,您将向任何浏览器客户端公开凭据。这样,任何客户都可以对您的帐户执行任何操作(例如,退还所有付款)。
如果只是代码的一部分打算在浏览器中运行而另一部分在服务器中,但代码全部在一个项目中,我建议将代码分成两个不同的项目{{1文件,所以你可以有单独的依赖。