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 result = new MAlipayResult(); var coll = (request.HttpMethod.ToLower() == "post" ? request.Form : request.QueryString); string notifyData = coll["notify_data"], sign = coll["sign"]; if (string.IsNullOrEmpty(notifyData) || string.IsNullOrEmpty(sign)) { result.State = false; result.ErrMsg = "notify_data或sign参数为空"; return(result); } var verify = Function.Verify("notify_data=" + notifyData, sign, Config.PublicKey); if (!verify) { result.State = false; result.ErrMsg = "签名验证失败"; return(result); } var xml = new Function.XmlDoc(notifyData); string tradeStatus = xml.GetNode("notify/trade_status"); if (tradeStatus != Config.TRADEFINISHED && tradeStatus != Config.TRADESUCCESS) { result.State = false; result.ErrMsg = "交易状态:" + tradeStatus; return(result); } result.State = true; result.Amount = Convert.ToDecimal(xml.GetNode("notify/total_fee")); result.TradeNum = xml.GetNode("notify/out_trade_no"); result.TradeNo = xml.GetNode("notify/trade_no"); result.TradeStatus = tradeStatus; result.BuyerEmail = xml.GetNode("notify/buyer_email"); return(result); }