0

我使用以下代码将信用卡保存在条带中。

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)付款

4

1 回答 1

2

假设卡已正确保存,您可以使用 Create Charge APIcus_XXXX并在参数中传递客户 ID和customer参数中的卡 IDcard_YYYy进行收费source。使用 Stripe.net,代码记录在这里,看起来像这样:

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 合规性。您应该真正修改您的集成,并始终首先在客户端标记卡详细信息。

您应该使用ElementsStripe Checkout客户端将卡详细信息直接发送到 Stripe 并获取唯一的卡令牌 (tok_XXX),然后将其安全地发送到您的服务器以创建客户。

于 2017-04-16T13:03:12.497 回答