Ejemplo n.º 1
0
        //支付宝支付异步回调
        public ContentResult alinotifyurl()
        {
            SortedDictionary <string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                string out_trade_no = Request.Form["out_trade_no"];
                string notify_id    = Request.Form["notify_id"];
                string sign         = Request.Form["sign"];
                string trade_no     = Request.Form["trade_no"];
                string trade_status = Request.Form["trade_status"];
                LogUtils.LogInfo($"ali异步回调参数out_trade_no={out_trade_no}&notify_id={notify_id}&sign={sign}&trade_no={trade_no}&trade_status={trade_status}");
                bool verifyResult = new Notify().Verify(sPara, notify_id, sign);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码
                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表
                    //商户订单号
                    //支付宝交易号
                    //交易状态
                    string[] str = DesEncoderAndDecoder.Decrypt(out_trade_no).Split('#');
                    if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS")
                    {
                        _payCallBackService.Callback(str[0].ToInt32(), trade_no);
                    }
                    else
                    {
                        //支付失败
                        _orderService.UpdateStatus(str[0].ToInt32(), Model.enums.OrderStatusEm.支付失败);
                        return(Content(trade_status));
                    }

                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
                    return(Content("success")); //请不要修改或删除
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    return(Content("fail")); //请不要修改或删除
                }
            }
            else
            {
                return(Content("无通知参数"));
            }
        }
Ejemplo n.º 2
0
        private static WebUserContext GetWebUser()
        {
            WebUserContext webContext = null;

            try
            {
                string key = SessionCookieUtility.GetCookie(Constant.WebCookieKey).ToString();
                if (key.IsNotEmpty())
                {
                    webContext = DesEncoderAndDecoder.Decrypt(key).Deserialize <WebUserContext>();
                }
            }
            catch (Exception ex)
            {
                LogUtils.LogError("UserContext.GetWebUser", ex);
            }
            return(webContext);
        }
Ejemplo n.º 3
0
        //支付宝支付异步回调
        public ActionResult alireturnurl()
        {
            int    id        = 0;
            string returnmsg = string.Empty;
            SortedDictionary <string, string> sPara = GetRequestGet();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                string out_trade_no = Request.Form["out_trade_no"];
                string notify_id    = Request.Form["notify_id"];
                string sign         = Request.Form["sign"];
                string trade_no     = Request.Form["trade_no"];     //支付宝交易号
                string trade_status = Request.Form["trade_status"]; //交易状态
                LogUtils.LogInfo($"ali同步回调参数out_trade_no={out_trade_no}&notify_id={notify_id}&sign={sign}&trade_no={trade_no}&trade_status={trade_status}");
                bool verifyResult = new Notify().Verify(sPara, notify_id, sign);
                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码

                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
                    if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序
                        //更新订单信息
                        string[] str = DesEncoderAndDecoder.Decrypt(out_trade_no).Split('#');
                        _payCallBackService.Callback(str[0].ToInt32(), trade_no);
                    }
                    //打印页面
                    else
                    {
                        returnmsg = $"trade_status{trade_status}";
                    }
                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
            }
            return(RedirectToAction("paysuccess", "playerpay", new { area = "player", orderId = id }));
        }