首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法为多个配置实例化paypal sdk

无法为多个配置实例化paypal sdk
EN

Stack Overflow用户
提问于 2020-12-03 16:11:08
回答 2查看 20关注 0票数 0

我有多个paypal配置,大约15个用户

代码语言:javascript
复制
[
  ...,
  { environment: "sandbox", accKey: "xxxxx", secretKey: "xxxxxxx" },
  ....  
]

我想为每个用户实例化一个paypal并返回对象

nodejs问题在于,paypal-rest-sdk导出默认对象,这与导出条带的条带不同

代码语言:javascript
复制
// 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循环中,它将覆盖旧的配置。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-21 23:48:47

嗯,我自己想出来的。

当执行任何请求时,函数中都有可选的第二个参数,传入新的configuration对象将覆盖.configure函数设置的旧配置。

这段代码取自官方的paypal-rest-sdk,原始链接here

代码语言:javascript
复制
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);
    }
});
票数 0
EN

Stack Overflow用户

发布于 2020-12-03 16:24:52

你可以包装到你自己的模块中并导出它,这里的关键是将paypal包装到它自己的作用域中

代码语言:javascript
复制
// 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 */ })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65122043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档