支付宝异步通知的问题,老是接收不到参数或者接收到是另一个订单号
支付宝异步通知的问题,老是接收不到参数或者接收到是另一个订单号,有大神能给个例子来看看么~~
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的方法,取值的问题!!