public class StripePaymentGatewayHelper
{
private static PaymentClient GetTokenId(PaymentClient paymentClient)
{
StripeConfiguration.ApiKey = SettingsKeyInfoProvider.GetValue("StripeSecretKey");
var myToken = new TokenCreateOptions
{
Card = new CreditCardOptions
{
Number = paymentClient.CardNumber,
ExpYear = paymentClient.CardExpiryYear,
ExpMonth = paymentClient.CardExpiryMonth,
Cvc = paymentClient.CardCvc
},
};
var tokenService = new TokenService();
var stripeToken = tokenService.Create(myToken);
if (stripeToken != null)
{
paymentClient.TokenId = stripeToken.Id;
}
return paymentClient;
}
private static PaymentClient ChargeCustomer(PaymentClient paymentClient)
{
StripeConfiguration.ApiKey = SettingsKeyInfoProvider.GetValue("StripeSecretKey");
var myCharge = new ChargeCreateOptions
{
Amount = paymentClient.Amount,
Currency = paymentClient.Currency,
Description = paymentClient.Description,
Source = paymentClient.TokenId,
};
var chargeService = new ChargeService();
var stripeCharge = chargeService.Create(myCharge);
if(stripeCharge != null)
{
paymentClient.ChargeId = stripeCharge.Id;
paymentClient.IsPaid = stripeCharge.Paid;
paymentClient.PaymentStatus = stripeCharge.Status;
paymentClient.ErrorMessage = $"Failure Code: {stripeCharge.FailureCode}, Failure Message: {stripeCharge.FailureMessage}";
}
return paymentClient;
}
public static PaymentClient FinaliseBooking(PaymentClient paymentClient)
{
string chargeId = string.Empty;
try
{
PaymentClient tokenInfo = GetTokenId(paymentClient);
paymentClient = ChargeCustomer(tokenInfo);
}
catch (Exception exception)
{
var declaringType = MethodBase.GetCurrentMethod().DeclaringType;
if (declaringType != null)
EventLogProvider.LogException(declaringType.Name,
MethodBase.GetCurrentMethod().Name, exception);
}
return paymentClient;
}
}