代码之家  ›  专栏  ›  技术社区  ›  Rory McCrossan

如何使用共享客户创建直接费用?

  •  2
  • Rory McCrossan  · 技术社区  · 6 年前

    我正在尝试从我的平台创建一个连接帐户的直接费用。Stripe支持部门建议我使用共享客户来实现这一点,但这只是造成了更多的问题。

    代码本身是非常简单的,如果它起作用的话。它用 src_... iOS应用程序提供的令牌。这是可行的。然后,它尝试使用 StripeTokenService() . 这不起作用,尽管 the documentation to the letter . 我收到的错误是:

    您提供了一个没有指定来源的客户。客户的默认源是源,不能从现有客户共享。

    我在stripe.net sdk中看不到向共享客户提供源代码的方法。我能提供的只是 Card BankAccount ,作为API,我想做的任何一个都不应该对敏感的用户信息保持不可知性。

    我到底做错了什么?

    StripeConfiguration.SetApiKey(Settings.Stripe.SecretKey);
    var businessRequestOptions = new StripeRequestOptions { StripeConnectAccountId = businessOwner.StripeAccountId };
    
    var customerService = new StripeCustomerService();
    customerService.Update(userDetail.StripeCustomerId, new StripeCustomerUpdateOptions
    {    
      SourceToken = stripeToken // = 'src_...'
    });
    
    var tokenService = new StripeTokenService();
    // this is the call that generates the error I mentioned above \/ \/ 
    var token = tokenService.Create(new StripeTokenCreateOptions
    {
      CustomerId = userDetail.StripeCustomerId // = 'cus_...'
    }, businessRequestOptions);
    
    // create a direct charge to the business account (taking out application fee)
    var chargeService = new StripeChargeService();
    var stripeCharge = chargeService.Create(new StripeChargeCreateOptions
    {
      Amount = Convert.ToInt32(fee),
      Currency = currency,
      Description = $"Payment to {businessOwner.BusinessName} through Service X",
      ApplicationFee = applicationFee,
      SourceTokenOrExistingSourceId = token.Id, // use shared customerId here
    }, businessRequestOptions);
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   koopajah MKumar    6 年前

    使用时 来源 您必须使用一种不同的方法,这里记录了这种方法: https://stripe.com/docs/sources/connect#shared-card-sources

    这样做的目的是要将源代码从平台“克隆”到连接的帐户。这是用 original_source 创建新源时。然后您将得到一个具有不同ID的新源对象 src_XXXX 然后您可以直接在已连接的帐户上收费。