使用节点js运行PayPal API时出错
我在名为pp.js的脚本中运行以下代码。我在我的index.html上运行这个页面加载测试。我使用最新的webpack模块捆绑每个源文件。使用节点js运行PayPal API时出错
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_
...我收到我的浏览器的控制台下面的错误。
如何纠正呢?
这段代码应该在服务器端运行。在贝宝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正常工作,并且如果您的代码在浏览器中运行,则您将向任何浏览器客户端公开证书。这将允许任何客户能够对您的帐户执行任何操作(例如,退还您的所有付款)。
如果只是代码的一部分打算在浏览器中运行,另一部分在服务器上但代码全部在一个项目中,我建议将代码分成两个不同的项目,其中包含不同的
package.json
文件所以你可以有单独的依赖关系。
你是对的!当我在DOS命令行中运行包含来自节点运行时环境的API代码的javascrip文件时,它完美地工作。感谢您的参考。感谢您的帮助@jannis! –