Exemplo n.º 1
0
        public HttpResponseMessage RefundNotifyUrl()
        {
            SortedDictionary <string, string> sPara = GetRequestPost();
            var ret = "fail";

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                XuHos.BLL.OrderService service = new OrderService(CurrentOperatorUserID);
                var Request = System.Web.HttpContext.Current.Request;
                //批次号
                string batch_no = Request.Form["batch_no"];

                //批量退款数据中转账成功的笔数
                string success_num = Request.Form["success_num"];
                //批量退款数据中的详细信息
                string result_details = Request.Form["result_details"];
                //通知编号
                string notify_id = Request.Form["notify_id"];
                //签名
                string sign = Request.Form["sign"];

                var order = service.GetOrder(batch_no);

                var alipay = new WebPay(order.SellerID);

                if (alipay.VerifySign(sPara, notify_id, sign))//验证成功
                {
                    if (service.RefundCompleted(order.OrderNo, EnumPayType.AliPay))
                    {
                        ret = "success";
                    }
                }
            }



            //返回处理结果
            return(new HttpResponseMessage
            {
                Content = new StringContent(ret, Encoding.GetEncoding("UTF-8"), "text/plain")
            });
        }
Exemplo n.º 2
0
        public IHttpActionResult ReturnUrl()
        {
            var payConfig = SysConfigService.Get <XuHos.Common.Config.Sections.Pay>();

            try
            {
                var Request = System.Web.HttpContext.Current.Request;
                var sPara   = GetRequestGet();


                if (sPara.Count > 0)//判断是否有带返回参数
                {
                    string seller_id = Request.QueryString["seller_id"];
                    //商户订单号
                    string out_trade_no = Request.QueryString["out_trade_no"];

                    //支付宝交易号
                    string trade_no = Request.QueryString["trade_no"];

                    //交易状态
                    string trade_status = Request.QueryString["trade_status"];

                    //总金额
                    string total_fee = Request["total_fee"];
                    //通知编号
                    string notify_id = Request.QueryString["notify_id"];
                    //签名
                    string sign   = Request.QueryString["sign"];
                    var    alipay = new WebPay(seller_id);
                    //验证成功
                    if ((trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS"))
                    {
                        if (alipay.VerifySign(sPara, notify_id, sign))
                        {
                            XuHos.BLL.OrderService service = new OrderService(CurrentOperatorUserID);

                            var order = service.GetOrder(out_trade_no);

                            if (order != null)
                            {
                                if (order.TotalFee == decimal.Parse(total_fee))
                                {
                                    if (service.PayCompleted(out_trade_no, trade_no, XuHos.Common.Enum.EnumPayType.AliPay, seller_id))
                                    {
                                        return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/PaySuccessfully?OrderNo={out_trade_no}"));
                                    }
                                    else
                                    {
                                        return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=系统错误,更新订单状态失败"));
                                    }
                                }
                                else
                                {
                                    return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=参数非法,参数“totalFee”或 “seller_id”不正确"));
                                }
                            }
                            else
                            {
                                return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=参数非法,订单不存在"));
                            }
                        }
                        else
                        {
                            return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/PaySuccessfully?OrderNo={out_trade_no}"));
                        }
                    }
                }
                return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message=参数非法,不是合法的支付请求"));
            }
            catch (Exception E)
            {
                return(Redirect($"{payConfig.ReturnUrlPrefix}/Trade/Order/Error?message={E.Message}"));
            }
        }
Exemplo n.º 3
0
        public HttpResponseMessage NotifyUrl()
        {
            var Request = System.Web.HttpContext.Current.Request;
            var content = "";

            try
            {
                LogHelper.WriteDebug("Cashier/AliPay/NotifyUrl", Request.Params.ToJson());
                SortedDictionary <string, string> sPara = GetRequestPost();

                if (sPara.Count > 0)//判断是否有带返回参数
                {
                    //通知编号
                    string seller_id = Request.Form["seller_id"];
                    //商户订单号
                    string out_trade_no = Request.Form["out_trade_no"];
                    //支付宝交易号
                    string trade_no = Request.Form["trade_no"];
                    //交易状态
                    string trade_status = Request.Form["trade_status"];
                    //总金额
                    string total_fee = Request["total_fee"];
                    //通知编号
                    string notify_id = Request.Form["notify_id"];

                    //签名
                    string sign = Request.Form["sign"];

                    var alipay = new WebPay(seller_id);

                    if ((trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS") && alipay.VerifySign(sPara, notify_id, sign))//验证成功
                    {
                        using (XuHos.EventBus.MQChannel mqChanne = new EventBus.MQChannel())
                        {
                            if (mqChanne.Publish <EventBus.Events.OrderPayNotifyEvent>(new EventBus.Events.OrderPayNotifyEvent()
                            {
                                OrderNo = out_trade_no,
                                TradeNo = trade_no,
                                PayType = EnumPayType.AliPay,
                                SelllerID = seller_id
                            }))
                            {
                                content = "success";
                            }
                        }
                    }
                }

                content = "fail";
            }
            catch (Exception E)
            {
                LogHelper.WriteError(E);
                content = "fail";
            }

            //返回处理结果
            return(new HttpResponseMessage
            {
                Content = new StringContent(content, Encoding.GetEncoding("UTF-8"), "text/plain")
            });
        }