/// <summary> /// 微信支付 /// </summary> /// <param name="id">订单号</param> /// <returns></returns> public ActionResult SetTopPay(int id, int set_top, decimal money) { string msg = ""; string orderNo = ""; string type = set_top == 1 ? "分类置顶" : "全站置顶"; var authenticationUser = BLLAuthentication.GetAuthenticationUser(); bool result = BLLNewsOrder.Add(new ht_news_order() { news_id = id, type = type, value = set_top.ToString(), money = money, pay = "微信", add_userid = authenticationUser.id }, out msg, out orderNo); if (!result) { return(JsonResult(Model.Enum.APIErrCode.OperateFail, msg)); } string Ip = Request.UserHostAddress; string openId = BLLUser.GetLoginUserInfo().openid; string notiUrl = Request.Url.Scheme + "://" + Request.Url.Authority + "/WX/PayNotify";//通知地址 bool isRequestSuccess = false; var payRequest = BLLWeixin.WXPay(orderNo, money, openId, Ip, notiUrl, out isRequestSuccess, string.Format("{1}订单号:{0}", orderNo, type)); if (isRequestSuccess) { return(JsonResult(Model.Enum.APIErrCode.Success, "OK", payRequest)); } else { return(JsonResult(Model.Enum.APIErrCode.OperateFail)); } }
/// <summary> /// 微信支付通知 /// </summary> /// <returns></returns> public ActionResult PayNotify() { string successXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>"; string failXml = "<xml><return_code><![CDATA[FAIL]]></return_code></xml>"; try { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Request.InputStream); //全部参数 SortedDictionary <string, string> parametersAll = new SortedDictionary <string, string>(); foreach (XmlElement item in xmlDoc.DocumentElement.ChildNodes) { string key = item.Name; string value = item.InnerText; if ((!string.IsNullOrEmpty(key)) && (!string.IsNullOrEmpty(value))) { parametersAll.Add(key, value); } } xmlDoc.Save(string.Format("E:\\WXPay\\{0}_Notify.xml", parametersAll["out_trade_no"]));//写入日志 if (MicroMessenger.CommonUtil.VerifySign(parametersAll, BLLConfig.Get("wx_mchsecret"))) { string orderNo = parametersAll["out_trade_no"].ToString(); if (orderNo.StartsWith("T")) { if (BLLNewsOrder.WXPaySuccess(orderNo, parametersAll["transaction_id"])) { return(Content(successXml)); } } else if (BLLNews.WXPaySuccess(orderNo, parametersAll["transaction_id"])) { return(Content(successXml)); } } } catch (Exception ex) { using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"E:\WXPay\Error.txt", true, Encoding.GetEncoding("UTF-8"))) { sw.WriteLine(ex.ToString()); } } return(Content(failXml)); }