用的是官方给的.net版demo。
支付能成功。前台也能返回get_brand_wcpay_request:ok
回调页面已经设置过了,外网可以直接访问。
public const string NOTIFY_URL = “http://服务器域名/example/ResultNotifyPage.aspx”;
ResultNotifyPage.aspx后台代码如下
支付能成功。前台也能返回get_brand_wcpay_request:ok
回调页面已经设置过了,外网可以直接访问。
public const string NOTIFY_URL = “http://服务器域名/example/ResultNotifyPage.aspx”;
ResultNotifyPage.aspx后台代码如下
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; using System.Xml.Linq; using System.IO; using System.Net; using DingCanBLL; public partial class example_ResultNotifyPage : System.Web.UI.Page { OrderBLL oBLL = new OrderBLL(); protected void Page_Load(object sender, EventArgs e) { string postStr = ""; /// <summary> /// 微信支付回调 /// </summary> /// <param name="xml"></param> if (Request.HttpMethod.ToLower() == "post") { Stream s = System.Web.HttpContext.Current.Request.InputStream; byte[] b = new byte[s.Length]; s.Read(b, 0, (int)s.Length); postStr = Encoding.UTF8.GetString(b); if (!string.IsNullOrEmpty(postStr)) { //封装请求类 var res = XDocument.Parse(postStr); if (res.Element("xml").Element("return_code").Value == "SUCCESS") { WriteTxt(string.Format(@"商户订单号:{0},订单状态:{1},金额:{2},时间:{3},openid:{4}", res.Element("xml").Element("out_trade_no").Value, res.Element("xml").Element("result_code").Value, res.Element("xml").Element("total_fee").Value, res.Element("xml").Element("time_end").Value, res.Element("xml").Element("openid").Value )); //保存订单信息,并返回微信应答 Response.Write(string.Format(@"<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml>")); //////////////////////////////////////////处理订单业务/////////////////////////////////// string orderid = Request.Cookies["orderid"].Value; bool bol = oBLL.UpdateOrderState("2", orderid); if (bol) { Response.Redirect("../AllOrder.aspx?sta=2"); } else { Response.Write("<span style="color:#00CD00;font-size:20px">订单状态更新失败。</span><br/>"); } ///////////////////////////////////////////////////////////////////////////////////////////// } else { WriteTxt(res.ToString()); Response.Write(string.Format(@"<xml> <return_code><![CDATA[{0}]]></return_code> <return_msg><![CDATA[{1}]]></return_msg> </xml>", "FAIL", res.Element("xml").Element("return_msg").Value)); } } } } /// <summary> /// 记录bug,以便调试 /// </summary> /// <returns></returns> public bool WriteTxt(string str) { try { FileStream fs = new FileStream(Server.MapPath("success.txt"), FileMode.Append); StreamWriter sw = new StreamWriter(fs); //开始写入 sw.WriteLine(""); sw.WriteLine("--" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "--"); sw.WriteLine(""); sw.WriteLine(str); //清空缓冲区 sw.Flush(); //关闭流 sw.Close(); fs.Close(); } catch (Exception) { return false; } return true; } }
解决方案
60
你先看下你回调页面接口地址能否设置的正确,看一下这个接口能否收到微信发来的请求,假如能收到,可能是你处理微信发来的xml数据处理的不对。假如连请求都收不到,就说明你回调地址写的就有问题,微信的请求根本没发到你这个接口上。先试着一步一步解决问题