代表 Connect 账户使用 Stripe JS SDK 的正确方法



我很抱歉这有点笼统,只是想确保我使用了最佳实践,但还没能找到它是什么。

我正在清理我们对Stripe的使用,并发现我们代表托管/Connect帐户实现API请求的唯一方法是使用对API端的直接HTTP请求,这样我们就可以传入帐户的密钥,执行https://${ACCOUNT_SECRET_KEY}:@${STRIPE_BASE_URL}/<endpoint>

虽然这是有效的,但我想清理一下,改用API。

不过,我想知道,有没有一种方法可以使用我为我们的通用平台设置的相同Stripe实例来实现这一点?也就是说,我有一个带const Stripe = require('stripe')(STRIPE_SECRET_KEY)的stripe模块,并使用它来发出API请求,以创建转账、添加客户卡等。我一直在尝试梳理stripe的文档,看看是否有办法传入我想要请求的帐户的密钥,但我没有看到。

每次我想进行API调用时,我最好使用连接帐户的密钥创建这个Stripe对象的新实例吗?即在函数中设置一个新变量,而不是使用文件级Stripe实例?

编辑以添加一些我的意思的代码示例。我很确定这是选项,但它似乎不是最好的

const Stripe = require('Stripe');
const STRIPE_SECRET_KEY = <redacted>,
STRIPE_API_VERSION = <api date>,
stripe = Stripe(STRIPE_SECRET_KEY);
if( STRIPE_API_VERSION )
stripe.setApiVersion(STRIPE_API_VERSION);
// Example of API request from primary account
exports.createCustomerWithCardToken = (token, email) => {
const params = {
source: token,
email: email
};
return stripe.customers.create(params);
}
// Example of API request to managed account
exports.getAccountBalance = accountId => {
const ACCOUNT_SECRET = <get account secret from accountId>;
const managedStripe = Stripe(ACCOUNT_SECRET);
if( STRIPE_API_VERSION )
managedStripe.setApiVersion( STRIPE_API_VERSION ):
return managedStripe.balance.retrieve();
}

您永远不需要使用连接帐户的API密钥。您可以简单地将连接帐户的ID(acct_xxx(作为API请求的头传递给您使用平台帐户的API密钥发出的请求,这将导致代表该连接帐户处理请求。Stripe的所有官方库都支持指定此标头。

https://stripe.com/docs/connect/authentication#stripe-账户头

为了使用stripe节点获取连接帐户的余额,代码看起来像:

const stripe = require("stripe")(
"sk_test_xxxx" // platform account's API key
);
await stripe.balance.retrieve({stripe_account : "acct_1DfxucKloGbWHkkL"});

https://github.com/stripe/stripe-node/wiki/Passing-Options#options

这个相同的可选参数也可以用于在连接的帐户上执行任何其他API请求(创建客户、更新客户的卡(。

最新更新