public ProcessPaymentResult Process(PaymentProcessingContext context) { if (context.Amount < (decimal)1.19) { throw new FormatException("Amount cannot be less than € 1,19"); } var settings = context.ProcessorConfig as IDealConfig; var instance = CommerceInstance.Current.Name; var httpContext = HttpContextAccessor(); var reportUrl = Strings.AreaName + "/iDeal/Callback?instance=" + instance; var returnUrl = Strings.AreaName + "/iDeal/Return?instance=" + instance + "&paymentId=" + context.Payment.Id + "&commerceReturnUrl=" + HttpUtility.UrlEncode(context.ReturnUrl); var idealFetch = new IdealFetch( settings.PartnerId , context.Payment.Description , reportUrl.ToFullUrl(httpContext) , returnUrl.ToFullUrl(httpContext) , "" , context.Amount ); if (idealFetch.Error) { throw new PaymentProcessorException(idealFetch.ErrorMessage); } return(ProcessPaymentResult.Pending(idealFetch.Url, idealFetch.TransactionId)); }
private PayPalRest.Payment CreatePayPalPayment(PaymentProcessingContext request, PayPalConfig settings) { var config = new Dictionary <string, string>(); config.Add("mode", settings.SandboxMode ? "sandbox" : "live"); var credentials = new OAuthTokenCredential(settings.ClientId, settings.ClientSecret, config); var accessToken = credentials.GetAccessToken(); var payment = new PayPalRest.Payment { intent = "sale", payer = new Payer { payment_method = "credit_card", funding_instruments = new List <PayPalRest.FundingInstrument> { new PayPalRest.FundingInstrument { credit_card = CreateCreditCard(request) } } }, transactions = new List <Transaction> { CreateTransaction(request) } }; return(payment.Create(new APIContext(accessToken) { Config = config })); }
public ProcessPaymentResult Process(PaymentProcessingContext context) { if (String.IsNullOrEmpty(context.CurrencyCode)) { var storeSettings = _settingsService.Get <GlobalSettings>(); context.CurrencyCode = storeSettings.Currency; } var settings = context.ProcessorConfig as PayPalConfig; var result = CreatePayPalPayment(context, settings); var paymentStatus = PaymentStatus.Failed; if (result.state == "approved") { paymentStatus = PaymentStatus.Success; } else if (result.state == "canceled") { paymentStatus = PaymentStatus.Cancelled; } else // expired, failed { paymentStatus = PaymentStatus.Failed; } return(new ProcessPaymentResult { PaymentStatus = paymentStatus, ThirdPartyTransactionId = result.id }); }
private string GetCallbackUrl(string action, PaymentProcessingContext request) { var instance = CommerceInstance.Current.Name; var url = Strings.AreaName + "/Buckaroo/" + action + "?instance=" + instance; if (action.StartsWith("return", StringComparison.OrdinalIgnoreCase)) { url += "&commerceReturnUrl=" + HttpUtility.UrlEncode(request.ReturnUrl); } return(url.ToFullUrl(HttpContextAccessor())); }
private Transaction CreateTransaction(PaymentProcessingContext request) { return(new Transaction { amount = new Amount { total = request.Payment.Amount.ToString("f2", CultureInfo.InvariantCulture), currency = request.CurrencyCode }, description = request.Payment.Description }); }
public ProcessPaymentResult Process(PaymentProcessingContext context) { var instance = CommerceInstance.Current.Name; var redirectUrl = Strings.AreaName + "/Home/Gateway?instance=" + instance + "&paymentId=" + context.Payment.Id + "¤cy=" + context.CurrencyCode + "&commerceReturnUrl=" + HttpUtility.UrlEncode(context.ReturnUrl); redirectUrl = redirectUrl.ToFullUrl(HttpContextAccessor()); return(ProcessPaymentResult.Pending(redirectUrl, Guid.NewGuid().ToString("N"))); }
public ProcessPaymentResult Process(PaymentProcessingContext context) { var instance = CommerceInstance.Current.Name; var redirectUrl = Strings.AreaName + "/Home/Gateway?instance=" + instance + "&paymentId=" + context.Payment.Id + "¤cy=" + context.CurrencyCode + "&commerceReturnUrl=" + HttpUtility.UrlEncode(context.ReturnUrl); redirectUrl = redirectUrl.ToFullUrl(HttpContextAccessor()); return ProcessPaymentResult.Pending(redirectUrl, Guid.NewGuid().ToString("N")); }
private GatewayRequest CreateGatewayRequest(AuthorizeNetConfig settings, PaymentProcessingContext paymentRequest) { var request = new CardPresentAuthorizeAndCaptureRequest( paymentRequest.Amount, paymentRequest.Parameters[AuthorizeNetConstants.CreditCardNumber], paymentRequest.Parameters[AuthorizeNetConstants.CreditCardExpireMonth], paymentRequest.Parameters[AuthorizeNetConstants.CreditCardExpireYear] ); request.AddCardCode(paymentRequest.Parameters[AuthorizeNetConstants.CreditCardCvv2]); return(request); }
private CreditCard CreateCreditCard(PaymentProcessingContext request) { var card = new CreditCard { number = request.Parameters[PayPalConstants.CreditCardNumber], type = request.Parameters[PayPalConstants.CreditCardType], expire_month = Convert.ToInt32(request.Parameters[PayPalConstants.CreditCardExpireMonth]), expire_year = Convert.ToInt32(request.Parameters[PayPalConstants.CreditCardExpireYear]), cvv2 = request.Parameters[PayPalConstants.CreditCardCvv2] }; // If the website don't pass in customer info, // then we try to fill these info automatically var orderId = request.Payment.OrderId; var order = _orderService.Find(orderId); card.first_name = order.Customer.FirstName; card.last_name = order.Customer.LastName; // TODO: Add billing address return(card); }
public ProcessPaymentResult Process(PaymentProcessingContext context) { var settings = context.ProcessorConfig as BuckarooConfig; var serviceId = context.Parameters[BuckarooConstants.Parameters.ServiceId]; var parameters = new NameValueCollection(); parameters.Add("Brq_websitekey", settings.WebsiteKey); parameters.Add("Brq_amount", context.Amount.ToString("f2", CultureInfo.InvariantCulture)); parameters.Add("Brq_invoicenumber", context.Payment.Id.ToString()); parameters.Add("Brq_currency", context.CurrencyCode); parameters.Add("Brq_description", "#" + context.Payment.Description); parameters.Add("brq_culture", "en-US"); parameters.Add("Brq_return", GetCallbackUrl("Return", context)); parameters.Add("Brq_push", GetCallbackUrl("Push", context)); parameters.Add("Brq_payment_method", serviceId); parameters.Add("Brq_service_" + serviceId + "_action", "Pay"); parameters.Add("add_paymentId", context.Payment.Id.ToString()); if (serviceId == BuckarooConstants.Services.SimpleSEPADirectDebit) { parameters.Add("brq_service_" + serviceId + "_customeraccountname", context.Parameters[BuckarooConstants.Parameters.SEPA_CustomerAccountName]); parameters.Add("brq_service_" + serviceId + "_CustomerBIC", context.Parameters[BuckarooConstants.Parameters.SEPA_CustomerBIC]); parameters.Add("brq_service_" + serviceId + "_CustomerIBAN", context.Parameters[BuckarooConstants.Parameters.SEPA_CustomerIBAN]); parameters.Add("brq_service_" + serviceId + "_MandateReference", settings.CreditDebitMandateReference); parameters.Add("brq_service_" + serviceId + "_MandateDate", settings.CreditDebitMandateDate); } parameters.Add("Brq_signature", BuckarooUtil.GetSignature(parameters, settings.SecretKey)); // TODO: Check documentation and see how to do this without redirect throw new NotImplementedException(); }
public ProcessPaymentResult Process(PaymentProcessingContext context) { var settings = context.ProcessorConfig as AuthorizeNetConfig; var authRequest = CreateGatewayRequest(settings, context); var gateway = new Gateway(settings.LoginId, settings.TransactionKey, settings.SandboxMode); var response = gateway.Send(authRequest, context.Payment.Description); var result = new ProcessPaymentResult(); if (response.Approved) { result.PaymentStatus = PaymentStatus.Success; } else { result.PaymentStatus = PaymentStatus.Failed; result.Message = response.ResponseCode + ": " + response.Message; } result.ThirdPartyTransactionId = response.TransactionID; return(result); }