Exemplo n.º 1
0
        private string GenerateOrderLinesString(PayExPayment payExPayment)
        {
            var onlineInvoice = new OnlineInvoice();

            onlineInvoice.OrderLines.AddRange(_financialInvoicingOrderLineFormatter.CreateOrderLines(payExPayment));
            return(PayExXmlSerializer.Serialize(onlineInvoice));
        }
Exemplo n.º 2
0
        public string Format(PayExPayment payExPayment)
        {
            var additionalValues = string.Empty;

            if (_additionalValuesFormatter != null)
            {
                additionalValues = _additionalValuesFormatter.Format(payExPayment);
            }

            if (!string.IsNullOrWhiteSpace(additionalValues))
            {
                additionalValues += "&";
            }
            else
            {
                additionalValues += "";
            }

            if (additionalValues.IndexOf(FinancinginvoiceOrderlinesParmeter,
                                         StringComparison.InvariantCultureIgnoreCase) >= 0)
            {
                additionalValues = additionalValues.Replace(FinancinginvoiceOrderlinesParmeter,
                                                            string.Format(FinancinginvoiceOrderlinesParmeter, GenerateOrderLinesString(payExPayment)));
            }
            else if (_financialInvoicingOrderLineFormatter.IncludeOrderLines)
            {
                additionalValues += string.Format(FinancinginvoiceOrderlinesParmeter,
                                                  GenerateOrderLinesString(payExPayment));
            }

            return(additionalValues);
        }
        public string Format(PayExPayment payExPayment)
        {
            var additionalValues = string.Empty;

            if (_additionalValuesFormatter != null)
            {
                additionalValues = _additionalValuesFormatter.Format(payExPayment);
            }

            Models.PaymentMethods.MasterPass.ValidateMasterPassAdditionalValues(additionalValues);

            if (!string.IsNullOrWhiteSpace(additionalValues))
            {
                additionalValues += "&";
            }

            additionalValues += "RESPONSIVE=1&USEMASTERPASS=1";

            if (_addShoppingCartXml)
            {
                additionalValues += "&" + string.Format(ShoppingCartXmlParmeter, _masterPassShoppingCartFormatter.GenerateShoppingCartXmlString(payExPayment));
            }

            return(additionalValues);
        }
    // The user is redirected to paymentcallback/user/orderRef={guid}&orderNumber={string}&confirmationUrl={url} after having successfully supplied their payment information in PayEx
    public RedirectResult User(string orderRef, string orderNumber, string confirmationUrl)
    {
        UrlBuilder confirmationUrlBuilder = new UrlBuilder(confirmationUrl);

        // Get the cart for the current user
        Cart cart = new CartHelper(Cart.DefaultName).Cart;

        PayExPayment payExPayment = GetPayExPayment(cart);

        // If the cart doesn't contain a PayExPayment, something has gone wrong
        if (payExPayment == null)
        {
            return(ErrorResult(confirmationUrlBuilder, null));
        }

        // If the PayExPayment doesn't contain an OrderNumber, something has gone wrong
        if (string.IsNullOrWhiteSpace(payExPayment.OrderNumber))
        {
            return(ErrorResult(confirmationUrlBuilder, null));
        }

        // If the PayExPayment OrderNumber doesn't equal the orderNumber from the queryString, something has gone wrong
        if (!payExPayment.OrderNumber.Equals(orderNumber))
        {
            return(ErrorResult(confirmationUrlBuilder, null));
        }

        PayExPaymentGateway gateway = new PayExPaymentGateway();
        string transactionErrorCode;

        // Complete the PayEx payment
        bool processed = gateway.ProcessSuccessfulTransaction(payExPayment, orderNumber, orderRef, cart, out transactionErrorCode);

        bool created = false;

        if (processed) // If the payment was successfully completed, you can create a Purchase Order
        {
            created = CreatePurchaseOrder(cart, payExPayment, orderNumber);
        }

        if (!created)
        {
            return(ErrorResult(confirmationUrlBuilder, transactionErrorCode));
        }

        // Redirect the user to an order confirmation page
        confirmationUrlBuilder.QueryCollection.Add(ParameterName.OrderNumber, orderNumber);
        return(new RedirectResult(confirmationUrlBuilder.ToString()));
    }
        public string GenerateShoppingCartXmlString(PayExPayment payExPayment)
        {
            var shoppingCart = new ShoppingCart();
            var lineItems = CartHelper.GetLineItems(payExPayment);
            shoppingCart.ShoppingCartItem = lineItems.Select(x => new ShoppingCartItem()
            {
                Description = x.DisplayName,
                Quantity = x.Quantity.RoundToLong(),
                Value = x.ExtendedPrice.RoundToLong()
            }).ToArray();
            shoppingCart.Subtotal = payExPayment.Amount.RoundToLong();
            shoppingCart.CurrencyCode = payExPayment.Parent.Parent.BillingCurrency;

            return PayExXmlSerializer.Serialize(shoppingCart);
        }
        public string GenerateShoppingCartXmlString(PayExPayment payExPayment)
        {
            var shoppingCart = new ShoppingCart();
            var lineItems    = CartHelper.GetLineItems(payExPayment);

            shoppingCart.ShoppingCartItem = lineItems.Select(x => new ShoppingCartItem()
            {
                Description = x.DisplayName,
                Quantity    = x.Quantity.RoundToLong(),
                Value       = x.ExtendedPrice.RoundToLong()
            }).ToArray();
            shoppingCart.Subtotal     = payExPayment.Amount.RoundToLong();
            shoppingCart.CurrencyCode = payExPayment.Parent.Parent.BillingCurrency;

            return(PayExXmlSerializer.Serialize(shoppingCart));
        }
        public string Format(PayExPayment payExPayment)
        {
            var additionalValues = string.Empty;
            
            if (_additionalValuesFormatter != null)
                additionalValues = _additionalValuesFormatter.Format(payExPayment);

            Models.PaymentMethods.MasterPass.ValidateMasterPassAdditionalValues(additionalValues);

            if (!string.IsNullOrWhiteSpace(additionalValues))
                additionalValues += "&";

            additionalValues += "RESPONSIVE=1&USEMASTERPASS=1";

            if (_addShoppingCartXml)
                additionalValues += "&" + string.Format(ShoppingCartXmlParmeter, _masterPassShoppingCartFormatter.GenerateShoppingCartXmlString(payExPayment));

            return additionalValues;
        }
    // This action is used for transactional callbacks: http://www.payexpim.com/quick-guide/9-transaction-callback/
    public HttpStatusCodeResult Index(string orderRef, [Bind(Prefix = ParameterName.PayExTransactionNumber)] string transactionNumber, [Bind(Prefix = ParameterName.PayExTransactionRef)] string transactionRef)
    {
        // Check that the request comes from a valid PayEx IP: http://www.payexpim.com/quick-guide/9-transaction-callback/
        // The IP should not be hardcoded, this is only an example!
        if (Request.ServerVariables["REMOTE_ADDR"] != "82.115.146.170")
        {
            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
        }

        if (string.IsNullOrEmpty(orderRef))
        {
            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
        }

        string orderNumber;
        Cart   cart = GetCartByOrderRef(orderRef, out orderNumber);

        if (cart == null || string.IsNullOrEmpty(orderNumber))
        {
            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
        }

        PayExPayment payExPayment = GetPayExPayment(cart);

        PayExPaymentGateway gateway = new PayExPaymentGateway();
        string transactionErrorCode;

        // Complete the PayEx payment
        bool success = gateway.ProcessSuccessfulTransaction(payExPayment, orderNumber, orderRef, cart, out transactionErrorCode);

        if (success)
        {
            return(new HttpStatusCodeResult(HttpStatusCode.OK));
        }
        else
        {
            // If an order has already been created, maybe you'd want to cancel it if the callback wasn't successful?
        }

        return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
    }
        public virtual List <OnlineInvoiceOrderLine> CreateOrderLines(PayExPayment payExPayment)
        {
            List <OnlineInvoiceOrderLine> orderLines = new List <OnlineInvoiceOrderLine>();
            var     lineItems     = CartHelper.GetLineItems(payExPayment);
            decimal lineItemTotal = 0;

            foreach (var item in lineItems)
            {
                var unitprice = item.PlacedPrice -
                                (item.OrderLevelDiscountAmount +
                                 item.LineItemDiscountAmount) / item.Quantity;
                lineItemTotal += item.ExtendedPrice;

                orderLines.Add(new OnlineInvoiceOrderLine()
                {
                    UnitPrice   = unitprice.RoundToTwoDecimal(),
                    ProductName = item.DisplayName,
                    Quantity    = (int)(Math.Round(item.Quantity)),
                    VatRate     = (int)Math.Round(CartHelper.GetVatPercentage(item)),
                    VatAmount   = CartHelper.GetVatAmount(item).RoundToTwoDecimal(),
                    Amount      = item.ExtendedPrice.RoundToTwoDecimal()
                });
            }

            var restAmount    = payExPayment.Parent.Parent.Total - lineItemTotal;
            var restVatAmount = restAmount * ((decimal)RestVatRate % 100);

            orderLines.Add(new OnlineInvoiceOrderLine()
            {
                UnitPrice   = restAmount.RoundToTwoDecimal(),
                ProductName = RestProductName,
                Quantity    = 1,
                VatRate     = RestVatRate,
                VatAmount   = restVatAmount.RoundToTwoDecimal(),
                Amount      = restAmount.RoundToTwoDecimal()
            });

            return(orderLines);
        }
        public virtual List<OnlineInvoiceOrderLine> CreateOrderLines(PayExPayment payExPayment)
        {
            List<OnlineInvoiceOrderLine> orderLines = new List<OnlineInvoiceOrderLine>();
            var lineItems = CartHelper.GetLineItems(payExPayment);
            decimal lineItemTotal = 0;
            foreach (var item in lineItems)
            {
                var unitprice = item.PlacedPrice -
                                (item.OrderLevelDiscountAmount +
                                 item.LineItemDiscountAmount) / item.Quantity;
                lineItemTotal += item.ExtendedPrice;

                orderLines.Add(new OnlineInvoiceOrderLine()
                {
                    UnitPrice = unitprice.RoundToTwoDecimal(),
                    ProductName = item.DisplayName,
                    Quantity = (int)(Math.Round(item.Quantity)),
                    VatRate = (int)Math.Round(CartHelper.GetVatPercentage(item)),
                    VatAmount = CartHelper.GetVatAmount(item).RoundToTwoDecimal(),
                    Amount = item.ExtendedPrice.RoundToTwoDecimal()
                });                
            }

            var restAmount = payExPayment.Parent.Parent.Total - lineItemTotal;
            var restVatAmount = restAmount*((decimal) RestVatRate%100);
            orderLines.Add(new OnlineInvoiceOrderLine()
            {
                UnitPrice = restAmount.RoundToTwoDecimal(),
                ProductName = RestProductName,
                Quantity = 1,
                VatRate = RestVatRate,
                VatAmount = restVatAmount.RoundToTwoDecimal(),
                Amount = restAmount.RoundToTwoDecimal()
            });

            return orderLines;
        }
        public string Format(PayExPayment payExPayment)
        {
            var additionalValues = string.Empty;
            
            if (_additionalValuesFormatter != null)
                additionalValues = _additionalValuesFormatter.Format(payExPayment);

            if (!string.IsNullOrWhiteSpace(additionalValues))
                additionalValues += "&";
            else
                additionalValues += "";

            if (additionalValues.IndexOf(FinancinginvoiceOrderlinesParmeter, 
                StringComparison.InvariantCultureIgnoreCase) >= 0)
            {
                additionalValues = additionalValues.Replace(FinancinginvoiceOrderlinesParmeter,
                    string.Format(FinancinginvoiceOrderlinesParmeter, GenerateOrderLinesString(payExPayment)));
            }
            else if (_financialInvoicingOrderLineFormatter.IncludeOrderLines)
                additionalValues += string.Format(FinancinginvoiceOrderlinesParmeter,
                    GenerateOrderLinesString(payExPayment));

            return additionalValues;
        }
 /// <summary>
 /// Formats an additionalValues query string to be included in the PayEx payment initialization as described in the 
 /// PayEx documentation: http://www.payexpim.com/technical-reference/pxorder/initialize8/
 /// </summary>
 /// <param name="payExPayment">The payment being initialized</param>
 /// <returns>A query string of formatted additional values. Example: INVOICE_INVOICETEXT=value&INVOICE_MEDIADISTRIBUTION=value…</returns>
 public string Format(PayExPayment payExPayment)
 {
     return string.Empty;
 }
 /// <summary>
 /// Formats an additionalValues query string to be included in the PayEx payment initialization as described in the
 /// PayEx documentation: http://www.payexpim.com/technical-reference/pxorder/initialize8/
 /// </summary>
 /// <param name="payExPayment">The payment being initialized</param>
 /// <returns>A query string of formatted additional values. Example: INVOICE_INVOICETEXT=value&INVOICE_MEDIADISTRIBUTION=value…</returns>
 public string Format(PayExPayment payExPayment)
 {
     return(string.Empty);
 }
 private string GenerateOrderLinesString(PayExPayment payExPayment)
 {
     var onlineInvoice = new OnlineInvoice();
     onlineInvoice.OrderLines.AddRange(_financialInvoicingOrderLineFormatter.CreateOrderLines(payExPayment));
     return PayExXmlSerializer.Serialize(onlineInvoice);
 }