public bool VerifyNotify(HttpRequestBase request, out WePayReturnModel model)
{
bool verifyResult = false;
model = new WePayReturnModel();
string requestXml = GetRequestXmlData(request);
var dic = FromXml(requestXml);
string returnCode = GetValueFromDic <string>(dic, "return_code");
if (!string.IsNullOrEmpty(returnCode) && returnCode == "SUCCESS")//通讯成功
{
bool result = WePayNotifyValidation(dic);
if (result)
{
string transactionid = GetValueFromDic <string>(dic, "transaction_id");
if (!string.IsNullOrEmpty(transactionid))
{
string queryXml = BuildQueryRequest(transactionid, dic);
string queryResult = HTTPHelper.Post(WepayConfig.WEPAY_ORDERQUERY_URL, queryXml);
var queryReturnDic = FromXml(queryResult);
if (ValidatonQueryResult(queryReturnDic))//查询成功
{
verifyResult = true;
model.OutTradeNo = GetValueFromDic <string>(dic, "out_trade_no");
model.TotalFee = GetValueFromDic <decimal>(dic, "total_fee") / 100;
model.TradeNo = transactionid;
model.TradeStatus = GetValueFromDic <string>(dic, "result_code");
model.ReturnXml = BuildReturnXml("OK", "成功");
}
else
{
model.ReturnXml = BuildReturnXml("FAIL", "订单查询失败");
}
}
else
{
model.ReturnXml = BuildReturnXml("FAIL", "支付结果中微信订单号不存在");
}
}
else
{
model.ReturnXml = BuildReturnXml("FAIL", "签名失败");
}
}
else
{
string returnmsg;
dic.TryGetValue("return_msg", out returnmsg);
throw new Exception("异步通知错误:" + returnmsg);
}
return(verifyResult);
}