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

时间:2018-12-12 18:46:19

标签: node.js stripe-payments

很抱歉,这有点笼统,只是想确保我使用最佳做法,而无法找出那是什么。

我正在清理对Stripe的使用,发现我们代表托管/连接帐户实现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实例?

编辑以添加一些我的意思的代码示例。我很确定这是一个一个选项,但是似乎这可能不是 best 选项,因为每个单独的函数都在创建它自己的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();
}

1 个答案:

答案 0 :(得分:1)

您永远不需要使用连接的帐户的API密钥。您可以简单地将关联帐户的ID(import cv2 import numpy as np particlefilterparams = cv2.SimpleBlobDetector_Params() particlefilterparams.filterByArea = False particlefilterparams.minArea=7 particlefilterparams.maxArea =99999999 particlefilterparams.filterByCircularity = False particlefilterparams.minCircularity = 0 particlefilterparams.maxCircularity = 255 particlefilterparams.filterByConvexity = False particlefilterparams.minConvexity = 0 particlefilterparams.maxConvexity = 1 particlefilterparams.filterByInertia = False particlefilterparams.minInertiaRatio = 0 particlefilterparams.maxInertiaRatio = 1 particlefilterparams.minThreshold =1 particlefilterparams.maxThreshold = 255 shotdetector = cv2.SimpleBlobDetector_create(particlefilterparams) counter = 0 diff = cv2.imread('Missed.png', 0) ret,bimg = cv2.threshold(diff, 1, 255, cv2.THRESH_BINARY) oimg=cv2.bitwise_not(bimg) shots = shotdetector.detect(oimg) oimg = cv2.bitwise_not(oimg) im_with_keypoints = cv2.drawKeypoints(oimg, shots, np.array([]), (0,0,255), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) # Show keypoints cv2.imshow("Keypoints", im_with_keypoints) cv2.waitKey(0) cv2.destroyAllWindows() 传递为您使用平台帐户的API密钥发出的API请求的标头,这将导致代表该关联帐户处理请求。所有Stripe的官方库都支持指定此标头。

https://stripe.com/docs/connect/authentication#stripe-account-header

要使用Stripe-Node获取关联帐户的余额,代码应类似于:

acct_xxx

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

同一可选参数也可用于对连接的帐户执行任何其他API请求(创建客户,更新客户卡)。