微信公众号支付成功后如何把订单信息保存到数据库中

string postStr = "";
///
/// 微信支付回调
///
///
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>"));
                }
                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));
                }

            }
        }

    我有一个支付回调页面,时支付成功后跳转到这个页面并保存数据吗?

自己调试一下不就知道了,可以设置个0.01的商品,自己支付调试,调试的时候记录一下日志。

发起订单就应该存到数据库了吧,显示未支付,支付成功根据回调改支付状态

支付成功是否需要跳转到支付回调页面?

订单信息应该是在微信支付的统一下单之前就创建好了的,
统一下单的时候需要传此条需要支付的订单的订单号和微信需要回调的接口(我们这边的接口),之后才进行支付。
在支付成功后,有js回调和接口回调,接口回调就是微信会访问我们在统一下单的时候,提供的接口,在这个接口中,微信会
将我们之前传的订单号返回,我们拿着这个订单号就可以更改订单的支付状态了!

if (res.Element("xml").Element("return_code").Value == "SUCCESS")
{
//下单成功返回
string repayId = res.Element("xml").Element("prepay_id").Value;
wxpayconfig = new wxHandleModel.wxPayconfig();
wxpayconfig = wxhand.GetwxPay(repayId);
}
也就是说我可以在回调页面拿到prepay_id这个参数?

发起订单就应该存到数据库了吧,显示未支付,支付成功根据回调改支付状态 赞同