public override PublicPaymentTransaction AmendPaymentTransaction(PublicPaymentTransaction transaction, PaymentData paymentData)
        {
            transaction.ReturnUrl = urlProvider.DefaultPaymentUrl;
            transaction = SetCancelUrl(transaction, urlProvider.CancelUrl);

            return transaction;
        }
        public ActionResult Index(CheckoutViewModel model)
        {
            var cart = cartProvider.GetCart();
            var contactDataCollection = contactDataProvider.GetContactData();

            if (cart.IsEmpty())
            {
                ModelState.AddModelError("cart", "Cart is empty");
            }
            else if (contactDataCollection == null)
            {
                ModelState.AddModelError("contactData", "Contact data is empty");
            }

            if (ModelState.IsValid)
            {
                // Recalculate cart one last time, to make sure e.g. setup fees are still there.
                cartPricingService.CalculatePricing(cart);

                var paymentData = new PaymentData
                {
                    Id = model.SelectedPaymentMethod.Id,
                    PaymentForm = model.SelectedPaymentMethod.Form,
                    SaveCcInfo = model.SelectedPaymentMethod.SupportsPaymentProfile && model.SaveCcInfo,
                    AutoPay = model.SelectedPaymentMethod.SupportsPaymentProfile && model.AutoPay
                };

                var orderContext = new OrderContext(cart, contactDataCollection, paymentData, new object[] { Request });
                var result = orderPlacementService.PlaceOrder(orderContext);

                return Redirect(result.RedirectUrl);
            }

            return View(model);
        }
Пример #3
0
        public override PublicPaymentTransaction AmendPaymentTransaction(PublicPaymentTransaction transaction, PaymentData paymentData)
        {
            var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext, RouteTable.Routes);
            var path = urlHelper.Action("Confirm", "PayPal");

            transaction.ReturnUrl = urlProvider.QualifiedUrl(path);
            transaction = SetCancelUrl(transaction, urlProvider.CancelUrl);

            return transaction;
        }
        public override PublicOrder AmendOrder(PublicOrder order, PaymentData paymentData)
        {
            var form = paymentData.PaymentForm as PayWithInvoiceForm;
            
            Add(order, new PublicOrderCustomData { Name = "PayByInvoice", Value = "true" });

            if (form.SelectedInvoiceType == "post")
            {
                Add(order, new PublicOrderCustomData { Name = "SendInvoiceByPost", Value = "true" });
            }

            return order;
        }
Пример #5
0
        public override PublicPaymentTransaction AmendPaymentTransaction(PublicPaymentTransaction transaction, PaymentData paymentData)
        {
            var form = paymentData.PaymentForm as CCPaymentForm;

            var attributes = new List<AttributeData>(transaction.Attributes);

            attributes.Add(new AttributeData { Name = "cc_number", Value = form.CardNumber });
            attributes.Add(new AttributeData { Name = "cc_name", Value = form.CardOwner });
            attributes.Add(new AttributeData { Name = "ccv", Value = form.CardSecurityCode }); // wrong abbreviation "ccv" is expected.
            attributes.Add(new AttributeData { Name = "expires_month", Value = form.ExpiresMonth.ToString() });
            attributes.Add(new AttributeData { Name = "expires_year", Value = form.ExpiresYear.ToString() });

            transaction.Attributes = attributes.ToArray();

            transaction.ReturnUrl = urlProvider.DefaultPaymentUrl;
            transaction = SetCancelUrl(transaction, urlProvider.CancelUrl);

            return transaction;
        }
Пример #6
0
        /// <summary>
        /// OrderContext constructor
        /// </summary>
        /// <param name="cart">Collected cart data</param>
        /// <param name="contactDataCollection">Collected contact data</param>
        /// <param name="paymentData">Collected payment data</param>
        /// <param name="extraData">Any unspecified extra data</param>
        public OrderContext(Cart cart, IContactDataCollection contactDataCollection, PaymentData paymentData, IEnumerable<object> extraData)
        {
            if (cart == null)
            {
                throw new ArgumentNullException("cart");
            }

            if (contactDataCollection == null)
            {
                throw new ArgumentNullException("contactDataCollection");
            }

            if (paymentData == null)
            {
                throw new ArgumentNullException("paymentData");
            }

            this.cart = cart;
            this.contactData = contactDataCollection.GetContactData();
            this.paymentData = paymentData;
            this.extraData = extraData;
        }
Пример #7
0
        /// <summary>
        /// OrderContext constructor
        /// </summary>
        /// <param name="cart">Collected cart data</param>
        /// <param name="contactDataCollection">Collected contact data</param>
        /// <param name="paymentData">Collected payment data</param>
        /// <param name="extraData">Any unspecified extra data</param>
        public OrderContext(Cart cart, IContactDataCollection contactDataCollection, PaymentData paymentData, IEnumerable <object> extraData)
        {
            if (cart == null)
            {
                throw new ArgumentNullException("cart");
            }

            if (contactDataCollection == null)
            {
                throw new ArgumentNullException("contactDataCollection");
            }

            if (paymentData == null)
            {
                throw new ArgumentNullException("paymentData");
            }

            this.cart        = cart;
            this.contactData = contactDataCollection.GetContactData();
            this.paymentData = paymentData;
            this.extraData   = extraData;
        }
Пример #8
0
 /// <summary>
 /// Amend payment transaction with payment method specific attributes.
 /// Typical is to set ReturnUrl on transaction and add CancelUrl to attributes.
 /// </summary>
 /// <param name="transaction">The transaction to amend</param>
 public virtual PublicPaymentTransaction AmendPaymentTransaction(PublicPaymentTransaction paymentTransaction, PaymentData paymentData)
 {
     return paymentTransaction;
 }
Пример #9
0
 /// <summary>
 /// Amend order with payment method specific attributes.
 /// </summary>
 /// <param name="order">The order to amend.</param>
 public virtual PublicOrder AmendOrder(PublicOrder order, PaymentData paymentData)
 {
     return order;
 }