如何使用共享客户创建直接收费?
How to create a direct charge by using a shared customer?
我正在尝试从我的平台创建一个连接帐户的直接收费。 Stripe 支持人员建议我使用共享客户来执行此操作,但这只会产生更多问题。
代码本身非常简单,如果可以的话。它使用 iOS 应用程序提供的 src_...
令牌更新平台客户。这行得通。然后它尝试使用 StripeTokenService()
创建一个共享客户。这不起作用,尽管遵循 the documentation to the letter。我收到的错误是:
You provided a customer without specifying a source. The default source of the customer is a source and cannot be shared from existing customers.
我看不到在 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);
使用 Sources 时,您必须使用此处记录的不同方法:https://stripe.com/docs/sources/connect#shared-card-sources
我们的想法是,您将 "clone" 从平台到关联帐户的来源。这是在创建新源时使用 original_source
完成的。然后,您将获得一个具有不同 ID src_XXXX
的新 Source 对象,然后您可以直接在连接的帐户上收费。
我正在尝试从我的平台创建一个连接帐户的直接收费。 Stripe 支持人员建议我使用共享客户来执行此操作,但这只会产生更多问题。
代码本身非常简单,如果可以的话。它使用 iOS 应用程序提供的 src_...
令牌更新平台客户。这行得通。然后它尝试使用 StripeTokenService()
创建一个共享客户。这不起作用,尽管遵循 the documentation to the letter。我收到的错误是:
You provided a customer without specifying a source. The default source of the customer is a source and cannot be shared from existing customers.
我看不到在 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);
使用 Sources 时,您必须使用此处记录的不同方法:https://stripe.com/docs/sources/connect#shared-card-sources
我们的想法是,您将 "clone" 从平台到关联帐户的来源。这是在创建新源时使用 original_source
完成的。然后,您将获得一个具有不同 ID src_XXXX
的新 Source 对象,然后您可以直接在连接的帐户上收费。