コード例 #1
0
        public ActionResult FinalizePayment(int pId)
        {
            CheckOrderResult result = new CheckOrderResult();
            var payment             = _posService.GetPaymentInfo(pId);

            var orderId = _orchardServices.WorkContext.HttpContext.Request["OrderId"];

            if (string.IsNullOrWhiteSpace(orderId))
            {
                result.Success      = false;
                result.MessageError = "Order id cannot be empty";
            }
            else
            {
                result = _PayPalService.VerifyOrderIdPayPal(orderId);
            }

            _posService.EndPayment(pId, result.Success, result.MessageError, result.Info, orderId);
            if (!result.Success)
            {
                Logger.Error("Error on payment for order {0} Error: {1}", payment.ContentItemId, result.MessageError);
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, result.MessageError));
            }

            return(new HttpStatusCodeResult(HttpStatusCode.OK));
        }
コード例 #2
0
        public ActionResult ErrorPay(int pId)
        {
            // this controller manage only response negative.
            // is called into action onError manage from javascript PayPal
            CheckOrderResult result = new CheckOrderResult();

            result.Success      = false;
            result.MessageError = string.Format("Something went wrong during the payment");

            var payment = _posService.GetPaymentInfo(pId);

            _posService.EndPayment(payment.Id, result.Success, result.MessageError, result.Info);

            Logger.Error("Error on payment for order {0} Error: {1}", payment.ContentItemId, result.MessageError);

            return(new HttpStatusCodeResult(HttpStatusCode.OK));
        }
コード例 #3
0
        public CheckOrderResult VerifyOrderIdPayPal(string oid)
        {
            var checkResult = new CheckOrderResult();

            var config = _orchardServices.WorkContext.CurrentSite.As <PayPalSiteSettingsPart>();

            if (string.IsNullOrWhiteSpace(config.SecretId) || string.IsNullOrWhiteSpace(config.ClientId))
            {
                checkResult.MessageError = "Config is missing";
                checkResult.Success      = false;
            }
            else
            {
                try {
                    var url = "https://api.sandbox.paypal.com/v2/checkout/orders/" + oid;

                    HttpWebRequest  request;
                    HttpWebResponse response;

                    request             = (HttpWebRequest)WebRequest.Create(url);
                    request.ContentType = "application/json; charset=utf-8";
                    request.Method      = "GET";

                    var byteArr = Encoding.ASCII.GetBytes(string.Format("{0}:{1}", config.ClientId, config.SecretId));

                    String encoded = Convert.ToBase64String(byteArr);
                    request.Headers.Add("Authorization", "Basic " + encoded);

                    response = (HttpWebResponse)request.GetResponse();
                    using (var streamReader = new StreamReader(response.GetResponseStream())) {
                        var stremReader = streamReader.ReadToEnd();
                        if (streamReader != null)
                        {
                            var json = JObject.Parse(stremReader);
                            var id   = json["id"] == null ? string.Empty : json["id"].ToString();
                            if (id.Trim() == oid.Trim() && json["status"].ToString() == "COMPLETED")
                            {
                                checkResult.Success = true;
                            }
                            else
                            {
                                checkResult.Success = false;
                                if (id.Trim() != oid.Trim())
                                {
                                    checkResult.MessageError = string.Format("Order id sent ({0}) does not match order verification id ({1})", oid.Trim(), id.Trim());
                                }

                                if (json["status"].ToString() != "COMPLETED")
                                {
                                    checkResult.MessageError += string.Format("Status of order is not completed : {0}", json["status"].ToString());
                                }
                            }
                            checkResult.Info = stremReader;
                        }
                    }
                }
                catch (WebException e) {
                    checkResult.Success      = false;
                    checkResult.MessageError = e.Message;
                }
                catch (Exception ex) {
                    checkResult.Success      = false;
                    checkResult.MessageError = ex.Message;
                }
            }
            return(checkResult);
        }