使用Stripe元素和Stripe.net。我获得了令牌并创建了一个客户,并使用以下代码向其收取费用-效果很好
StripeConfiguration.SetApiKey(stripeKey);
var charges = new StripeChargeService();
var charge = charges.Create(new StripeChargeCreateOptions
{
Amount = thisCharge.Amount,
Currency = "usd",
Description = thisCharge.ProductDesc,
StatementDescriptor = thisCharge.ProductDesc,
//SourceTokenOrExistingSourceId = source.Id,
ReceiptEmail = thisCharge.EmailAddress,
CustomerId = thisCharge.StripeCustomerID,
Metadata = new Dictionary<String, String>()
{
{ "Name", thisCharge.CardHolderName }, { "Email",thisCharge.EmailAddress }
}
});
然后我尝试使用与同一位客户的另一张卡(5555 5555 5555 4444)进行第二次充电,但是显然我遗漏了一些东西。
使用此代码
static StripeSource NewSource(string stripeKey, Charge charge)
{
StripeConfiguration.SetApiKey(stripeKey);
var sourceOptions = new StripeSourceCreateOptions
{
Type = StripeSourceType.Card,
Currency = "usd",
Amount = charge.Amount,
Token = charge.Token,
Owner = new StripeSourceOwner
{
Email = charge.EmailAddress,
Name = charge.CardHolderName
}
};
var sourceService = new StripeSourceService();
StripeSource source = sourceService.Create(sourceOptions);
return source;
}
但是我得到这个错误:
无效的令牌ID:src _....
如果我跳过添加新来源的操作,则收费会通过,但会与原始来源相反。
因此显然缺少了一些东西……感谢您的帮助。
答案 0 :(得分:1)
我还是Du,以防万一其他人遇到同样的问题。
当您从表单提交元素时,它会返回一个令牌,在本例中为源令牌“ src_”。因此,您无需创建新来源,只需将其分配给现有客户即可。
StripeConfiguration.SetApiKey(stripeKey);
var options = new StripeCustomerUpdateOptions
{
SourceToken = charge.Token,
};
var service = new StripeCustomerService();
StripeCustomer customer = service.Update(charge.StripeCustomerID, options);