public override BaseResult VerifyCallBack(HttpRequest request) { var mwItem = new MwAlipayResult() { State = false }; var sPara = GetRequestGet(request); var isNotify = (request.HttpMethod.ToLower() == "post"); var sign = sPara["sign"]; if (sPara.Count > 0) { var mySign = (isNotify ? Common.Utils.BuildNotifyParas(sPara, Config.GetKey(), Config.Charset)["sign"] : Common.Utils.BuildParas(sPara, Config.GetKey(), Config.Charset)["sign"]); if (mySign == sign) { if (!isNotify) { mwItem.TradeNum = sPara["out_trade_no"]; mwItem.trade_no = sPara["trade_no"]; mwItem.State = sPara["result"] == "success"; } else { var xml = new Function.XmlDoc(sPara["notify_data"]); //验证是否为支付宝发起的请求 string notify_id = xml.GetNode("/notify/notify_id"); if (GetResponseTxt(notify_id) != "true") { mwItem.State = false; mwItem.ErrMsg = "非支付宝发起请求"; return(mwItem); } string tradeStatus = xml.GetNode("notify/trade_status"); if (tradeStatus != Config.TRADEFINISHED && tradeStatus != Config.TRADESUCCESS) { mwItem.State = false; mwItem.ErrMsg = "交易状态:" + tradeStatus; return(mwItem); } mwItem.Amount = Convert.ToDecimal(xml.GetNode("notify/total_fee")); mwItem.TradeNum = xml.GetNode("notify/out_trade_no"); mwItem.trade_no = xml.GetNode("notify/trade_no"); mwItem.State = true; } } } return(mwItem); }
public override BaseResult VerifyCallBack(HttpRequest request) { var mwItem = new MwAlipayResult() {State = false}; var sPara = GetRequestGet(request); var isNotify = (request.HttpMethod.ToLower() == "post"); var sign = sPara["sign"]; if (sPara.Count > 0) { var mySign = (isNotify ? Common.Utils.BuildNotifyParas(sPara, Config.GetKey(), Config.Charset)["sign"] : Common.Utils.BuildParas(sPara, Config.GetKey(), Config.Charset)["sign"]); if (mySign == sign) { if (!isNotify) { mwItem.TradeNum = sPara["out_trade_no"]; mwItem.trade_no = sPara["trade_no"]; mwItem.State = sPara["result"] == "success"; } else { var xml = new Function.XmlDoc(sPara["notify_data"]); //验证是否为支付宝发起的请求 string notify_id = xml.GetNode("/notify/notify_id"); if(GetResponseTxt(notify_id) != "true") { mwItem.State = false; mwItem.ErrMsg = "非支付宝发起请求"; return mwItem; } string tradeStatus = xml.GetNode("notify/trade_status"); if (tradeStatus != Config.TRADEFINISHED && tradeStatus != Config.TRADESUCCESS) { mwItem.State = false; mwItem.ErrMsg = "交易状态:" + tradeStatus; return mwItem; } mwItem.Amount = Convert.ToDecimal(xml.GetNode("notify/total_fee")); mwItem.TradeNum = xml.GetNode("notify/out_trade_no"); mwItem.trade_no = xml.GetNode("notify/trade_no"); mwItem.State = true; } } } return mwItem; }