private string GenerateOrderLinesString(PayExPayment payExPayment) { var onlineInvoice = new OnlineInvoice(); onlineInvoice.OrderLines.AddRange(_financialInvoicingOrderLineFormatter.CreateOrderLines(payExPayment)); return(PayExXmlSerializer.Serialize(onlineInvoice)); }
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); }