Ejemplo n.º 1
0
        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
     });
 }
Ejemplo n.º 6
0
        public ProcessPaymentResult Process(PaymentProcessingContext context)
        {
            var instance    = CommerceInstance.Current.Name;
            var redirectUrl = Strings.AreaName
                              + "/Home/Gateway?instance=" + instance
                              + "&paymentId=" + context.Payment.Id
                              + "&currency=" + context.CurrencyCode
                              + "&commerceReturnUrl=" + HttpUtility.UrlEncode(context.ReturnUrl);

            redirectUrl = redirectUrl.ToFullUrl(HttpContextAccessor());

            return(ProcessPaymentResult.Pending(redirectUrl, Guid.NewGuid().ToString("N")));
        }
Ejemplo n.º 7
0
        public ProcessPaymentResult Process(PaymentProcessingContext context)
        {
            var instance = CommerceInstance.Current.Name;
            var redirectUrl = Strings.AreaName
                + "/Home/Gateway?instance=" + instance
                + "&paymentId=" + context.Payment.Id
                + "&currency=" + 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);
        }