我有多个paypal配置,大约15个用户
[
...,
{ environment: "sandbox", accKey: "xxxxx", secretKey: "xxxxxxx" },
....
]我想为每个用户实例化一个paypal并返回对象
nodejs问题在于,paypal-rest-sdk导出默认对象,这与导出条带的条带不同
// paypal
const paypal = require("paypal-rest-sdk")
paypal.config({
// config goes here
})
// stripe
const { Stripe } = require("stripe")
const stripe = new Stripe("secret key")问题:如果我将paypal.configure包装在for循环中,它将覆盖旧的配置。
发布于 2020-12-21 23:48:47
嗯,我自己想出来的。
当执行任何请求时,函数中都有可选的第二个参数,传入新的configuration对象将覆盖.configure函数设置的旧配置。
这段代码取自官方的paypal-rest-sdk,原始链接here
var first_config = {
'mode': 'sandbox',
'client_id': '<FIRST_CLIENT_ID>',
'client_secret': '<FIRST_CLIENT_SECRET>'
};
var second_config = {
'mode': 'sandbox',
'client_id': '<SECOND_CLIENT_ID>',
'client_secret': '<SECOND_CLIENT_SECRET>'
};
//This sets up client id and secret globally
//to FIRST_CLIENT_ID and FIRST_CLIENT_SECRET
paypal.configure(first_config);
var create_payment_json = {
"intent": "authorize",
"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."
}]
};
// Overriding the default configuration with "second_config"
paypal.payment.create(create_payment_json, second_config, function (error, payment) {
if (error) {
throw error;
} else {
console.log("Create Payment Response");
console.log(payment);
}
});发布于 2020-12-03 16:24:52
你可以包装到你自己的模块中并导出它,这里的关键是将paypal包装到它自己的作用域中
// my-paypal-module.js
module.exports = config => {
const paypal = require("paypal-rest-sdk")
paypal.configure(config)
return paypal
}
// main-file.js
const Paypal = require('./my-paypal-module')
const paypal = new Paypal({ /* config */ })https://stackoverflow.com/questions/65122043
复制相似问题