public void RechargePayResult() { //接收从微信后台POST过来的数据 System.IO.Stream s = Request.InputStream; int count = 0; byte[] buffer = new byte[1024]; StringBuilder builder = new StringBuilder(); while ((count = s.Read(buffer, 0, 1024)) > 0) { builder.Append(Encoding.UTF8.GetString(buffer, 0, count)); } s.Flush(); s.Close(); s.Dispose(); //转换数据格式并验证签名 WxPayData data = new WxPayData(); try { data.FromXml(builder.ToString()); Member member = _memberBLL.GetMemberByOpenId(data.GetValue("openid").ToString()); member.Assets += double.Parse(data.GetValue("total_fee").ToString()); if (_memberBLL.Update(member)) { Recharge recharge = new Recharge(); recharge.Id = Guid.NewGuid(); recharge.MemberId = member.Id; recharge.Amount = double.Parse(data.GetValue("total_fee").ToString()); recharge.CreatedTime = DateTime.Now; recharge.DeletedTime = DateTime.MinValue.AddHours(8); recharge.IsDeleted = false; recharge.Payway = 0; if (_recharegeBLL.Add(recharge)) { LogHelper.Log.Write("充值成功"); // 添加充值积分记录 if (AddRechargeCredit(member, double.Parse(data.GetValue("total_fee").ToString()) / 100)) { // 异步判断是否够积分升级vip UpGradeDel del = new UpGradeDel(UpGradeVIP); IAsyncResult ar = del.BeginInvoke(member.Id, CallBackMethod, null); } } else { LogHelper.Log.Write("充值失败"); } } else { LogHelper.Log.Write("更新余额失败"); } } catch (WxPayException ex) { LogHelper.Log.Write(ex.Message); LogHelper.Log.Write(ex.StackTrace); //若签名错误,则立即返回结果给微信支付后台 WxPayData res = new WxPayData(); res.SetValue("return_code", "FAIL"); res.SetValue("return_msg", ex.Message); Log.Error(this.GetType().ToString(), "Sign check error : " + res.ToXml()); Response.Write(res.ToXml()); Response.End(); } Log.Info(this.GetType().ToString(), "Check sign success"); WxPayData successData = new WxPayData(); successData.SetValue("return_code", "SUCCESS"); successData.SetValue("return_msg", "OK"); Response.Write(successData.ToXml()); Response.End(); }