Esempio n. 1
0
        public ActionResult ReturnPage()
        {
            string token   = Request["token"];
            string payerID = Request["PayerID"];

            PayPalExpressCheckout pp = new PayPalExpressCheckout(API_UserName, API_Password, API_Signature, isTestingMode);
            //get payment info
            NameValueCollection res = pp.GetExpressCheckoutDetails(token);
            string ack = res.GetValues("ACK").First().ToUpper();

            if (ack != "SUCCESS" && ack != "SUCCESSWITHWARNING")
            {
                ViewBag.status = "paypal failed";
                ViewBag.result = res;
                return(View("ReturnPage"));
            }

            string finalPaymentAmount = res.GetValues("PAYMENTREQUEST_0_AMT").First();
            string paymentType        = "Sale";
            string currencyCodeType   = res.GetValues("CURRENCYCODE").First();
            string customField        = res.GetValues("PAYMENTREQUEST_0_CUSTOM").First();
            string payerEmail         = res.GetValues("EMAIL").First();
            string payerFirstName     = res.GetValues("FIRSTNAME").First();
            string payerLastName      = res.GetValues("LASTNAME").First();
            string country            = res.GetValues("COUNTRYCODE").First();

            List <PayPalExpressCheckout.PayPalItem> items = new List <PayPalExpressCheckout.PayPalItem>();
            List <string> itemsNameList = new List <string>();
            int           itemNumber    = 0;

            while (res.GetValues("L_PAYMENTREQUEST_0_NAME" + itemNumber.ToString()) != null)
            {
                PayPalExpressCheckout.PayPalItem item = new PayPalExpressCheckout.PayPalItem();
                item.name = res.GetValues("L_PAYMENTREQUEST_0_NAME" + itemNumber.ToString()).First();
                item.amt  = res.GetValues("L_PAYMENTREQUEST_0_AMT" + itemNumber.ToString()).First();
                item.qty  = res.GetValues("L_PAYMENTREQUEST_0_QTY" + itemNumber.ToString()).First();
                items.Add(item);
                itemsNameList.Add(item.name);
                itemNumber++;
            }

            NameValueCollection result = pp.ConfirmPayment(token, paymentType, currencyCodeType, payerID, finalPaymentAmount, items, customField, Request.ServerVariables["SERVER_NAME"], itemCategory);

            ack = result.GetValues("ACK").First().ToUpper();
            if (ack == "SUCCESS" || ack == "SUCCESSWITHWARNING")
            {
                ViewBag.status = "successfully";
                string transactionId = result.GetValues("PAYMENTINFO_0_TRANSACTIONID").First();
                string currency      = result.GetValues("PAYMENTINFO_0_CURRENCYCODE").First();
                string orderTime     = result.GetValues("PAYMENTINFO_0_ORDERTIME").First();
                string amt           = result.GetValues("PAYMENTINFO_0_AMT").First();
                string feeAmt        = result.GetValues("PAYMENTINFO_0_FEEAMT").First();
                string taxAmt        = result.GetValues("PAYMENTINFO_0_TAXAMT").First();
                string paymentStatus = result.GetValues("PAYMENTINFO_0_PAYMENTSTATUS").First();
                string pendingReason = result.GetValues("PAYMENTINFO_0_PENDINGREASON").First();

                ViewBag.transactionId = transactionId;
                ViewBag.amt           = amt;
                ViewBag.currency      = currency;
            }

            return(View());
        }