微信支付回调页面

通知 URL是 4.1 节中提交的参数 notify_url ,支付完成后,微信 会把相关和用户信息发送到该URL,商户需要接收处理信息。

复制代码
 //支付回调页面
        public ActionResult notice_url()
        {
            string resultFromWx = getPostStr();
            //设置支付参数
            RequestHandler paySignReqHandler = new RequestHandler(null);
            WriteLog(" 微支付notice resultFromWx=" + resultFromWx);
            var res = XDocument.Parse(resultFromWx);
            //通信成功
            if (res.Element("xml").Element("return_code").Value == "SUCCESS")
            {
                if (res.Element("xml").Element("result_code").Value == "SUCCESS")
                {
                    //交易成功
                    paySignReqHandler.SetParameter("return_code", "SUCCESS");
                    paySignReqHandler.SetParameter("return_msg", "OK");

                    string ordecode = res.Element("xml").Element("out_trade_no").Value;
                    BLL.orders Bll = new BLL.orders();
                    try
                    {
                        if (Bll.Update(ordecode ))
                        {
                           WriteLog(" 微支付交易成功=" + ordecode);
                        }
                        else
                        {
                           WriteLog(" 微支付交易失败=" + ordecode);
                        }
                    }
                    catch (Exception ex)
                    {
                        WriteLog(ex," 微支付交易异常=" + ordecode);
                    }
                }
                else
                {
                    paySignReqHandler.SetParameter("return_code", "FAIL");
                    paySignReqHandler.SetParameter("return_msg", "交易失败");
                }
            }
            else
            {
                paySignReqHandler.SetParameter("return_code", "FAIL");
                paySignReqHandler.SetParameter("return_msg", "签名失败");
            }
            string data = paySignReqHandler.ParseXML();
            var result = TenPayV3.Unifiedorder(data);
            WriteLog(" 微支付notice result=" + result);

            return View();
        }
复制代码
注意:


因此接收到成功支付后需要返回代码中红色的部分来提醒微信服务器已处理,否则会不断收到微信服务器的反馈。


getPostStr()方法:
复制代码
 //获得Post过来的数据
        public string getPostStr()
        {
            Int32 intLen = Convert.ToInt32(Request.InputStream.Length);
            byte[] b = new byte[intLen];
            Request.InputStream.Read(b, 0, intLen);
            return System.Text.Encoding.UTF8.GetString(b);
        }
复制代码

 现在前后台都打通了,主要还是要耐心调试,祝君好运~

你可能感兴趣的:(微信公众平台,C#)