使用保存的信用卡支付条款

时间:2017-04-16 10:39:44

标签: c# stripe-payments stripe.net

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

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

1 个答案:

答案 0 :(得分:1)

假设卡已正确保存,您可以使用创建费用API向其收费,并在cus_XXXX参数和卡ID customer中传递客户ID card_YYYysource参数中。使用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。您应该真正修改您的集成,并始终在客户端首先将卡详细信息标记。

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