Ejemplo n.º 1
0
        /// <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));
            }
        }
Ejemplo n.º 2
0
        /// <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));
        }