目前,似乎Connect的Accounts
可以完成Customers
的所有操作,例如可以将银行卡直接添加到Accounts
帐户。因此,仅为用户创建Accounts
对象就足够了,但是是否有可能我不得不创建Customers
对象?
例如,在教程(https://stripe.com/docs/connect/payments-fees
)中, token 可以简单地提供Accounts
可发布 key :
stripe.charges.create({
amount: 1000,
currency: 'usd',
source: {TOKEN},
destination: {CONNECTED_STRIPE_ACCOUNT_ID}
});
为了澄清起见,是从哪里提取资金的
source
,到资金去向的destination
?资金会存入destination
的默认银行帐户吗?另外,当通过API创建
Accounts
时,是否可以通过平台的仪表板查看新连接的帐户?还能查看交易和余额吗?最后,在转移资金时,通过未定义来源,是否意味着资金将从平台帐户的余额中提取?
var stripe = require('stripe')(PLATFORM_SECRET_KEY);
stripe.transfers.create(
{
amount: 1000,
currency: "usd",
destination: "default_for_currency"
},
{stripe_account: CONNECTED_STRIPE_ACCOUNT_ID}
);
将接受/支持答案。先感谢您。
最佳答案
开发平台时,通常需要关注两个功能:付款和从用户付款。 Stripe将这些功能分为两个单独的对象类型。
帐目Account
是代表您向其付款的用户的对象。一个帐户可以附加一个External Account
(一个银行帐户,或在某些情况下,一个借记卡)。出于合规性原因,帐户将需要提供一些个人信息以验证用户的身份。
您可以连接到平台的帐户类型有三种:
Standard
(以前称为Standalone
),它们是普通的Stripe帐户。您可以通过基于OAuth的流程将Standard Stripe帐户连接到平台。 Custom
(以前称为Managed
),它使您可以更好地控制用户体验,但需要做更多的工作:您完全通过API控制自定义帐户,并负责构建仪表板,注册表单和其他帐户管理界面。
Express
帐户,位于标准帐户和自定义帐户之间。 Stripe为Express用户提供了简单的注册表单和精简的仪表板。 https://stripe.com/docs/connect/connecting-to-accounts
顾客
Customer
是一个对象,您可以将其存入信用额度,银行帐户,比特币接收器等,然后从中收取费用/从中收取款项。 https://stripe.com/docs/api#customers如果您想存储卡并在将来收费,Stripe提供了创建
Customer
对象的功能。如果您只对一次性交易感兴趣,则可以简单地使用并使用通过Checkout/Stripe.js/mobile sdk和可发布 key 获得的 token 。您可以在此处https://stripe.com/docs/charges中找到使用 token 进行一次性付款和客户的付款流程示例
需要明确的是,没有办法向客户对象付款或从帐户中附加的银行帐户或借记卡中扣款。
在第一个示例中:
source
是 token tok_xxxyyyyzzz
,通常是通过Stripe.js/Checkout/移动SDK获得的,您将传递给后端。如果您将来源保存到帐户中的Customer
中,则可以传递customer: cus_xxxyyyzzz
代替,以对该source
收取默认的Customer
费用。https://stripe.com/docs/connect/payments-fees#charging-through-the-platform
destination
是您希望资金流过的Account
。自定义帐户最常使用destination
收费。以这种方式收费时,资金将从您的平台转移到destination
帐户的余额中。如果该帐户设置为自动转帐,则当这些资金可用于转帐时,资金将自动移至其默认银行帐户。流程如下所示:
Charge (token or customer on Platform) -> Platform Balance -> Custom Account Balance (destination) -> Custom Account Bank Account
如果您需要对从自定义帐户的余额到其银行帐户的资金转移进行更多控制和细化,可以将自定义帐户设置为手动转帐。在此处阅读有关此内容的更多信息https://stripe.com/docs/connect/bank-transfers#payout-information
如果您正在创建
Custom Accounts
或用户通过OAuth流程连接其Standard Accounts
,则应该在您的信息中心中看到他们:https://dashboard.stripe.com/applications/users如果您需要关联帐户余额的特定详细信息,则需要拨打电话以检索其余额或余额交易,同时使用Stripe Account header (其帐户ID,例如
acct_xxxyyyyzzzz
)进行身份验证https://stripe.com/docs/connect/authentication#authentication-via-the-stripe-account-header
https://stripe.com/docs/api#balance_history
最后,您提供的示例传递的是Stripe-Account header
{stripe_account: CONNECTED_STRIPE_ACCOUNT_ID}
,因此它发生在关联帐户上---它正在将资金从关联帐户的余额转移到其默认银行帐户。如果您的关联帐户是手动转帐,将使用此功能。这里概述了您从平台余额转移到关联帐户的方式。 https://stripe.com/docs/connect/special-case-transfers#transferring-to-another-stripe-account
顾名思义,“特殊案例转移”意味着这些
Platform -> Connected Account
转移仅应在有限的情况下发生(当前尚无从关联帐户->平台转移资金的方法)。ripe = require('stripe')(PLATFORM_SECRET_KEY);
stripe.transfers.create(
{
amount: 1000,
currency: 'usd',
destination: {CONNECTED_STRIPE_ACCOUNT_ID},
source_transaction: {CHARGE_ID}
}
);
总体上构建适合您需求的Connect流程可能很复杂,但却是一项有意义的工作-如果您对https://support.stripe.com/email的细节有所了解,我建议与Stripe的支持人员聊天。
关于javascript - Stripe 连接: What's the difference between Customers and Accounts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40228547/