/// <summary> /// 支付结果通知 /// </summary> /// <param name="inputStream"></param> /// <param name="ReturnData"></param> /// <returns></returns> public static WxPayQueryResult ReceiveNofifyData(Stream inputStream, out WxPayData ReturnData) { WxPayData notifyData = GetNotifyData(inputStream); //检查支付结果中transaction_id是否存在 if (!notifyData.IsSet("transaction_id")) { //若transaction_id不存在,则立即返回结果给微信支付后台 ReturnData = new WxPayData(); ReturnData.SetValue("return_code", "FAIL"); ReturnData.SetValue("return_msg", "支付结果中微信订单号不存在"); WxPayQueryResult result = new WxPayQueryResult(notifyData); return(result); } else { string transaction_id = notifyData.GetValue("transaction_id").ToString(); //查询订单,判断订单真实性 WxPayQueryResult result = QueryOrder(transaction_id: transaction_id); if (String.IsNullOrEmpty(result.transaction_id)) { //若订单查询失败,则立即返回结果给微信支付后台 ReturnData = new WxPayData(); ReturnData.SetValue("return_code", "FAIL"); ReturnData.SetValue("return_msg", "订单查询失败"); } //查询订单成功 else { ReturnData = new WxPayData(); ReturnData.SetValue("return_code", "SUCCESS"); ReturnData.SetValue("return_msg", "OK"); } return(result); } }
/// <summary> /// 查询订单 /// </summary> /// <param name="transaction_id"></param> /// /// <param name="transaction_id"></param> /// <returns></returns> public static WxPayQueryResult QueryOrder(string transaction_id = null, string out_trade_no = null) { WxPayData req = new WxPayData(); if (!String.IsNullOrEmpty(transaction_id)) { req.SetValue("transaction_id", transaction_id); } if (!String.IsNullOrEmpty(out_trade_no)) { req.SetValue("out_trade_no", out_trade_no); } WxPayData _res = PayApi.OrderQuery(req); WxPayQueryResult result = new WxPayQueryResult(_res); /* * res.GetValue("return_code").ToString() == "SUCCESS" && * res.GetValue("result_code").ToString() == "SUCCESS" */ return(result); }