我使用以下代码将信用卡保存在条带中。
string stripeKey = "";
var guid = Guid.Parse(userGuid);
var systemUser = _systemUserRepository.Get(a => a.UserGuid == guid).FirstOrDefault();
var accountProfile = _accountProfileRepository.Get(a => a.SystemUser == systemUser.ID).FirstOrDefault();
var customer = _clientRepository.Get(a => a.AccountProfile == accountProfile.ID).FirstOrDefault();
var myCustomer = new StripeCustomerCreateOptions();
myCustomer.Email = customer.AccountProfile1.SystemUser1.Email;
myCustomer.Description = customer.AccountProfile1.FirstName + " " + customer.AccountProfile1.LastName;
var customerService = new StripeCustomerService(stripeKey);
StripeCustomer stripeCustomer = customerService.Create(myCustomer);
var myCard = new StripeCardCreateOptions();
// setting up the card
myCard.SourceCard = new SourceCard
{
Number = cardNumber,
ExpirationYear = expireYear,
ExpirationMonth = expireMonth,
};
var cardService = new StripeCardService(stripeKey);
StripeCard stripeCard = cardService.Create(stripeCustomer.Id, myCard);
如何使用此保存的信用卡(StripeCard)进行付款
答案 0 :(得分:1)
假设卡已正确保存,您可以使用创建费用API向其收费,并在cus_XXXX
参数和卡ID customer
中传递客户ID card_YYYy
在source
参数中。使用Stripe.net,代码记录为here,如下所示:
var myCharge = new StripeChargeCreateOptions();
myCharge.Amount = 5153;
myCharge.Currency = "usd";
myCharge.SourceTokenOrExistingSourceId = stripeCard.Id;
myCharge.CustomerId = stripeCustomer.Id;
var chargeService = new StripeChargeService();
StripeCharge stripeCharge = chargeService.Create(myCharge);
注意您当前的代码是通过API直接发送卡详细信息也很重要。这意味着您可以获得服务器上的卡号。这是一个坏主意,打破了PCI compliance。您应该真正修改您的集成,并始终在客户端首先将卡详细信息标记。
您应该使用Elements或Stripe Checkout客户端直接将卡详细信息发送给Stripe并获取一个唯一的卡令牌(tok_XXX),然后您将其安全地发送到您的服务器创造客户。