示例#1
0
        public ActionResult OrderPaypalAuthorized(string token, string PayerID)
        {
            PanierViewModel panier = (PanierViewModel)Session["Panier"];

            //Récupération des détails de l'appel Express Checkout
            GetExpressCheckoutDetailsResponse getDetailsResponse = paypalService.SendPayPalGetExpressCheckoutDetailsRequest(token);

            if (getDetailsResponse == null || getDetailsResponse.ResponseStatus != Core.Transcoder.PayPalMvc.Enums.ResponseType.Success)
            {
                string errorMessage = (getDetailsResponse == null) ? "Null Transaction Response" : getDetailsResponse.ErrorToString;
                Debug.WriteLine("Error initiating PayPal GetExpressCheckoutDetails transaction. Error: " + errorMessage);
                return(RedirectToAction("Panier", panier));
            }

            //Paiement de la commande
            DoExpressCheckoutPaymentResponse doCheckoutRepsonse = paypalService.SendPayPalDoExpressCheckoutPaymentRequest(panier, token, PayerID);

            if (doCheckoutRepsonse == null || doCheckoutRepsonse.ResponseStatus != Core.Transcoder.PayPalMvc.Enums.ResponseType.Success)
            {
                if (doCheckoutRepsonse != null && doCheckoutRepsonse.L_ERRORCODE0 == "10486")
                {
                    Debug.WriteLine("10486 error (bad funding method - typically an invalid credit card)");
                    return(Redirect(string.Format(Configuration.Current.PayPalRedirectUrl, token)));
                }
                string errorMessage = (doCheckoutRepsonse == null) ? "Null Transaction Response" : doCheckoutRepsonse.ErrorToString;
                Debug.WriteLine("Error initiating PayPal DoExpressCheckoutPayment transaction. Error: " + errorMessage);
                return(RedirectToAction("Panier", panier));
            }

            if (doCheckoutRepsonse.PaymentStatus == PaymentStatus.Completed)
            {
                taskService.SetAllTasksPaidForTransaction(panier.TransactionId);
                MailUtil.SendMail(Core.Transcoder.Service.Enums.StringManager.PAIEMENT_ACCEPTE, null, panier);

                return(RedirectToAction("OrderPaidConfirm"));
            }
            else
            {
                Debug.WriteLine($"Error taking PayPal payment. Error: " + doCheckoutRepsonse.ErrorToString +
                                " - Payment Error: " + doCheckoutRepsonse.PaymentErrorToString);
                TempData["TransactionResult"] = doCheckoutRepsonse.PAYMENTREQUEST_0_LONGMESSAGE;
                return(RedirectToAction("Panier", panier));
            }
        }