Exemple #1
0
        public async Task <IActionResult> Checkout(double total)
        {
            var    payPalAPI = new PayPalAPI(configuration);
            string url       = await payPalAPI.getRedirectURLToPayPal(total, "USD");

            return(Redirect(url));
        }
Exemple #2
0
        public RefundUserCtrl(string staffID)
        {
            InitializeComponent();

            this.staffID = staffID;

            try
            {
                apiContext = PayPalAPI.getApiContext();
            }
            catch (PayPal.ConnectionException)
            {
                displayOrderPanel.Visible    = false;
                failConnectPayPalMsg.Visible = true;
            }

            notRedundedStartDateTime.MaxDate = DateTime.Now.Date.AddDays(-1);
            notRedundedStartDateTime.Value   = notRedundedStartDateTime.MaxDate;
            notRedundedEndDateTime.MinDate   = DateTime.Now.Date.AddDays(1).AddMilliseconds(-1);
            notRedundedEndDateTime.Value     = notRedundedEndDateTime.MinDate;

            paypalRefundedStartDateTime.MaxDate = DateTime.Now.Date.AddDays(-1);
            paypalRefundedStartDateTime.Value   = paypalRefundedStartDateTime.MaxDate;
            paypalRefundedEndDateTime.MinDate   = DateTime.Now.Date.AddDays(1).AddMilliseconds(-1);
            paypalRefundedEndDateTime.Value     = paypalRefundedEndDateTime.MinDate;
        }
        private void Refund(Transaction t)
        {
            PayPalAPI ppAPI = this.GetPaypalAPI();

            try
            {
                //per paypal's request, the refund type should always be set to partial
                string refundType = "Partial";
                RefundTransactionResponseType refundResponse = ppAPI.RefundTransaction(
                    t.PreviousTransactionNumber, refundType, String.Format("{0:N}", t.Amount));

                if ((refundResponse.Ack == AckCodeType.Success) || (refundResponse.Ack == AckCodeType.SuccessWithWarning))
                {
                    t.Result.ReferenceNumber = refundResponse.RefundTransactionID;
                    t.Result.Succeeded       = true;
                }
                else
                {
                    t.Result.Messages.Add(new Message("Paypal Payment Refund Failed.", "", MessageType.Warning));
                    foreach (ErrorType ppError in refundResponse.Errors)
                    {
                        t.Result.Messages.Add(new Message(ppError.LongMessage, ppError.ErrorCode, MessageType.Error));
                    }
                    t.Result.Succeeded = false;
                }
            }
            finally
            {
                ppAPI = null;
            }
        }
        public bool Void(MerchantTribe.Payment.Transaction t, MerchantTribeApplication app)
        {
            PayPalAPI ppAPI = Utilities.PaypalExpressUtilities.GetPaypalAPI(app.CurrentStore);

            try
            {
                if (t.PreviousTransactionNumber != null)
                {
                    DoVoidResponseType voidResponse = ppAPI.DoVoid(t.PreviousTransactionNumber,
                                                                   "Transaction Voided");
                    if ((voidResponse.Ack == AckCodeType.Success) || (voidResponse.Ack == AckCodeType.SuccessWithWarning))
                    {
                        t.Result.Succeeded = true;
                        t.Result.Messages.Add(new MerchantTribe.Payment.Message("PayPal Express Payment Voided Successfully.", "OK", MerchantTribe.Payment.MessageType.Information));
                        return(true);
                    }
                    else
                    {
                        t.Result.Succeeded = false;
                        t.Result.Messages.Add(new MerchantTribe.Payment.Message("Paypal Express Payment Void Failed.", "", MerchantTribe.Payment.MessageType.Error));
                        foreach (ErrorType ppError in voidResponse.Errors)
                        {
                            t.Result.Messages.Add(new MerchantTribe.Payment.Message(ppError.LongMessage, ppError.ErrorCode, MerchantTribe.Payment.MessageType.Error));
                        }
                        return(false);
                    }
                }
            }
            finally
            {
                ppAPI = null;
            }
            return(false);
        }
        private void Void(Transaction t)
        {
            PayPalAPI ppAPI = this.GetPaypalAPI();

            try
            {
                DoVoidResponseType voidResponse = ppAPI.DoVoid(t.PreviousTransactionNumber, "Transaction Voided");

                if ((voidResponse.Ack == AckCodeType.Success) || (voidResponse.Ack == AckCodeType.SuccessWithWarning))
                {
                    t.Result.Succeeded = true;
                }
                else
                {
                    t.Result.Messages.Add(new Message("Paypal Payment Void Failed.", "", MessageType.Warning));
                    foreach (ErrorType ppError in voidResponse.Errors)
                    {
                        t.Result.Messages.Add(new Message(ppError.LongMessage, ppError.ErrorCode, MessageType.Error));
                    }
                    t.Result.Succeeded = false;
                }
            }
            finally
            {
                ppAPI = null;
            }
        }
        private void Charge(Transaction t)
        {
            PayPalAPI ppAPI = this.GetPaypalAPI();

            try
            {
                string OrderNumber = string.Empty;

                OrderNumber = t.MerchantInvoiceNumber;
                // Solves Duplicate Order Number Problem
                OrderNumber = OrderNumber + System.Guid.NewGuid().ToString();

                DoDirectPaymentResponseType chargeResponse = ppAPI.DoDirectPayment(String.Format("{0:N}", t.Amount),
                                                                                   t.Customer.LastName,
                                                                                   t.Customer.FirstName,
                                                                                   t.Customer.ShipLastName,
                                                                                   t.Customer.ShipFirstName,
                                                                                   t.Customer.Street,
                                                                                   "",
                                                                                   t.Customer.City,
                                                                                   t.Customer.Region,
                                                                                   t.Customer.PostalCode,
                                                                                   this.ConvertCountryName(t.Customer.Country),
                                                                                   t.Card.CardTypeName,
                                                                                   t.Card.CardNumber,
                                                                                   t.Card.SecurityCode,
                                                                                   t.Card.ExpirationMonth,
                                                                                   t.Card.ExpirationYear,
                                                                                   PaymentActionCodeType.Sale,
                                                                                   t.Customer.IpAddress,
                                                                                   t.Customer.ShipStreet,
                                                                                   "",
                                                                                   t.Customer.ShipCity,
                                                                                   t.Customer.ShipRegion,
                                                                                   t.Customer.ShipPostalCode,
                                                                                   this.ConvertCountryName(t.Customer.ShipCountry),
                                                                                   OrderNumber);



                if ((chargeResponse.Ack == AckCodeType.Success) || (chargeResponse.Ack == AckCodeType.SuccessWithWarning))
                {
                    t.Result.ReferenceNumber = chargeResponse.TransactionID;
                    t.Result.Succeeded       = true;
                }
                else
                {
                    t.Result.Messages.Add(new Message("Paypal Charge Failed.", "", MessageType.Warning));
                    foreach (ErrorType ppError in chargeResponse.Errors)
                    {
                        t.Result.Messages.Add(new Message(ppError.LongMessage, ppError.ErrorCode, MessageType.Error));
                    }
                    t.Result.Succeeded = false;
                }
            }
            finally
            {
                ppAPI = null;
            }
        }
Exemple #7
0
        public bool Charge(Transaction t, HotcakesApplication app)
        {
            try
            {
                var ppAPI = PaypalExpressUtilities.GetPaypalAPI(app.CurrentStore);

                var OrderNumber = t.MerchantInvoiceNumber + Guid.NewGuid();

                DoExpressCheckoutPaymentResponseType paymentResponse;
                //there was no authorization so we just need to do a direct sale
                paymentResponse = ppAPI.DoExpressCheckoutPayment(t.PreviousTransactionNumber,
                                                                 t.PreviousTransactionAuthCode,
                                                                 t.Amount.ToString("N", CultureInfo.InvariantCulture),
                                                                 PaymentActionCodeType.Sale,
                                                                 PayPalAPI.GetCurrencyCodeType(app.CurrentStore.Settings.PayPal.Currency),
                                                                 OrderNumber);

                if (paymentResponse.Ack == AckCodeType.Success || paymentResponse.Ack == AckCodeType.SuccessWithWarning)
                {
                    var paymentInfo = paymentResponse.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0];

                    t.Result.ReferenceNumber = paymentInfo.TransactionID;

                    if (paymentInfo.PaymentStatus == PaymentStatusCodeType.Completed)
                    {
                        t.Result.Succeeded = true;
                        t.Result.Messages.Add(new Message("PayPal Express Payment Charged Successfully.", "OK",
                                                          MessageType.Information));
                        return(true);
                    }
                    if (paymentInfo.PaymentStatus == PaymentStatusCodeType.Pending)
                    {
                        t.Result.Succeeded               = true;
                        t.Result.ResponseCode            = "PENDING";
                        t.Result.ResponseCodeDescription = "PayPal Express Payment PENDING";
                        t.Result.Messages.Add(new Message("Paypal Express Payment PENDING.", "OK",
                                                          MessageType.Information));
                        return(true);
                    }
                    t.Result.Succeeded = false;
                    t.Result.Messages.Add(new Message("An error occurred while trying to charge your PayPal payment.",
                                                      string.Empty, MessageType.Error));
                    return(false);
                }
                t.Result.Succeeded = false;
                t.Result.Messages.Add(new Message("Paypal Express Payment Charge Failed.", string.Empty,
                                                  MessageType.Error));
                foreach (var ppError in paymentResponse.Errors)
                {
                    t.Result.Messages.Add(new Message(ppError.LongMessage, ppError.ErrorCode, MessageType.Error));
                }
                return(false);
            }
            catch (Exception ex)
            {
                HandleException(t, ex);
            }
            return(false);
        }
        public bool Charge(MerchantTribe.Payment.Transaction t, MerchantTribeApplication app)
        {
            PayPalAPI ppAPI = Utilities.PaypalExpressUtilities.GetPaypalAPI(app.CurrentStore);

            try {
                string OrderNumber = t.MerchantInvoiceNumber + System.Guid.NewGuid().ToString();

                DoExpressCheckoutPaymentResponseType paymentResponse;
                //there was no authorization so we just need to do a direct sale
                paymentResponse = ppAPI.DoExpressCheckoutPayment(t.PreviousTransactionNumber,
                                                                 t.PreviousTransactionAuthCode,
                                                                 string.Format("{0:N}", t.Amount),
                                                                 PaymentActionCodeType.Sale,
                                                                 PayPalAPI.GetCurrencyCodeType(app.CurrentStore.Settings.PayPal.Currency),
                                                                 OrderNumber);

                if ((paymentResponse.Ack == AckCodeType.Success) || (paymentResponse.Ack == AckCodeType.SuccessWithWarning))
                {
                    t.Result.ReferenceNumber = paymentResponse.DoExpressCheckoutPaymentResponseDetails.PaymentInfo.TransactionID;

                    if (paymentResponse.DoExpressCheckoutPaymentResponseDetails.PaymentInfo.PaymentStatus == PaymentStatusCodeType.Completed)
                    {
                        t.Result.Succeeded = true;
                        t.Result.Messages.Add(new MerchantTribe.Payment.Message("PayPal Express Payment Charged Successfully.", "OK", MerchantTribe.Payment.MessageType.Information));
                        return(true);
                    }
                    else if (paymentResponse.DoExpressCheckoutPaymentResponseDetails.PaymentInfo.PaymentStatus == PaymentStatusCodeType.Pending)
                    {
                        t.Result.Succeeded               = true;
                        t.Result.ResponseCode            = "PENDING";
                        t.Result.ResponseCodeDescription = "PayPal Express Payment PENDING";
                        t.Result.Messages.Add(new MerchantTribe.Payment.Message("Paypal Express Payment PENDING.", "OK", MerchantTribe.Payment.MessageType.Information));
                        return(true);
                    }
                    else
                    {
                        t.Result.Succeeded = false;
                        t.Result.Messages.Add(new MerchantTribe.Payment.Message("An error occurred while trying to charge your PayPal payment.", "", MerchantTribe.Payment.MessageType.Error));
                        return(false);
                    }
                }
                else
                {
                    t.Result.Succeeded = false;
                    t.Result.Messages.Add(new MerchantTribe.Payment.Message("Paypal Express Payment Charge Failed.", "", MerchantTribe.Payment.MessageType.Error));
                    foreach (ErrorType ppError in paymentResponse.Errors)
                    {
                        t.Result.Messages.Add(new MerchantTribe.Payment.Message(ppError.LongMessage, ppError.ErrorCode, MerchantTribe.Payment.MessageType.Error));
                    }
                    return(false);
                }
            }
            finally
            {
                ppAPI = null;
            }
        }
Exemple #9
0
        private void DisplayPaypalExpressMode(CheckoutViewModel model)
        {
            model.PayPalToken   = Request.QueryString["token"] ?? string.Empty;
            model.PayPalPayerId = Request.QueryString["payerId"] ?? string.Empty;

            if (string.IsNullOrEmpty(model.PayPalToken))
            {
                Response.Redirect("~/cart");
            }


            PayPalAPI ppAPI  = MerchantTribe.Commerce.Utilities.PaypalExpressUtilities.GetPaypalAPI(this.MTApp.CurrentStore);
            bool      failed = false;
            GetExpressCheckoutDetailsResponseType ppResponse = null;

            try
            {
                if (!GetExpressCheckoutDetails(ppAPI, ref ppResponse, model))
                {
                    failed = true;
                    EventLog.LogEvent("Paypal Express Checkout", "GetExpressCheckoutDetails call failed. Detailed Errors will follow. ", EventLogSeverity.Error);
                    foreach (ErrorType ppError in ppResponse.Errors)
                    {
                        EventLog.LogEvent("Paypal error number: " + ppError.ErrorCode, "Paypal Error: '" + ppError.ShortMessage + "' Message: '" + ppError.LongMessage + "' " + " Values passed to GetExpressCheckoutDetails: Token: " + model.PayPalToken, EventLogSeverity.Error);
                    }
                    this.FlashFailure("An error occurred during the Paypal Express checkout. No charges have been made. Please try again.");
                    ViewBag.HideCheckout = true;
                }
            }
            finally
            {
                Order o = model.CurrentOrder;
                ViewBag.HideEditButton = false;
                if (o.CustomProperties["PaypalAddressOverride"] != null)
                {
                    if (o.CustomProperties["PaypalAddressOverride"].Value == "1")
                    {
                        ViewBag.HideEditButton = true;
                    }
                }

                o.CustomProperties.Add("bvsoftware", "PayerID", Request.QueryString["PayerID"]);
                if (!failed)
                {
                    if (ppResponse != null && ppResponse.GetExpressCheckoutDetailsResponseDetails != null && ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo != null)
                    {
                        o.UserEmail = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Payer;
                        if (string.IsNullOrEmpty(o.ShippingAddress.Phone))
                        {
                            o.ShippingAddress.Phone = ppResponse.GetExpressCheckoutDetailsResponseDetails.ContactPhone ?? string.Empty;
                        }
                    }
                }
                MTApp.OrderServices.Orders.Update(o);
                ppAPI = null;
            }
        }
Exemple #10
0
        public ActionResult Edit()
        {
            CheckoutViewModel model = IndexSetup();

            DisplayPaypalExpressMode(model);
            LoadShippingMethodsForOrder(model);
            Order o = model.CurrentOrder;

            PayPalAPI ppAPI = MerchantTribe.Commerce.Utilities.PaypalExpressUtilities.GetPaypalAPI(this.MTApp.CurrentStore);

            try
            {
                string cartReturnUrl = MTApp.CurrentStore.RootUrlSecure() + "paypalexpresscheckout";
                string cartCancelUrl = MTApp.CurrentStore.RootUrlSecure() + "checkout";

                SetExpressCheckoutResponseType expressResponse;
                if (MTApp.CurrentStore.Settings.PayPal.ExpressAuthorizeOnly)
                {
                    expressResponse = ppAPI.SetExpressCheckout(string.Format("{0:N}", o.TotalOrderBeforeDiscounts), cartReturnUrl, cartCancelUrl, PaymentActionCodeType.Order, PayPalAPI.GetCurrencyCodeType(MTApp.CurrentStore.Settings.PayPal.Currency), o.OrderNumber);
                }
                else
                {
                    expressResponse = ppAPI.SetExpressCheckout(string.Format("{0:N}", o.TotalOrderBeforeDiscounts), cartReturnUrl, cartCancelUrl, PaymentActionCodeType.Sale, PayPalAPI.GetCurrencyCodeType(MTApp.CurrentStore.Settings.PayPal.Currency), o.OrderNumber);
                }

                if (expressResponse.Ack == AckCodeType.Success || expressResponse.Ack == AckCodeType.SuccessWithWarning)
                {
                    o.ThirdPartyOrderId = expressResponse.Token;
                    if (MTApp.OrderServices.Orders.Update(o))
                    {
                        if (string.Compare(MTApp.CurrentStore.Settings.PayPal.Mode, "Live", true) == 0)
                        {
                            System.Web.HttpContext.Current.Response.Redirect("https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=" + expressResponse.Token, false);
                        }
                        else
                        {
                            System.Web.HttpContext.Current.Response.Redirect("https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=" + expressResponse.Token, false);
                        }
                    }
                }
                else
                {
                    foreach (ErrorType ppError in expressResponse.Errors)
                    {
                        EventLog.LogEvent("Paypal error number: " + ppError.ErrorCode, "Paypal Error: '" + ppError.ShortMessage + "' Message: '" + ppError.LongMessage + "' " + " Values passed to SetExpressCheckout: Total=" + string.Format("{0:c}", o.TotalOrderBeforeDiscounts) + " Cart Return Url: " + cartReturnUrl + " Cart Cancel Url: " + cartCancelUrl, EventLogSeverity.Error);
                    }
                }
            }
            finally
            {
                ppAPI = null;
            }

            return(Redirect("~/paypalexpresscheckout"));
        }
        /// <summary>
        /// Send item data and price to paypal API
        /// </summary>
        /// <param name="total"></param>
        /// <returns>Redirect to PayPal website</returns>
        public async Task <IActionResult> Checkout(double total)
        {
            try
            {
                var    payPalApi = new PayPalAPI(configuration);
                string url       = await payPalApi.GetRedirectURLToPayPal(total, "CAD");

                return(Redirect(url));
            }catch
            {
                return(RedirectToAction("ErrorOccured", "Home"));
            }
        }
Exemple #12
0
        public bool Authorize(Transaction t, HotcakesApplication app)
        {
            try
            {
                var ppAPI = PaypalExpressUtilities.GetPaypalAPI(app.CurrentStore);

                if (t.PreviousTransactionNumber != null)
                {
                    var OrderNumber = t.MerchantInvoiceNumber + Guid.NewGuid();

                    PaymentActionCodeType mode = PaymentActionCodeType.Authorization;
                    if (!app.CurrentStore.Settings.PayPal.ExpressAuthorizeOnly)
                    {
                        mode = PaymentActionCodeType.Sale;
                    }

                    var paymentResponse = ppAPI.DoExpressCheckoutPayment(t.PreviousTransactionNumber,
                                                                         t.PreviousTransactionAuthCode,
                                                                         t.Amount.ToString("N", CultureInfo.InvariantCulture),
                                                                         mode,
                                                                         PayPalAPI.GetCurrencyCodeType(app.CurrentStore.Settings.PayPal.Currency),
                                                                         OrderNumber);

                    if (paymentResponse.Ack == AckCodeType.Success ||
                        paymentResponse.Ack == AckCodeType.SuccessWithWarning)
                    {
                        var paymentInfo = paymentResponse.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0];

                        t.Result.Succeeded               = true;
                        t.Result.ReferenceNumber         = paymentInfo.TransactionID;
                        t.Result.ResponseCode            = "OK";
                        t.Result.ResponseCodeDescription = "PayPal Express Payment Authorized Successfully.";
                        return(true);
                    }
                    t.Result.Succeeded = false;
                    t.Result.Messages.Add(new Message("PayPal Express Payment Authorization Failed.", string.Empty,
                                                      MessageType.Error));
                    foreach (var ppError in paymentResponse.Errors)
                    {
                        t.Result.Messages.Add(new Message(ppError.LongMessage, ppError.ErrorCode, MessageType.Error));
                    }
                    return(false);
                }
            }
            catch (Exception ex)
            {
                HandleException(t, ex);
            }

            return(false);
        }
Exemple #13
0
        public bool DoGroupPaymentSuccess(decimal vCreditTotal)
        {
            bool success = false;

            System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
            com.paypal.sdk.services.NVPCallerServices caller = PayPalAPI.PayPalAPIInitialize();
            NVPCodec encoder = new NVPCodec();

            encoder["METHOD"]         = "DoDirectPayment";
            encoder["PAYMENTACTION"]  = "Sale";
            encoder["IPADDRESS"]      = Helper.CurrentUserIP;
            encoder["AMT"]            = Helper.FormatPriceToPayPalStringFormat(vCreditTotal);
            encoder["CREDITCARDTYPE"] = CreditCardTypeRepository.GetCreditCardTypeById(base.CurrentCreditCard.CreditCardTypeId).Title;
            encoder["ACCT"]           = base.CurrentCreditCard.CreditCardNumber;
            encoder["EXPDATE"]        = base.CurrentCreditCard.ExpirationMonth.ToString() + base.CurrentCreditCard.ExpirationYear.ToString();
            encoder["CVV2"]           = base.CurrentCreditCard.SecurityCode.ToString();
            encoder["FIRSTNAME"]      = base.CurrentCreditCard.FirstName;
            encoder["LASTNAME"]       = base.CurrentCreditCard.LastName;

            /*
             * encoder["STREET"] = base.CurrentCreditCard.AddressLine;
             * encoder["CITY"] = base.CurrentCreditCard.City;
             * encoder["STATE"] = base.CurrentCreditCard.State;
             * encoder["ZIP"] = base.CurrentCreditCard.ZipCode;
             * encoder["COUNTRYCODE"] = "US";
             */
            encoder["CURRENCYCODE"] = "USD";

            string pStrrequestforNvp = encoder.Encode();
            string pStresponsenvp    = caller.Call(pStrrequestforNvp);

            NVPCodec decoder = new NVPCodec();

            decoder.Decode(pStresponsenvp);

            string strAck = decoder["ACK"];

            if (strAck != null && (strAck == "Success" || strAck == "SuccessWithWarning"))
            {
                Session["result"] = decoder;
                // string pStrResQue = "API=" + "DoDirect Payment ";
                success = true;
            }
            else
            {
                Session["errorresult"] = decoder;
            }
            return(success);
        }
        public async Task <IActionResult> Success([FromQuery(Name = "paymentId")] string paymentId, [FromQuery(Name = "PayerID")] string payerId)
        {
            var PayPalAPI = new PayPalAPI(_configuration);

            try
            {
                var result = await PayPalAPI.executedPayment(paymentId, payerId);
            }
            catch
            {
                return(View());
            }
            _Donhang.UpdateDescription(HttpContext.Session.GetInt32("Id"), "Đã Thanh toán");
            return(View());
        }
Exemple #15
0
        public async Task <IActionResult> CheckOutPayPal(int id_order)
        {
            Order order = dbContext.Orders.Include(p => p.Promotion)
                          .Include(p => p.DeliveryCost)
                          .Where(p => p.order_ID == id_order)
                          .FirstOrDefault();
            double total_order = Convert.ToDouble(order.order_Total
                                                  - (order.Promotion.promotion_Percent * order.order_Total)
                                                  + order.DeliveryCost.deliverycost_Cost);

            TempData["order_id"] = id_order;

            var    paypalAPI = new PayPalAPI(configuration);
            string url       = await paypalAPI.GetRedirectURLToPayPal(total_order, "USD");

            return(Redirect(url));
        }
        public async System.Threading.Tasks.Task <IHttpActionResult> PaymentTransactionv2Async(PaymentTransactionV2 paymentTransactionV2)
        {
            try
            {
                var paymentTransactionManagement = new PaymentTransactionManagement();
                var paymentTransaction           = paymentTransactionV2.getV1();
                var response = PayPalAPI.SendPaymentToHotel(paymentTransactionV2.PaypalEmail, (paymentTransactionV2.TotalAmount - paymentTransactionV2.CommissionTotal).ToString());

                paymentTransactionManagement.Create(paymentTransaction);
                apiResponse         = new ApiResponse();
                apiResponse.Message = "Pago realizado con exito.";
                return(Ok(apiResponse));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Exemple #17
0
        private bool GetExpressCheckoutDetails(PayPalAPI ppAPI, ref GetExpressCheckoutDetailsResponseType ppResponse, CheckoutViewModel model)
        {
            ppResponse = ppAPI.GetExpressCheckoutDetails(Request.QueryString["token"]);
            if (ppResponse.Ack == AckCodeType.Success || ppResponse.Ack == AckCodeType.SuccessWithWarning)
            {
                model.CurrentOrder.UserEmail = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Payer;
                model.CurrentOrder.ShippingAddress.FirstName = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerName.FirstName ?? string.Empty;
                if (ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerName.MiddleName.Length > 0)
                {
                    model.CurrentOrder.ShippingAddress.MiddleInitial = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerName.MiddleName.Substring(0, 1);
                }
                else
                {
                    model.CurrentOrder.ShippingAddress.MiddleInitial = string.Empty;
                }
                model.CurrentOrder.ShippingAddress.LastName                = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerName.LastName ?? string.Empty;
                model.CurrentOrder.ShippingAddress.Company                 = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerBusiness ?? string.Empty;
                model.CurrentOrder.ShippingAddress.Line1                   = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Street1 ?? string.Empty;
                model.CurrentOrder.ShippingAddress.Line2                   = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Street2 ?? string.Empty;
                model.CurrentOrder.ShippingAddress.CountryData.Name        = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.CountryName ?? string.Empty;
                model.CurrentOrder.ShippingAddress.CountryData.Bvin        = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Country.ToString();
                model.CurrentOrder.ShippingAddress.City                    = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.CityName ?? string.Empty;
                model.CurrentOrder.ShippingAddress.RegionData.Name         = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.StateOrProvince ?? string.Empty;
                model.CurrentOrder.ShippingAddress.RegionData.Abbreviation =
                    model.CurrentOrder.ShippingAddress.RegionData.Name ?? string.Empty;
                model.CurrentOrder.ShippingAddress.PostalCode = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.PostalCode ?? string.Empty;
                model.CurrentOrder.ShippingAddress.Phone      = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.ContactPhone ?? string.Empty;

                if (ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.AddressStatus == AddressStatusCodeType.Confirmed)
                {
                    ViewBag.AddressStatus = "Confirmed";
                }
                else
                {
                    ViewBag.AddressStatus = "Unconfirmed";
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public bool Authorize(MerchantTribe.Payment.Transaction t, MerchantTribeApplication app)
        {
            PayPalAPI ppAPI = Utilities.PaypalExpressUtilities.GetPaypalAPI(app.CurrentStore);

            try
            {
                DoExpressCheckoutPaymentResponseType paymentResponse;
                if (t.PreviousTransactionNumber != null)
                {
                    paymentResponse = ppAPI.DoExpressCheckoutPayment(t.PreviousTransactionNumber,
                                                                     t.PreviousTransactionAuthCode,
                                                                     string.Format("{0:N}", t.Amount),
                                                                     PaymentActionCodeType.Order,
                                                                     PayPalAPI.GetCurrencyCodeType(app.CurrentStore.Settings.PayPal.Currency),
                                                                     t.MerchantInvoiceNumber + System.Guid.NewGuid().ToString());

                    if ((paymentResponse.Ack == AckCodeType.Success) || (paymentResponse.Ack == AckCodeType.SuccessWithWarning))
                    {
                        t.Result.Succeeded               = true;
                        t.Result.ReferenceNumber         = paymentResponse.DoExpressCheckoutPaymentResponseDetails.PaymentInfo.TransactionID;
                        t.Result.ResponseCode            = "OK";
                        t.Result.ResponseCodeDescription = "PayPal Express Payment Authorized Successfully.";
                        return(true);
                    }
                    else
                    {
                        t.Result.Succeeded = false;
                        t.Result.Messages.Add(new MerchantTribe.Payment.Message("PayPal Express Payment Authorization Failed.", "", MerchantTribe.Payment.MessageType.Error));
                        foreach (ErrorType ppError in paymentResponse.Errors)
                        {
                            t.Result.Messages.Add(new MerchantTribe.Payment.Message(ppError.LongMessage, ppError.ErrorCode, MerchantTribe.Payment.MessageType.Error));
                        }
                        return(false);
                    }
                }
            }
            finally
            {
                ppAPI = null;
            }

            return(false);
        }
Exemple #19
0
        // thông báo thanh toán thành công
        public async Task <IActionResult> Success([FromQuery(Name = "paymentId")] string paymentID, [FromQuery(Name = "PayerID")] string payerID)
        {
            var paypalAPI = new PayPalAPI(configuration);
            PayPalPaymentExecuteResponse result = await paypalAPI.ExecutePayment(paymentID, payerID);

            if (result.payer.status == "VERIFIED")
            {
                var   order_id = TempData["order_id"];
                Order order    = dbContext.Orders.Find(order_id);
                order.StatusOrder       = "Đã thanh toán";
                order.order_PaymentDate = DateTime.Now.Date;
                dbContext.Orders.Update(order);
                dbContext.SaveChanges();
                ClearCart();
            }

            // Debug for result of code
            ViewBag.resultSatus = result.payer.status.ToString();
            return(View("Success"));
        }
        public bool DoDirectPaymentSuccess(BuyGiftCardModel model)
        {
            bool success = false;

            com.paypal.sdk.services.NVPCallerServices caller = PayPalAPI.PayPalAPIInitialize();
            NVPCodec encoder = new NVPCodec();

            encoder["METHOD"]         = "DoDirectPayment";
            encoder["PAYMENTACTION"]  = "Sale";
            encoder["IPADDRESS"]      = Helper.CurrentUserIP;
            encoder["AMT"]            = Helper.FormatPriceToPayPalStringFormat(model.Amount);
            encoder["CREDITCARDTYPE"] = CreditCardTypeRepository.GetCreditCardTypeById(int.Parse(model.CardType)).Title;
            encoder["ACCT"]           = model.CardNumber;
            encoder["EXPDATE"]        = int.Parse(model.ExpirationMonth).ToString() + int.Parse(model.ExpirationYear).ToString();
            encoder["CVV2"]           = int.Parse(model.SecurityCode).ToString();
            encoder["FIRSTNAME"]      = model.BillFirstName;
            encoder["LASTNAME"]       = model.BillLastName;
            encoder["CURRENCYCODE"]   = "USD";

            string pStrrequestforNvp = encoder.Encode();
            string pStresponsenvp    = caller.Call(pStrrequestforNvp);

            NVPCodec decoder = new NVPCodec();

            decoder.Decode(pStresponsenvp);

            string strAck = decoder["ACK"];

            if (strAck != null && (strAck == "Success" || strAck == "SuccessWithWarning"))
            {
                Session["result"] = decoder;
                // string pStrResQue = "API=" + "DoDirect Payment ";
                success = true;
            }
            else
            {
                Session["errorresult"] = decoder;
            }
            return(success);
        }
Exemple #21
0
        public bool Refund(Transaction t, HotcakesApplication app)
        {
            try
            {
                var ppAPI = PaypalExpressUtilities.GetPaypalAPI(app.CurrentStore);

                if (t.PreviousTransactionNumber != null)
                {
                    var refundType = string.Empty;
                    //per paypal's request, the refund type should always be set to partial
                    refundType = "Partial";
                    var refundResponse = ppAPI.RefundTransaction(
                        t.PreviousTransactionNumber,
                        refundType,
                        t.Amount.ToString("N", CultureInfo.InvariantCulture),
                        PayPalAPI.GetCurrencyCodeType(app.CurrentStore.Settings.PayPal.Currency));
                    if (refundResponse.Ack == AckCodeType.Success ||
                        refundResponse.Ack == AckCodeType.SuccessWithWarning)
                    {
                        t.Result.Succeeded = true;
                        t.Result.Messages.Add(new Message("PayPal Express Payment Refunded Successfully.", "OK",
                                                          MessageType.Information));
                        return(true);
                    }
                    t.Result.Succeeded = false;
                    t.Result.Messages.Add(new Message("Paypal Express Payment Refund Failed.", string.Empty,
                                                      MessageType.Error));
                    foreach (var ppError in refundResponse.Errors)
                    {
                        t.Result.Messages.Add(new Message(ppError.LongMessage, ppError.ErrorCode, MessageType.Error));
                    }
                    return(false);
                }
            }
            catch (Exception ex)
            {
                HandleException(t, ex);
            }
            return(false);
        }
Exemple #22
0
        public ApproveRejectOrderUserCtrl(string staffID)
        {
            this.staffID = staffID;

            InitializeComponent();

            setOrderTypeComboBox();
            setProductCategoriesComboBox();
            setPerfumeCategoriesComboBox();

            productCategoriesComboBox_SelectedIndexChanged(null, null);
            orderTypeComboBox_SelectedIndexChanged(null, null);
            try
            {
                apiContext = PayPalAPI.getApiContext();
            }
            catch (PayPal.ConnectionException)
            {
                displayOrderPanel.Visible    = false;
                failConnectPayPalMsg.Visible = true;
            }
        }
        public bool Refund(MerchantTribe.Payment.Transaction t, MerchantTribeApplication app)
        {
            PayPalAPI ppAPI = Utilities.PaypalExpressUtilities.GetPaypalAPI(app.CurrentStore);

            try {
                if (t.PreviousTransactionNumber != null)
                {
                    string refundType = string.Empty;
                    //per paypal's request, the refund type should always be set to partial
                    refundType = "Partial";
                    RefundTransactionResponseType refundResponse
                        = ppAPI.RefundTransaction(t.PreviousTransactionNumber,
                                                  refundType, string.Format("{0:N}", t.Amount));
                    if ((refundResponse.Ack == AckCodeType.Success) || (refundResponse.Ack == AckCodeType.SuccessWithWarning))
                    {
                        t.Result.Succeeded = true;
                        t.Result.Messages.Add(new MerchantTribe.Payment.Message("PayPal Express Payment Refunded Successfully.", "OK", MerchantTribe.Payment.MessageType.Information));
                        return(true);
                    }
                    else
                    {
                        t.Result.Succeeded = false;
                        t.Result.Messages.Add(new MerchantTribe.Payment.Message("Paypal Express Payment Refund Failed.", "", MerchantTribe.Payment.MessageType.Error));
                        foreach (ErrorType ppError in refundResponse.Errors)
                        {
                            t.Result.Messages.Add(new MerchantTribe.Payment.Message(ppError.LongMessage, ppError.ErrorCode, MerchantTribe.Payment.MessageType.Error));
                        }
                        return(false);
                    }
                }
            }
            finally
            {
                ppAPI = null;
            }

            return(false);
        }
        private PaymentDetailsItemType[] GetOrderItemsDetails(OrderTaskContext context)
        {
            var currency = PayPalAPI.GetCurrencyCodeType(context.HccApp.CurrentStore.Settings.PayPal.Currency);

            var itemDetails = new List <PaymentDetailsItemType>();

            var itemDetail = new PaymentDetailsItemType();

            itemDetail.Name = context.HccApp.CurrentStore.Settings.FriendlyName;
            var itemsTotalWithoutTax = context.Order.TotalOrderAfterDiscounts;

            if (context.HccApp.CurrentStore.Settings.ApplyVATRules)
            {
                itemsTotalWithoutTax -= context.Order.ItemsTax;
            }
            itemDetail.Amount            = new BasicAmountType();
            itemDetail.Amount.Value      = itemsTotalWithoutTax.ToString("N", CultureInfo.InvariantCulture);
            itemDetail.Amount.currencyID = currency;

            itemDetails.Add(itemDetail);

            return(itemDetails.ToArray());
        }
Exemple #25
0
        public async Task <IActionResult> Success([FromQuery(Name = "paymentId")] string paymentId, [FromQuery(Name = "payerID")] string payerID)
        {
            var payPalAPI = new PayPalAPI(configuration);
            PayPalPaymentExecutedResponse result = await payPalAPI.executedPayment(paymentId, payerID);

            Debug.WriteLine("Transaction Details");
            Debug.WriteLine("cart: " + result.cart);
            Debug.WriteLine("create_time: " + result.create_time.ToLongDateString());
            Debug.WriteLine("id: " + result.id);
            Debug.WriteLine("intent: " + result.intent);
            Debug.WriteLine("links 0 - href: " + result.links[0].href);
            Debug.WriteLine("links 0 - method: " + result.links[0].method);
            Debug.WriteLine("links 0 - rel: " + result.links[0].rel);
            Debug.WriteLine("payer_info - first_name: " + result.payer.payer_info.first_name);
            Debug.WriteLine("payer_info - last_name: " + result.payer.payer_info.last_name);
            Debug.WriteLine("payer_info - email: " + result.payer.payer_info.email);
            Debug.WriteLine("payer_info - billing_address: " + result.payer.payer_info.billing_address);
            Debug.WriteLine("payer_info - country_code: " + result.payer.payer_info.country_code);
            Debug.WriteLine("payer_info - payer_id: " + result.payer.payer_info.payer_id);
            Debug.WriteLine("state:" + result.state);
            ViewBag.result = result;
            return(View());
        }
Exemple #26
0
        private bool GetExpressCheckoutDetails(PayPalAPI ppAPI, ref GetExpressCheckoutDetailsResponseType ppResponse,
                                               CheckoutViewModel model)
        {
            ppResponse = ppAPI.GetExpressCheckoutDetails(Request.QueryString["token"]);
            if (ppResponse.Ack == AckCodeType.Success || ppResponse.Ack == AckCodeType.SuccessWithWarning)
            {
                var payerInfo = ppResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo;
                var country   = HccApp.GlobalizationServices.Countries.FindByISOCode(payerInfo.Address.Country.ToString());
                model.CurrentOrder.UserEmail = payerInfo.Payer;

                if (model.CurrentOrder.HasShippingItems)
                {
                    model.CurrentOrder.ShippingAddress.FirstName = payerInfo.PayerName.FirstName;
                    model.CurrentOrder.ShippingAddress.LastName  = payerInfo.PayerName.LastName;

                    model.CurrentOrder.ShippingAddress.Company     = payerInfo.PayerBusiness ?? string.Empty;
                    model.CurrentOrder.ShippingAddress.Line1       = payerInfo.Address.Street1 ?? string.Empty;
                    model.CurrentOrder.ShippingAddress.Line2       = payerInfo.Address.Street2 ?? string.Empty;
                    model.CurrentOrder.ShippingAddress.CountryBvin = country.Bvin ?? string.Empty;
                    model.CurrentOrder.ShippingAddress.City        = payerInfo.Address.CityName ?? string.Empty;
                    model.CurrentOrder.ShippingAddress.RegionBvin  = payerInfo.Address.StateOrProvince ?? string.Empty;
                    model.CurrentOrder.ShippingAddress.PostalCode  = payerInfo.Address.PostalCode ?? string.Empty;
                    model.CurrentOrder.ShippingAddress.Phone       = payerInfo.Address.Phone ?? string.Empty;

                    if (payerInfo.Address.AddressStatus == AddressStatusCodeType.Confirmed)
                    {
                        ViewBag.AddressStatus = Localization.GetString("Confirmed");
                    }
                    else
                    {
                        ViewBag.AddressStatus = Localization.GetString("Unconfirmed");
                    }
                }
                return(true);
            }
            return(false);
        }
        public override bool ProcessCheckout(OrderTaskContext context)
        {
            if (context.HccApp.CurrentRequestContext.RoutingContext.HttpContext != null)
            {
                try
                {
                    PayPalAPI ppAPI = Utilities.PaypalExpressUtilities.GetPaypalAPI(context.HccApp.CurrentStore);

                    string cartReturnUrl = HccUrlBuilder.RouteHccUrl(HccRoute.ThirdPartyPayment, null, Uri.UriSchemeHttps);
                    string cartCancelUrl = HccUrlBuilder.RouteHccUrl(HccRoute.Checkout, null, Uri.UriSchemeHttps);

                    EventLog.LogEvent("PayPal Express Checkout", "CartCancelUrl=" + cartCancelUrl, EventLogSeverity.Information);
                    EventLog.LogEvent("PayPal Express Checkout", "CartReturnUrl=" + cartReturnUrl, EventLogSeverity.Information);

                    PaymentActionCodeType mode = PaymentActionCodeType.Authorization;
                    if (!context.HccApp.CurrentStore.Settings.PayPal.ExpressAuthorizeOnly)
                    {
                        mode = PaymentActionCodeType.Sale;
                    }

                    // Accelerated boarding
                    if (string.IsNullOrWhiteSpace(context.HccApp.CurrentStore.Settings.PayPal.UserName))
                    {
                        mode = PaymentActionCodeType.Sale;
                    }

                    var  solutionType  = context.HccApp.CurrentStore.Settings.PayPal.RequirePayPalAccount ? SolutionTypeType.Mark : SolutionTypeType.Sole;
                    bool isNonShipping = !context.Order.HasShippingItems;

                    bool addressSupplied = false;
                    if (context.Inputs["ViaCheckout"] != null &&
                        context.Inputs["ViaCheckout"].Value == "1")
                    {
                        addressSupplied = true;
                        context.Order.CustomProperties.Add("hcc", "ViaCheckout", "1");
                    }

                    PaymentDetailsItemType[] itemsDetails = GetOrderItemsDetails(context);

                    SetExpressCheckoutResponseType expressResponse;
                    if (addressSupplied)
                    {
                        Contacts.Address address = context.Order.ShippingAddress;

                        // in some cases, this logic will be hit with non-shipping orders, causing an exception
                        if (address == null || string.IsNullOrEmpty(address.Bvin))
                        {
                            // this is a workaround for that use case
                            address = context.Order.BillingAddress;
                        }

                        if (address.CountryData != null)
                        {
                            var itemsTotalWithoutTax = context.Order.TotalOrderAfterDiscounts;
                            if (context.HccApp.CurrentStore.Settings.ApplyVATRules)
                            {
                                itemsTotalWithoutTax -= context.Order.ItemsTax;
                            }
                            string itemsTotal = itemsTotalWithoutTax.ToString("N", CultureInfo.InvariantCulture);
                            string taxTotal   = context.Order.TotalTax.ToString("N", CultureInfo.InvariantCulture);
                            var    shippingTotalWithoutTax = context.Order.TotalShippingAfterDiscounts;
                            if (context.HccApp.CurrentStore.Settings.ApplyVATRules)
                            {
                                shippingTotalWithoutTax -= context.Order.ShippingTax;
                            }
                            string shippingTotal = shippingTotalWithoutTax.ToString("N", CultureInfo.InvariantCulture);

                            string orderTotal = context.Order.TotalGrand.ToString("N", CultureInfo.InvariantCulture);
                            expressResponse = ppAPI.SetExpressCheckout(
                                itemsDetails,
                                itemsTotal,
                                taxTotal,
                                shippingTotal,
                                orderTotal,
                                cartReturnUrl,
                                cartCancelUrl,
                                mode,
                                PayPalAPI.GetCurrencyCodeType(context.HccApp.CurrentStore.Settings.PayPal.Currency),
                                solutionType,
                                address.FirstName + " " + address.LastName,
                                address.CountryData.IsoCode,
                                address.Line1,
                                address.Line2,
                                address.City,
                                address.RegionBvin,
                                address.PostalCode,
                                address.Phone,
                                context.Order.OrderNumber + Guid.NewGuid().ToString(),
                                isNonShipping);
                            if (expressResponse == null)
                            {
                                EventLog.LogEvent("PayPal Express Checkout", "Express Response Was Null!", EventLogSeverity.Error);
                            }
                        }
                        else
                        {
                            EventLog.LogEvent("StartPaypalExpressCheckout", "Country with bvin " + address.CountryBvin + " was not found.", EventLogSeverity.Error);
                            return(false);
                        }
                    }
                    else
                    {
                        decimal includedTax = 0;
                        if (context.HccApp.CurrentStore.Settings.ApplyVATRules)
                        {
                            includedTax = context.Order.ItemsTax;
                        }
                        string taxTotal             = includedTax.ToString("N", CultureInfo.InvariantCulture);
                        var    itemsTotalWithoutTax = context.Order.TotalOrderAfterDiscounts;
                        if (context.HccApp.CurrentStore.Settings.ApplyVATRules)
                        {
                            itemsTotalWithoutTax -= context.Order.ItemsTax;
                        }
                        string itemsTotal = itemsTotalWithoutTax.ToString("N", CultureInfo.InvariantCulture);
                        string orderTotal = context.Order.TotalOrderAfterDiscounts.ToString("N", CultureInfo.InvariantCulture);
                        expressResponse = ppAPI.SetExpressCheckout(itemsDetails,
                                                                   itemsTotal,
                                                                   taxTotal,
                                                                   orderTotal,
                                                                   cartReturnUrl,
                                                                   cartCancelUrl,
                                                                   mode,
                                                                   PayPalAPI.GetCurrencyCodeType(context.HccApp.CurrentStore.Settings.PayPal.Currency),
                                                                   solutionType,
                                                                   context.Order.OrderNumber + Guid.NewGuid().ToString(),
                                                                   isNonShipping);
                        if (expressResponse == null)
                        {
                            EventLog.LogEvent("PayPal Express Checkout", "Express Response2 Was Null!", EventLogSeverity.Error);
                        }
                    }

                    if (expressResponse.Ack == AckCodeType.Success || expressResponse.Ack == AckCodeType.SuccessWithWarning)
                    {
                        context.Order.ThirdPartyOrderId = expressResponse.Token;

                        // Recording of this info is handled on the paypal express
                        // checkout page instead of here.
                        //Orders.OrderPaymentManager payManager = new Orders.OrderPaymentManager(context.Order);
                        //payManager.PayPalExpressAddInfo(context.Order.TotalGrand, expressResponse.Token);

                        EventLog.LogEvent("PayPal Express Checkout", "Response SUCCESS", EventLogSeverity.Information);

                        Orders.OrderNote note = new Orders.OrderNote();
                        note.IsPublic = false;
                        note.Note     = "Paypal Order Accepted With Paypal Order Number: " + expressResponse.Token;
                        context.Order.Notes.Add(note);
                        if (context.HccApp.OrderServices.Orders.Update(context.Order))
                        {
                            string urlTemplate;
                            if (string.Compare(context.HccApp.CurrentStore.Settings.PayPal.Mode, "Live", true) == 0)
                            {
                                urlTemplate = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token={0}";
                            }
                            else
                            {
                                urlTemplate = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token={0}";
                            }
                            HttpContextBase httpContext = new HccHttpContextWrapper(HttpContext.Current);
                            httpContext.Response.Redirect(string.Format(urlTemplate, expressResponse.Token), true);
                        }
                        return(true);
                    }
                    else
                    {
                        foreach (ErrorType ppError in expressResponse.Errors)
                        {
                            context.Errors.Add(new WorkflowMessage(ppError.ErrorCode, ppError.ShortMessage, true));

                            //create a note to save the paypal error info onto the order
                            Orders.OrderNote note = new Orders.OrderNote();
                            note.IsPublic = false;
                            note.Note     = "Paypal error number: " + ppError.ErrorCode + " Paypal Error: '" + ppError.ShortMessage + "' Message: '" + ppError.LongMessage;
                            context.Order.Notes.Add(note);

                            EventLog.LogEvent("Paypal error number: " + ppError.ErrorCode, "Paypal Error: '" + ppError.ShortMessage + "' Message: '" + ppError.LongMessage + "' " + " Values passed to SetExpressCheckout: Total=" + string.Format("{0:c}", context.Order.TotalOrderBeforeDiscounts) + " Cart Return Url: " + cartReturnUrl + " Cart Cancel Url: " + cartCancelUrl, EventLogSeverity.Error);
                        }
                        context.Errors.Add(new WorkflowMessage("Paypal checkout error", GlobalLocalization.GetString("PaypalCheckoutCustomerError"), true));
                        return(false);
                    }
                }
                catch (Exception ex)
                {
                    EventLog.LogEvent("Paypal Express Checkout", "Exception occurred during call to Paypal: " + ex.ToString(), EventLogSeverity.Error);
                    context.Errors.Add(new WorkflowMessage("Paypal checkout error", GlobalLocalization.GetString("PaypalCheckoutCustomerError"), true));
                    return(false);
                }
            }

            return(false);
        }
Exemple #28
0
        public bool Capture(Transaction t, HotcakesApplication app)
        {
            try
            {
                var ppAPI = PaypalExpressUtilities.GetPaypalAPI(app.CurrentStore);

                var OrderNumber = t.MerchantInvoiceNumber + Guid.NewGuid();

                var captureResponse = ppAPI.DoCapture(t.PreviousTransactionNumber,
                                                      "Thank you for your payment.",
                                                      t.Amount.ToString("N", CultureInfo.InvariantCulture),
                                                      PayPalAPI.GetCurrencyCodeType(app.CurrentStore.Settings.PayPal.Currency),
                                                      OrderNumber);

                if (captureResponse.Ack == AckCodeType.Success || captureResponse.Ack == AckCodeType.SuccessWithWarning)
                {
                    t.Result.ReferenceNumber = captureResponse.DoCaptureResponseDetails.PaymentInfo.TransactionID;

                    if (captureResponse.DoCaptureResponseDetails.PaymentInfo.PaymentStatus ==
                        PaymentStatusCodeType.Pending)
                    {
                        t.Result.Succeeded               = true;
                        t.Result.ResponseCode            = "PENDING";
                        t.Result.ResponseCodeDescription = "PayPal Express Payment PENDING";
                        t.Result.Messages.Add(new Message("Paypal Express Payment PENDING.", "OK",
                                                          MessageType.Information));
                        return(true);
                    }
                    if (captureResponse.DoCaptureResponseDetails.PaymentInfo.PaymentStatus ==
                        PaymentStatusCodeType.InProgress)
                    {
                        t.Result.Succeeded               = true;
                        t.Result.ResponseCode            = "PENDING";
                        t.Result.ResponseCodeDescription = "PayPal Express Payment IN PROGRESS";
                        t.Result.Messages.Add(new Message("Paypal Express Payment PENDING. In Progress.", "OK",
                                                          MessageType.Information));
                        return(true);
                    }
                    if (captureResponse.DoCaptureResponseDetails.PaymentInfo.PaymentStatus == PaymentStatusCodeType.None)
                    {
                        t.Result.Succeeded               = true;
                        t.Result.ResponseCode            = "PENDING";
                        t.Result.ResponseCodeDescription = "PayPal Express Payment: No Status Yet";
                        t.Result.Messages.Add(new Message("Paypal Express Payment PENDING. No Status Yet.", "OK",
                                                          MessageType.Information));
                        return(true);
                    }
                    if (captureResponse.DoCaptureResponseDetails.PaymentInfo.PaymentStatus ==
                        PaymentStatusCodeType.Processed)
                    {
                        t.Result.Succeeded               = true;
                        t.Result.ResponseCode            = "PENDING";
                        t.Result.ResponseCodeDescription = "PayPal Express Payment PENDING";
                        t.Result.Messages.Add(new Message("Paypal Express Payment PENDING.", "OK",
                                                          MessageType.Information));
                        return(true);
                    }
                    if (captureResponse.DoCaptureResponseDetails.PaymentInfo.PaymentStatus ==
                        PaymentStatusCodeType.Completed)
                    {
                        t.Result.Succeeded = true;
                        t.Result.Messages.Add(new Message("PayPal Express Payment Captured Successfully.", "OK",
                                                          MessageType.Information));
                        return(true);
                    }
                    t.Result.Succeeded = false;
                    t.Result.Messages.Add(new Message("An error occurred while trying to capture your PayPal payment.",
                                                      string.Empty, MessageType.Error));
                    return(false);
                }
                t.Result.Succeeded = false;
                t.Result.Messages.Add(new Message("Paypal Express Payment Charge Failed.", string.Empty,
                                                  MessageType.Error));
                foreach (var ppError in captureResponse.Errors)
                {
                    t.Result.Messages.Add(new Message(ppError.LongMessage, ppError.ErrorCode, MessageType.Error));
                }
                return(false);
            }
            catch (Exception ex)
            {
                HandleException(t, ex);
            }
            return(false);
        }
    public static bool PerformPayment(string CreditCardType, string CreditCardNumber, string CVV2, string ExpMonth, string ExpYear,
                                      string FirstName, string LastName, string Address1, string Address2, string City, string State, string Zip,
                                      string Country, string CountryCode, decimal Amount, out string Errors)


    {
        // LMG - maybe this should be set somewhere else??  4/28
        SetProfile.SessionProfile = SetProfile.CreateAPIProfile(Constants.API_USERNAME, Constants.API_PASSWORD, Constants.API_SIGNATURE, "", "");

        com.paypal.sdk.services.NVPCallerServices caller = PayPalAPI.PayPalAPIInitialize();
        NVPCodec encoder = new NVPCodec();

        encoder["METHOD"] = "DoDirectPayment";
        // encoder["PAYMENTACTION"] = this.Request.QueryString[Constants.PAYMENT_TYPE_PARAM];
        encoder["PAYMENTACTION"] = "Sale";
        encoder["AMT"]           = Amount.ToString();
        //encoder["AMT"] = ".01";
        encoder["CREDITCARDTYPE"] = CreditCardType;
        encoder["ACCT"]           = CreditCardNumber;
        encoder["EXPDATE"]        = ExpMonth + ExpYear;
        encoder["CVV2"]           = CVV2;
        encoder["FIRSTNAME"]      = FirstName;
        encoder["LASTNAME"]       = LastName;
        encoder["STREET"]         = Address1;
        encoder["CITY"]           = City;
        encoder["STATE"]          = State;
        encoder["ZIP"]            = Zip;
        encoder["COUNTRYCODE"]    = CountryCode;
        encoder["CURRENCYCODE"]   = "USD";

        string pStrrequestforNvp = encoder.Encode();
        // Actually Process the Card and put response etc. into pStresponsenvp
        string pStresponsenvp = caller.Call(pStrrequestforNvp);

        NVPCodec decoder = new NVPCodec();

        //
        decoder.Decode(pStresponsenvp);
        //
        string strAck = decoder["ACK"];

        Errors = "";
        if (strAck != null && (strAck == "Success" || strAck == "SuccessWithWarning"))
        {
            // Card passes, YES  (should we do a result=yes?  (note: result = bool)
            string pStrResQue = "TRANSACTIONID=" + decoder["TRANSACTIONID"] + "&" +
                                "AMT=" + decoder["AMT"] + "&" +
                                "AVSCODE=" + decoder["AVSCODE"] + "&" +
                                "CVV2MATCH=" + decoder["CVV2MATCH"];
            return(true);
//                Response.Redirect("paymentreceipt.aspx?" + pStrResQue);
        }
        else
        {
            // Card does not pass, or Paypal has an error.
            string pStrError = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" +
                               "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" +
                               "Desc2=" + decoder["L_LONGMESSAGE0"];
            Errors = pStrError;
            return(false);
            //              Response.Redirect("PayPalAPIError.aspx?" + pStrError);
        }
    }
Exemple #30
0
        public async Task <IActionResult> Save()
        {
            if (Request.HasFormContentType && Request.Form != null && Request.Form.Count() > 0)
            {
                if (HttpContext.Session.GetString("success") == null)
                {
                    string url = "";
                    //paypal
                    var    payPalAPI = new PayPalAPI(configuration);
                    var    totala    = Request.Form["total"][0];
                    double total2    = Int32.Parse(totala) / 23139 + Int32.Parse(totala) % 23139;
                    url = await payPalAPI.getRedirectUrlToPayPal(total2, "USD");

                    HttpContext.Session.SetString("qrcode", url);
                    return(Redirect("/Checkout"));

                    //adddatabase
                    var Address = Request.Form["Address"][0];
                    HttpContext.Session.SetString("Address", Address);
                    var City = Request.Form["City"][0];
                    HttpContext.Session.SetString("City", City);
                    var County = Request.Form["County"][0];
                    HttpContext.Session.SetString("County", County);
                    var Postcode = Request.Form["Postcode"][0];
                    HttpContext.Session.SetString("Postcode", Postcode);
                    var Odernote = Request.Form["Odernote"][0];
                    HttpContext.Session.SetString("Odernote", Odernote);
                    var total = Request.Form["total"][0];
                    HttpContext.Session.SetString("total", total);
                    var Id = Request.Form["Id"][0];
                    HttpContext.Session.SetString("Id", Id);
                    var count = Request.Form["count"][0];
                    HttpContext.Session.SetString("count", count);
                    return(Redirect(url));
                }
            }
            if (HttpContext.Session.GetString("success") == "success")
            {
                //adddatabase
                var Address  = HttpContext.Session.GetString("Address");
                var City     = HttpContext.Session.GetString("City");
                var County   = HttpContext.Session.GetString("County");
                var Postcode = HttpContext.Session.GetString("Postcode");
                var Odernote = HttpContext.Session.GetString("Odernote");
                var total    = HttpContext.Session.GetString("total");
                var Id       = HttpContext.Session.GetString("Id");
                var count    = HttpContext.Session.GetString("count");

                Invoice invoice = new Invoice();
                invoice.Customer_Id     = Int32.Parse(Id);
                invoice.customer        = _context.Customer.FirstOrDefault(s => s.Id == Int32.Parse(Id));
                invoice.TotalMoney      = total;
                invoice.Postcode        = Postcode;
                invoice.amount          = count;
                invoice.CustomerAddress = Address + "," + City + "," + County;
                invoice.CreateDay       = DateTime.Now;
                invoice.Ordernote       = Odernote;
                invoice.status          = "Đang giao hàng";
                _context.Invoice.Add(invoice);
                await _context.SaveChangesAsync();

                //detail
                InvoiceDetail invoiceDetail = new InvoiceDetail();
                var           jsoncart      = "";
                var           jsoncartcombo = "";
                List <Item>   cart          = SessionHelper.GetObjectFromJson <List <Item> >(HttpContext.Session, "cart");
                if (cart != null)
                {
                    jsoncart = JsonConvert.SerializeObject(cart);
                    invoiceDetail.Products = jsoncart;
                }
                List <ItemCombo> cartcombo = SessionCombo.GetObjectFromJsonCombo <List <ItemCombo> >(HttpContext.Session, "cartcombo");
                if (cartcombo != null)
                {
                    jsoncartcombo        = JsonConvert.SerializeObject(cartcombo);
                    invoiceDetail.Combos = jsoncartcombo;
                }
                var invoices = from s in _context.Invoice
                               select s;
                invoices = invoices.OrderByDescending(s => s.Id);
                Invoice a = invoices.First();
                invoiceDetail.Invoice_Id = a.Id;
                _context.InvoiceDetail.Add(invoiceDetail);
                await _context.SaveChangesAsync();

                //amount
                if (cart != null)
                {
                    foreach (var item in cart)
                    {
                        var products = from s in _context.Product
                                       select s;
                        products = products.Where(s => s.Id == item.Product.Id);
                        Product pro = products.FirstOrDefault();
                        pro.Amount = pro.Amount - item.Quantity;
                        await _context.SaveChangesAsync();

                        Removecart(item.Product.Id);
                    }
                }
                if (cartcombo != null)
                {
                    foreach (var item in cartcombo)
                    {
                        var cartcombos = from s in _context.Combo
                                         select s;
                        cartcombos = cartcombos.Where(s => s.Id == item.Combo.Id);
                        Combo cobo = cartcombos.First();
                        var   list = await _context.ComboProduct.Include("Products")
                                     .Where(s => s.Combo_Id == cobo.Id).ToListAsync();

                        foreach (var item1 in list)
                        {
                            item1.Products.Amount = item1.Products.Amount - item.Quantity;
                        }
                        await _context.SaveChangesAsync();

                        Removecombo(item.Combo.Id);
                    }
                }
            }
            if (HttpContext.Session.GetString("success") == "cancel")
            {
                return(Redirect("/Checkout"));
            }
            return(Redirect("/Checkout"));
        }