javascript - Stripe 连接: What's the difference between Customers and Accounts?

标签 javascript stripe-payments payment-gateway

目前,似乎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/

    相关文章:

    stripe-payments - 使用优惠券进行 Stripe 计划定价,无需向客户收费

    payment-gateway - Paypal CreateRecurringPaymentsProfile 自动为第一个月计费

    php - 在 WooCommerce 中禁用所有基于用户国家/地区 geo-ip 的付款方式

    javascript - 获取HTML5数据属性后查找数组/变量

    javascript - 检查单击的元素是否是父元素的后代,否则删除父元素

    javascript - Vuetify2 垂直 slider 高度不可配置

    javascript - 在 three.js 中移动平行于投影平面的对象

    javascript - 如何在同构reactjs应用程序中加载第三方库?

    stripe-payments - Stripe API - 将卡迁移到 paymentMethods

    transactions - 订单号、交易编号和发票编号之间的差异