首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

支付宝异步通知的有关问题,老是接收不到参数或者接收到是另一个订单号

2014-01-12 
支付宝异步通知的问题,老是接收不到参数或者接收到是另一个订单号支付宝异步通知的问题,老是接收不到参数

支付宝异步通知的问题,老是接收不到参数或者接收到是另一个订单号
支付宝异步通知的问题,老是接收不到参数或者接收到是另一个订单号,有大神能给个例子来看看么~~

 SortedDictionary<string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify = new Notify();
                bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码


                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                    //商户订单号

                    string out_trade_no = Request.Form["out_trade_no"];

                    //支付宝交易号

                    string trade_no = Request.Form["trade_no"];

                    //交易状态
                    string trade_status = Request.Form["trade_status"];
                    //买家ID
                   string payUserid = Request.QueryString["receive_name"];
                    //总价格
                    string price = Request.QueryString["price"];
                    int i=0;
                    int g = 0;
                    string orderNum = Common.StringPlus.ReplaceStrToSql(out_trade_no);
                    if (Request.Form["trade_status"] == "WAIT_BUYER_PAY")
                    {//该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款

                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        Response.Write("success");  //请不要修改或删除
                    }
                    else if (Request.Form["trade_status"] == "WAIT_SELLER_SEND_GOODS")
                    {//该判断示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货

                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                      


                       
                        Response.Write("success");  //请不要修改或删除
                    }
                    else if (Request.Form["trade_status"] == "WAIT_BUYER_CONFIRM_GOODS")
                    {//该判断表示卖家已经发了货,但买家还没有做确认收货的操作

                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序
                        //#region 付款成功后的操作
                        //string orderNum = Common.StringPlus.ReplaceStrToSql(out_trade_no);
                        //DataTable dt = bllOrderForm.GetList(" number in (" + orderNum + ")").Tables[0];//订单
                        //DataColumn dc = dt.Columns.Add("userName");
                        //DataColumn dc1 = dt.Columns.Add("alipay");

                        //foreach (DataRow row in dt.Rows)
                        //{
                        //    Model.pubuser modelUser = bllUser.GetModel(int.Parse(row["sellerid"].ToString()));

                        //    if (modelUser != null)
                        //    {
                        //        row["userName"] = modelUser.username;
                        //        row["alipay"] = modelUser.alipay;
                        //    }
                        //}

                        //DataTable dtContent = bllOrderContent.GetList(" number in (" + orderNum + ")").Tables[0];//订单明细

                        ////更新商品数量
                        //foreach (DataRow dr in dtContent.Rows)
                        //{
                        //    Model.pubGoods modelGoods = bllGoods.GetModel(int.Parse(dr["goodsid"].ToString()));

                        //    if (modelGoods != null)
                        //    {
                        //        dr["num"] = modelGoods.gcount + int.Parse(dr["num"].ToString());


                        //    }
                        //}

                        //Model.pubuser model = bllUser.GetModel(int.Parse(payUserid));
                        //string user = "";
                        //if (model != null)
                        //{
                        //    user = model.username + "|" + model.alipay;
                        //}
                        //bllOrderForm.PaySucess(user, dt, price, dtContent);
                        //#endregion
                        Response.Write("success");  //请不要修改或删除
                    }
                    else if (Request.Form["trade_status"] == "TRADE_FINISHED")
                    {//该判断表示买家已经确认收货,这笔交易完成

                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        Response.Write("success");  //请不要修改或删除
                    }
                    else
                    {
                        Response.Write("success");  //其他状态判断。
                    }

                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    Response.Write("fail");
                }
            }
            else
            {
                Response.Write("无通知参数");
            }


注释掉的就是我之前的处理,担保跟及时都有写的,问题是payUserid 一直没有值,要不传回来的是另一个订单号


[解决办法]
支付宝异步通知的有关问题,老是接收不到参数或者接收到是另一个订单号
POST ,GET的方法,取值的问题!!

热点排行