Beispiel #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string   orderId  = this.Request["OrderId"];
            OrderPay orderPay = bllOrder.GetOrderPay(orderId);

            if (orderPay != null && orderPay.Status == 0)
            {
                PayConfig payConfig = bllPay.GetPayConfig();
                PayString = bllPay.GetBrandWcPayRequest(orderId, orderPay.Total_Fee, payConfig.WXAppId, payConfig.WXMCH_ID, payConfig.WXPartnerKey, bllOrder.GetCurrentUserInfo().WXOpenId, this.Request.UserHostAddress, string.Format("http://{0}/Admin/DoPay/DoPayWxNotify.aspx", this.Request.Url.Host), "易劳积分充值" + orderPay.Total_Fee + "元");
            }
        }
Beispiel #2
0
        public void BuildOrder(HttpContext context, int payType, UserInfo user)
        {
            decimal amount = Convert.ToDecimal(context.Request["amount"]);

            if (amount <= 0)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "金额必须大于0";
                bll.ContextResponse(context, apiResp);
                return;
            }
            string    websiteOwner = bll.WebsiteOwner;
            PayConfig payConfig    = bllPay.GetPayConfig();

            if (payType == 1 && !bllPay.IsAliPay(payConfig))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户支付宝支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            else if (payType == 2 && !bllPay.IsJDPay(payConfig))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户京东支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            OrderPay orderPay = new OrderPay();

            orderPay.OrderId      = bll.GetGUID(TransacType.PayRegisterOrder);
            orderPay.InsertDate   = DateTime.Now;
            orderPay.Subject      = "支付充值";
            orderPay.Total_Fee    = amount;
            orderPay.Type         = "4";
            orderPay.WebsiteOwner = websiteOwner;
            orderPay.UserId       = user.UserID;
            orderPay.PayType      = payType;
            if (!bll.Add(orderPay))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "生成支付订单失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                pay_order_id = orderPay.OrderId
            };
            bllUser.ContextResponse(context, apiResp);
        }
Beispiel #3
0
        /// <summary>
        /// 查询付款状态
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private string GetWeixinTransferInfo(HttpContext context)
        {
            string orderDetailId = context.Request["order_detail_id"];

            if (string.IsNullOrEmpty(orderDetailId))
            {
                resp.errcode = 1;
                resp.errmsg  = "order_detail_id 参数不能为空";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            WXMallRefund model = bllMall.GetRefundInfoByOrderDetailId(int.Parse(orderDetailId));

            ZentCloud.BLLJIMP.Model.PayConfig payConfig = bllPay.GetPayConfig();
            bool isSuccess = bllPay.GetWeixinTransferInfo(model.OrderId, payConfig.WXAppId, payConfig.WXMCH_ID, payConfig.WXPartnerKey);

            return(ZentCloud.Common.JSONHelper.ObjectToJson(new
            {
                errcode = 0,
                is_pay_success = isSuccess,
            }));
        }
Beispiel #4
0
        public void ProcessRequest(HttpContext context)
        {
            PayConfig payConfig = bllPay.GetPayConfig();

            apiResp.result = new
            {
                is_wx_pay  = bllPay.IsWeixinPay(payConfig),
                is_ali_pay = bllPay.IsAliPay(payConfig),
                is_jd_pay  = bllPay.IsJDPay(payConfig)
            };
            apiResp.status = true;
            bllPay.ContextResponse(context, apiResp);
        }
Beispiel #5
0
        public void ProcessRequest(HttpContext context)
        {
            string orderId = context.Request["order_id"];

            if (string.IsNullOrEmpty(orderId))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "order_id必传";
                bll.ContextResponse(context, apiResp);
                return;
            }
            OrderPay  orderPay  = bllOrder.GetOrderPay(orderId);
            PayConfig payConfig = bllPay.GetPayConfig();

            if (payConfig == null || string.IsNullOrEmpty(payConfig.WXAppId) || string.IsNullOrEmpty(payConfig.WXMCH_ID) || string.IsNullOrEmpty(payConfig.WXPartnerKey))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户微信支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }

            string appId     = payConfig.WXAppId;                                                                             //微信AppId
            string mchId     = payConfig.WXMCH_ID;                                                                            //商户号
            string key       = payConfig.WXPartnerKey;                                                                        //api密钥
            string openId    = CurrentUserInfo.WXOpenId;                                                                      //openid
            string ip        = context.Request.UserHostAddress;                                                               //ip
            string notifyUrl = string.Format("http://{0}/WxPayNotify/SmsRechargeNotify.aspx", context.Request.Url.Authority); //支付充值通知地址
            string body      = "";                                                                                            //订单内容

            string payReqStr = bllPay.GetBrandWcPayRequest(orderPay.OrderId, orderPay.Total_Fee, appId, mchId, key, openId, ip, notifyUrl, body);

            BllPay.WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <BllPay.WXPayReq>(payReqStr);
            if (string.IsNullOrEmpty(payReqModel.paySign))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "构造支付信息失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                pay_req = payReqModel
            };
            bll.ContextResponse(context, apiResp);
        }
Beispiel #6
0
        private string PayConfig(HttpContext context)
        {
            PayConfig payConfig = bllPay.GetPayConfig();

            payConfig = bllPay.ConvertRequestToModel <PayConfig>(payConfig);
            if (bllPay.Update(payConfig))
            {
                resp.Status = 1;
                resp.Msg    = "提交成功";
            }
            else
            {
                resp.Status = -1;
                resp.Msg    = "提交失败";
            }
            return(Common.JSONHelper.ObjectToJson(resp));
        }
Beispiel #7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string cur_order_id = this.Request["order_id"];

            if (!bllPay.IsMobile)
            {
                errorMsg = "请用手机浏览器访问";
                return;
            }
            if (string.IsNullOrWhiteSpace(cur_order_id))
            {
                errorMsg = "订单号未找到";
                return;
            }
            orderPay = bllOrder.GetOrderPay(cur_order_id, websiteOwner: bllOrder.WebsiteOwner, payType: 1);
            if (orderPay == null)
            {
                errorMsg = "订单未找到";
                return;
            }
            if (orderPay.Status == 1)
            {
                errorMsg = "订单已经付款";
                //formString = "<div style=\"height:100%;color:red;font-size:24px;text-algin:center;\">订单已经付款</div>";
                return;
            }
            if (bllPay.IsWeiXinBrowser)
            {
                return;
            }

            try
            {
                PayConfig payConfig  = bllPay.GetPayConfig();
                string    baseUrl    = string.Format("http://{0}", this.Request.Url.Authority);
                string    notifyUrl  = baseUrl + "/Alipay/ShMemberNotifyUrl.aspx";
                string    formString = bllPay.GetAliPayRequestMobile(orderPay.OrderId, (double)orderPay.Total_Fee,
                                                                     payConfig.Seller_Account_Name, payConfig.Partner, payConfig.PartnerKey, notifyUrl);
                Response.Write(formString);
            }
            catch (Exception ex)
            {
                errorMsg = "支付页生成失败";
            }
        }
Beispiel #8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //Tolog("进入支付回调");
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Request.InputStream);
                xmlDoc.Save(string.Format("C:\\WXPay\\NotifyActivity{0}.xml", DateTime.Now.ToString("yyyyMMddHHmmssfff")));//写入日志

                //全部参数
                Dictionary <string, string> parametersAll = new Dictionary <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);
                    }
                }
                parametersAll = (from entry in parametersAll
                                 orderby entry.Key ascending
                                 select entry).ToDictionary(pair => pair.Key, pair => pair.Value); //全部参数排序
                PayConfig payConfig = bllPay.GetPayConfig();
                if (!bllPay.VerifySignatureWx(parametersAll, payConfig.WXPartnerKey))              //验证签名
                {
                    Tolog("验证签名出错");
                    Response.Write(failXml);
                    return;
                }
                var orderInfo = bllMeifan.GetActivityDataByOrderId(parametersAll["out_trade_no"]);
                if (orderInfo == null)
                {
                    // Tolog("订单未找到");
                    Response.Write(failXml);
                    return;
                }
                if (orderInfo.PaymentStatus == 1)
                {
                    // Tolog("已支付");
                    Response.Write(successXml);
                    return;
                }
                //更新订单状态
                if (parametersAll["return_code"].Equals("SUCCESS") && parametersAll["result_code"].Equals("SUCCESS"))//交易成功
                {
                    //orderInfo.PaymentStatus = 1;
                    if (bllOrder.Update(orderInfo, string.Format(" PaymentStatus=1"), string.Format(" OrderId='{0}'", orderInfo.OrderId)) > 0)
                    {
                        Response.Write(successXml);
                        return;
                    }
                    else
                    {
                        Response.Write(failXml);
                        return;
                    }
                }

                Response.Write(failXml);
            }
            catch (Exception ex)
            {
                Tolog("出错了:" + ex.ToString());
                Response.Write(failXml);
            }
        }
Beispiel #9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Request.InputStream);
                try
                {
                    xmlDoc.Save(string.Format("C:\\WXPay\\Notify{0}.xml", DateTime.Now.ToString("yyyyMMddHHmmssfff")));
                }
                catch (Exception)
                {
                }
                //全部参数
                Dictionary <string, string> parametersAll = new Dictionary <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);
                    }
                }

                parametersAll = (from entry in parametersAll
                                 orderby entry.Key ascending
                                 select entry).ToDictionary(pair => pair.Key, pair => pair.Value);//全部参数排序

                BllOrder bllOrder = new BllOrder();
                BLLJIMP.Model.OrderPay orderPay = bllOrder.GetOrderPay(parametersAll["out_trade_no"], "", bllOrder.WebsiteOwner);

                BllPay    bllPay    = new BllPay();
                PayConfig payConfig = bllPay.GetPayConfig();
                if (bllPay.VerifySignatureWx(parametersAll, payConfig.WXPartnerKey))//验证签名
                {
                    if (orderPay == null)
                    {
                        Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>");
                        return;
                    }

                    if (orderPay.Status == 1)
                    {
                        Response.Write("<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>");
                        return;
                    }
                    orderPay.Status = 1;
                    if (bllOrder.Update(orderPay))
                    {
                        BLLUser bllUser = new BLLUser();
                        if (orderPay.Type == "1")
                        {
                            int score = 0;
                            int.TryParse(orderPay.Ex1, out score);
                            BLLKeyValueData bllKeyValueData  = new BLLKeyValueData();
                            string          ScoreDispalyName = bllKeyValueData.GetDataVaule("ScoreDispalyName", "1", bllKeyValueData.WebsiteOwner);

                            string msg = "消费" + orderPay.Total_Fee + "元,充值" + score + ScoreDispalyName;
                            if (bllUser.AddUserScoreDetail(orderPay.UserId, EnumStringHelper.ToString(ScoreDefineType.Recharge), bllUser.WebsiteOwner, score, msg))
                            {
                                Response.Write("<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>");
                            }
                            else
                            {
                                Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>");
                            }
                            //BLLSystemNotice bllSystemNotice = new BLLSystemNotice();
                            //bllSystemNotice.SendNotice(BLLSystemNotice.NoticeType.SystemMessage, null, null, orderPay.UserId, msg);
                        }
                        else if (orderPay.Type == "2")
                        {
                            string invoiceMsg;
                            if (orderPay.Ex1 == "1")
                            {
                                invoiceMsg = "带发票,";
                            }
                            else
                            {
                                invoiceMsg = "无发票,";
                            }

                            string msg = "充值VIP," + invoiceMsg + "消费" + orderPay.Total_Fee.ToString() + "元";


                            BLLKeyValueData bllKeyValueData = new BLLKeyValueData();
                            string          VIPDatelong     = bllKeyValueData.GetDataVaule("VIPDatelong", "1", bllKeyValueData.WebsiteOwner);
                            if (string.IsNullOrWhiteSpace(VIPDatelong))
                            {
                                VIPDatelong = "12";
                            }
                            int datelong = Convert.ToInt32(VIPDatelong);

                            BLLUserExpand bllUserExpand = new BLLUserExpand();
                            UserExpand    userVip       = bllUserExpand.GetUserExpand(BLLJIMP.Enums.UserExpandType.UserIsVip, orderPay.UserId);
                            string        userVipEndDate;
                            if (userVip == null || DateTime.Parse(userVip.DataValue) < DateTime.Now)
                            {
                                userVipEndDate = DateTime.Now.AddMonths(datelong).ToString("yyyy-MM-dd");
                            }
                            else
                            {
                                userVipEndDate = DateTime.Parse(userVip.DataValue).AddMonths(datelong).ToString("yyyy-MM-dd");
                            }
                            bllUserExpand.UpdateUserExpand(BLLJIMP.Enums.UserExpandType.UserIsVip, orderPay.UserId, userVipEndDate);

                            //更新用户字段
                            UserScoreDetailsInfo scoreModel = new UserScoreDetailsInfo();
                            scoreModel.AddNote   = msg;
                            scoreModel.AddTime   = DateTime.Now;
                            scoreModel.Score     = 0;
                            scoreModel.UserID    = orderPay.UserId;
                            scoreModel.ScoreType = "RechargeVIP";
                            UserInfo currUser = bllUser.GetUserInfo(orderPay.UserId);
                            scoreModel.TotalScore   = currUser.TotalScore;
                            scoreModel.WebSiteOwner = currUser.WebsiteOwner;
                            if (bllUser.Add(scoreModel))
                            {
                                BLLSystemNotice bllSystemNotice = new BLLSystemNotice();
                                bllSystemNotice.SendNotice(BLLSystemNotice.NoticeType.SystemMessage, null, null, orderPay.UserId, msg);

                                Response.Write("<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>");
                            }
                            else
                            {
                                Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>");
                            }
                        }

                        return;
                    }
                    else
                    {
                        Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>");
                        return;
                    }
                }
                Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>");
            }
            catch (Exception)
            {
                Response.Write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>");
            }
        }
Beispiel #10
0
        public void ProcessRequest(HttpContext context)
        {
            BLLJIMP.Model.API.User.PayUpgrade payUpgrade = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayUpgrade>(new BLLJIMP.Model.API.User.PayUpgrade());
            payUpgrade.level = CurrentUserInfo.MemberLevel;
            string websiteOwner = bll.WebsiteOwner;

            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", payUpgrade.level.ToString());

            if (levelConfig == null)
            {
                payUpgrade.userTotalAmount = 0;
            }
            else
            {
                payUpgrade.userTotalAmount = Convert.ToDecimal(levelConfig.FromHistoryScore);
            }
            UserLevelConfig toLevelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", payUpgrade.toLevel.ToString());

            if (toLevelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员等级未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (toLevelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止升级";
                bll.ContextResponse(context, apiResp);
                return;
            }
            payUpgrade.needAmount = Convert.ToDecimal(toLevelConfig.FromHistoryScore);
            payUpgrade.amount     = payUpgrade.needAmount - payUpgrade.userTotalAmount;
            if (payUpgrade.amount < 0)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "暂时不支持降级";
                bll.ContextResponse(context, apiResp);
                return;
            }

            if (string.IsNullOrWhiteSpace(CurrentUserInfo.WXOpenId))
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "请先绑定微信";
                bll.ContextResponse(context, apiResp);
                return;
            }
            PayConfig payConfig = bllPay.GetPayConfig();

            if (payConfig == null || string.IsNullOrEmpty(payConfig.WXAppId) || string.IsNullOrEmpty(payConfig.WXMCH_ID) || string.IsNullOrEmpty(payConfig.WXPartnerKey))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户微信支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            OrderPay orderPay = new OrderPay();

            orderPay.OrderId      = bll.GetGUID(TransacType.PayRegisterOrder);
            orderPay.InsertDate   = DateTime.Now;
            orderPay.Subject      = "支付升级";
            orderPay.Total_Fee    = payUpgrade.amount;
            orderPay.Type         = "6";
            orderPay.WebsiteOwner = websiteOwner;
            orderPay.UserId       = CurrentUserInfo.UserID;
            orderPay.Ex1          = JsonConvert.SerializeObject(payUpgrade);
            if (!bll.Add(orderPay))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "生成支付订单失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            string appId     = payConfig.WXAppId;                                                                            //微信AppId
            string mchId     = payConfig.WXMCH_ID;                                                                           //商户号
            string key       = payConfig.WXPartnerKey;                                                                       //api密钥
            string openId    = CurrentUserInfo.WXOpenId;                                                                     //openid
            string ip        = context.Request.UserHostAddress;                                                              //ip
            string notifyUrl = string.Format("http://{0}/WxPayNotify/PayUpgradeNotify.aspx", context.Request.Url.Authority); //支付升级通知地址
            string body      = "";                                                                                           //订单内容

            string payReqStr = bllPay.GetBrandWcPayRequest(orderPay.OrderId, orderPay.Total_Fee, appId, mchId, key, openId, ip, notifyUrl, body);

            BllPay.WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <BllPay.WXPayReq>(payReqStr);
            if (string.IsNullOrEmpty(payReqModel.paySign))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "构造支付信息失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                pay_req = payReqModel
            };
            bllUser.ContextResponse(context, apiResp);
        }
Beispiel #11
0
        public void ProcessRequest(HttpContext context)
        {
            string  scoreStr = context.Request["score"];
            decimal score    = Convert.ToDecimal(scoreStr);

            if (score == 0)
            {
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "积分不能为0";
                bllKeyValueData.ContextResponse(context, apiResp);
                return;
            }
            if (CurrentUserInfo == null)
            {
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.UserIsNotLogin;
                apiResp.msg  = "您还没有登录";
                bllKeyValueData.ContextResponse(context, apiResp);
                return;
            }
            BllOrder  bllOrder  = new BllOrder();
            BllPay    bllPay    = new BllPay();
            PayConfig payConfig = bllPay.GetPayConfig();

            string  rechargeValue = bllKeyValueData.GetDataVaule("Recharge", "100", bllKeyValueData.WebsiteOwner);
            decimal rechargeFee   = Convert.ToDecimal(rechargeValue);
            decimal totalFee      = rechargeFee / 100 * score;

            string websiteOwner = bllKeyValueData.WebsiteOwner;

            OrderPay orderPay = new OrderPay();

            orderPay.OrderId      = bllOrder.GetGUID(TransacType.CommAdd);
            orderPay.InsertDate   = DateTime.Now;
            orderPay.Status       = 0;
            orderPay.Type         = "1";
            orderPay.Subject      = "积分充值";
            orderPay.Total_Fee    = totalFee;
            orderPay.UserId       = CurrentUserInfo.UserID;
            orderPay.WebsiteOwner = websiteOwner;
            orderPay.Ex1          = scoreStr;

            var non_str = Payment.WeiXin.CommonUtil.CreateNoncestr();//随机串
            Dictionary <string, string> dic = new Dictionary <string, string>();

            dic.Add("appid", payConfig.WXAppId);
            dic.Add("body", "订单" + orderPay.OrderId);
            dic.Add("mch_id", payConfig.WXMCH_ID);//商户号
            dic.Add("nonce_str", non_str);
            dic.Add("out_trade_no", orderPay.OrderId);
            dic.Add("spbill_create_ip", context.Request.UserHostAddress);
            dic.Add("total_fee", (totalFee * 100).ToString("F0"));
            dic.Add("notify_url", string.Format("http://{0}/WxPayNotify/DoPayWxNotify.aspx", context.Request.Url.Authority));
            dic.Add("trade_type", "NATIVE");
            dic.Add("product_id", orderPay.OrderId);
            string strtemp = Payment.WeiXin.CommonUtil.FormatBizQueryParaMap(dic, false);
            string sign    = Payment.WeiXin.MD5SignUtil.Sign(strtemp, payConfig.WXPartnerKey);

            dic = (from entry in dic
                   orderby entry.Key ascending
                   select entry).ToDictionary(pair => pair.Key, pair => pair.Value);
            dic.Add("sign", sign);

            string postData = Payment.WeiXin.CommonUtil.ArrayToXml(dic);
            string url      = "https://api.mch.weixin.qq.com/pay/unifiedorder";

            System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
            byte[] requestBytes           = System.Text.Encoding.UTF8.GetBytes(postData);
            req.Method        = "POST";
            req.ContentType   = "application/x-www-form-urlencoded";
            req.ContentLength = requestBytes.Length;
            Stream requestStream = req.GetRequestStream();

            requestStream.Write(requestBytes, 0, requestBytes.Length);
            requestStream.Close();

            System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)req.GetResponse();
            StreamReader sr      = new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8);
            string       backStr = sr.ReadToEnd();

            sr.Close();
            res.Close();
            var result      = System.Xml.Linq.XDocument.Parse(backStr);
            var return_code = result.Element("xml").Element("return_code").Value;

            if (!return_code.ToUpper().Equals("SUCCESS"))
            {
                apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
                apiResp.msg    = "预支付失败";
                apiResp.result = new
                {
                    return_msg = result.Element("xml").Element("return_msg").Value,
                    post_data  = postData
                };
                bllKeyValueData.ContextResponse(context, apiResp);
                return;
            }

            var rusult_code = result.Element("xml").Element("result_code").Value;

            if (return_code.ToUpper().Equals("SUCCESS") && (rusult_code.ToUpper().Equals("SUCCESS")))
            {
                var prepay_id = result.Element("xml").Element("prepay_id").Value;
                var code_url  = result.Element("xml").Element("code_url").Value;
                orderPay.Trade_No = prepay_id;
                bllOrder.Add(orderPay);

                apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.IsSuccess;
                apiResp.msg    = "预支付完成";
                apiResp.status = true;
                apiResp.result = new
                {
                    orderId   = orderPay.OrderId,
                    prepay_id = prepay_id,
                    code_url  = code_url
                };
            }
            else
            {
                apiResp.code   = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
                apiResp.result = result.Element("xml").Element("err_code_des").Value;
                apiResp.msg    = "预支付失败";
            }
            bllKeyValueData.ContextResponse(context, apiResp);
        }
Beispiel #12
0
        public void BuildOrder(HttpContext context, int payType)
        {
            BLLJIMP.Model.API.User.PayRegisterUser requestUser = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayRegisterUser>(new BLLJIMP.Model.API.User.PayRegisterUser());
            string websiteOwner = bll.WebsiteOwner;

            if (string.IsNullOrWhiteSpace(requestUser.level.ToString()))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请选择会员级别";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (string.IsNullOrWhiteSpace(requestUser.spreadid))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入推荐人编号";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (string.IsNullOrWhiteSpace(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入手机号码";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (!ZentCloud.Common.MyRegex.PhoneNumLogicJudge(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "手机号码格式不正确";
                bll.ContextResponse(context, apiResp);
                return;
            }

            if (!ZentCloud.Common.MyRegex.IsIDCard(requestUser.idcard))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "身份证号码必须如实填写";
                bll.ContextResponse(context, apiResp);
                return;
            }
            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", requestUser.level.ToString());

            if (levelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (levelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止注册";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUser.levelname = levelConfig.LevelString;
            UserInfo spreadUser = bllUser.GetSpreadUser(requestUser.spreadid, websiteOwner);

            if (spreadUser == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "推荐人未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUser.spreadid = spreadUser.UserID; //推荐人
            UserInfo oldUserInfo = bllUser.GetUserInfoByPhone(requestUser.phone, websiteOwner);

            if (oldUserInfo != null && oldUserInfo.MemberLevel > 0)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该手机已注册会员";
                bll.ContextResponse(context, apiResp);
                return;
            }

            PayConfig payConfig = bllPay.GetPayConfig();

            if (payType == 1 && !bllPay.IsAliPay(payConfig))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户支付宝支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            else if (payType == 2 && !bllPay.IsJDPay(payConfig))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户京东支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (oldUserInfo != null)
            {
                requestUser.userid = oldUserInfo.UserID;
            }
            else
            {
                requestUser.userid = string.Format("ZYUser{0}{1}", DateTime.Now.ToString("yyyyMMdd"), Guid.NewGuid().ToString("N").ToUpper());
            }
            requestUser.regIP    = context.Request.UserHostAddress;//ip
            requestUser.password = ZentCloud.Common.Rand.Number(6);

            OrderPay orderPay = new OrderPay();

            orderPay.OrderId      = bll.GetGUID(TransacType.PayRegisterOrder);
            orderPay.InsertDate   = DateTime.Now;
            orderPay.Subject      = "支付注册会员";
            orderPay.Total_Fee    = Convert.ToDecimal(levelConfig.FromHistoryScore);
            orderPay.Type         = "5";
            orderPay.WebsiteOwner = websiteOwner;
            orderPay.UserId       = requestUser.userid;
            orderPay.Ex1          = JsonConvert.SerializeObject(requestUser);
            orderPay.Ex2          = requestUser.phone;
            orderPay.PayType      = payType;
            if (!bll.Add(orderPay))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "生成支付订单失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                pay_order_id = orderPay.OrderId
            };
            bllUser.ContextResponse(context, apiResp);
        }
Beispiel #13
0
        public void BuildOrder(HttpContext context, int payType, UserInfo user)
        {
            BLLJIMP.Model.API.User.PayUpgrade payUpgrade = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayUpgrade>(new BLLJIMP.Model.API.User.PayUpgrade());
            payUpgrade.level = user.MemberLevel;
            string websiteOwner = bll.WebsiteOwner;

            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", payUpgrade.level.ToString());

            if (levelConfig == null)
            {
                payUpgrade.userTotalAmount = 0;
            }
            else
            {
                payUpgrade.userTotalAmount = Convert.ToDecimal(levelConfig.FromHistoryScore);
            }
            UserLevelConfig toLevelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", payUpgrade.toLevel.ToString());

            if (toLevelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员等级未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (toLevelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止升级";
                bll.ContextResponse(context, apiResp);
                return;
            }
            payUpgrade.needAmount = Convert.ToDecimal(toLevelConfig.FromHistoryScore);
            payUpgrade.amount     = payUpgrade.needAmount - payUpgrade.userTotalAmount;
            if (payUpgrade.amount < 0)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "暂时不支持降级";
                bll.ContextResponse(context, apiResp);
                return;
            }
            PayConfig payConfig = bllPay.GetPayConfig();

            if (payType == 1 && !bllPay.IsAliPay(payConfig))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户支付宝支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            else if (payType == 2 && !bllPay.IsJDPay(payConfig))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户京东支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            OrderPay orderPay = new OrderPay();

            orderPay.OrderId      = bll.GetGUID(TransacType.PayRegisterOrder);
            orderPay.InsertDate   = DateTime.Now;
            orderPay.Subject      = "支付升级";
            orderPay.Total_Fee    = payUpgrade.amount;
            orderPay.Type         = "6";
            orderPay.WebsiteOwner = websiteOwner;
            orderPay.UserId       = user.UserID;
            orderPay.Ex1          = JsonConvert.SerializeObject(payUpgrade);
            orderPay.PayType      = payType;
            if (!bll.Add(orderPay))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "生成支付订单失败";
                bll.ContextResponse(context, apiResp);
                return;
            }
            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                user_id      = user.AutoID,
                pay_order_id = orderPay.OrderId
            };
            bllUser.ContextResponse(context, apiResp);
        }
Beispiel #14
0
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                Tolog("京东支付通知start");
                PayConfig payConfig = bllPay.GetPayConfig();
                byte[]    byts      = new byte[context.Request.InputStream.Length];
                context.Request.InputStream.Read(byts, 0, byts.Length);
                string req = Encoding.UTF8.GetString(byts);
                Tolog("通知参数" + req);
                //string req = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><jdpay><version>V2.0</version><merchant>110226843002</merchant><result><code>000000</code><desc>success</desc></result><encrypt>NDdmNmZkNjQwNzBiYzEzMmE5N2ExMTg3YjkxNmQ4NzkxYzQyMmFjZjM4YTM1MjZjY2JjNzM1ZDkxY2Q5ZDNmMTMzMGFjYTBkNTI0MzYzNjc3MTVhODI3OWUzZTAxMmY5ODEyOTVmNDNiNWY5MDZhZGJiYTcwYTYyOTFlYzVmYTU2Y2EyN2U1YzhkNzllMGE3ZTUyNDE4NWU4OWMxNjIwNDFkODcyYzJiZDA4ZWY4YWEyMmY5ZWUxNDk3YTg3MTI3YmU1NTMxNjc5NWJiOTlmN2ZmNGU1MTc1YWJhNjNkYjUzYWUwZDQzOTk4ZjIzMjBiYmVkNGJkMDcxOWUzOThjZjU1ODUwNzM4Y2RiNzM2Njc1N2U2ZTcxN2Q0N2ZiYTZmN2M1YzBiYzRmMjc4ZThiZDNhYTkxZTExNzBiYjg2ZDNjNmQ3OWUyZTBlYjUzZWNlZjFjODQ2MzdiN2E5MTQxN2Y3NmRhZmNkNDdiMzMwNjc1MGRhYjhiYzg0NTFkOWNiZTQ2NGQ0M2FmY2Q0NDcwZDU2NzQzM2UzM2UxNjg2M2ViMDYzMzU0MjQ1NDZiNGZmM2RmNDA2NWJmYjQ5MjdkZWMyMDcwYjM3ODQ5OTQzMjRmNDJlMzllODUxN2ZkYmQwYTU3MTBhOTIyMzAwM2JiZDQ0MmNhYzE5ZjZkMzE5OWY4MDdmNjJlMWZiMWM1MjkzYjA1NWIwZDk0NmMxMjk0NzgwMDliYWRhZThiNjVkZDZiZDk5Y2E5YzIxZWFkN2NkZmUxOWE2MDc3MzQyYjhiYTIzY2ZkZTBhYjliOTdiMjkzYjRjYzNmMzFmOTkwYzExZGJjNzViZDJjNGQzMzU5NWFkMmMzM2UzZGUyZGRhMjljY2Q0MjBiZTg5OTYzMGEzNDdlM2FkZDY2YzNhOTE2YTNmMjUyNmU0MDQyYTM3YjYyOTRkYzI4MThiNWNmMmZmY2I1YTNjNDdiNmUyY2U0NTJiNDE2N2ZmOWIwY2MwZmYxOTQwZTliZGViNTQ0ZjMzNjYxYzZiNTBhNDAyZDM3NmI2YWQ4YjA0M2NmZDNhMzViZjYzZTg4OWUyYmMwNmExNmEwZmVhMzdiYTQzNDVkMWUyMWE5OGM3MDhjNTA4ODBjZTYyYTM2NmQyMjM4MDQ0OTY1YWVjOTUxNTVkYmJlYzYzYzgwZTFkNGRiZTJmYzA4Yzc1MWE5ZTdiNTFjYmM3MDZkMWJhOGM2Njc1OWQ2MWViOGE2YjM0YWZkYTIwMTMxZDE3N2IzZWE5NDljYTY4N2IxZGY3MGQxNjhmYTBjN2U0MDhhNTFkZDhjYjUwYmVhYTA5NDdmMmQ1YzM2YjViMzYxNWU5YjYzNDcxNWJmYzNmYWQ0NjBjYzI2NTNiNTM1ZWNhNjUzMDU0NGVkM2ExZmE3NGE0Yzg2OThkMmY0ZTIyM2U4MjMwZDYyNDYzZWY2NDFhOTlhZmU3NmRiZDgyMmE0NWQ3ODA1ZTNmMTZjNTUxMWVhZTI4ZTZiMmQwN2Y1N2EwZDVjMjZjOWNjMzBlZDAzYmE0YWM2M2UzMmJmMTMwNjk1ZmUzN2NhMjlhMWZjN2FlYjgwY2JlYWM2ZjRiZTk4OWFkZGI3N2ZhMTgyNDc2ZDA2MDIyMzllNDY5ODc5ZmE3MzUyNWI0Yzc4MDAyNWIyY2VlYzY3NTExNmVhMjk4ZGNiZGU2ZWE1ODlkOTNjMTA0M2ZkNTBiNTI0OTYzODg2OWRmOTFiNjNmZDUzZDRhM2FjZmIwNWZiZmJkMTU1NWYyNGRiNDc1ZTIzN2I5ZWIwZjcwNGI5NzRiMTlmYzE2N2MyYzE0Y2M4ZGZmYzQ4YmZkNjI0MmZiZTQwMDMzODg2OWRmOTFiNjNmZDUzZDkxZGE4ZWNhODI0ZjU2YzhkODNhMGViNzYyNDI5NmE1ZmZkODQ0YzcxNTA1NjY2NDI4MTZiYWI3YmNlZmFkZjdkOWMwMmYxYTBlNTg2MzhkMWNiYWMwZWE4NzA5YmViMmE4NzY5Mjc0ZTcwN2MyNGFiMGM3YzAzYjBiYjNkZmYyZDI4OWRjNjZjYzU4N2U2ZDBjM2RjOTZhY2M4OTFhN2JkNWNmZWNmYWViYjIxODE5OTRhMjBlYTllMmU1ZWRhNzFiNDI0MmUwNmI1YWMyNzZlNzJkNWNmMDk2M2MyODlhNzFhOTY1M2I5MzkzNDk0NjA3MTQ3NTg2YjlmNmU4ZThhMDRjYTAzMDlkYmNkYzNlOThlMjRmYWExMTRiYWY0ODcxNzY2ZjNlNDViMzljMzdlNWZlYTQzMWZjNTQwNWZlMjYzNGJmYTM2YWM4OWFhNzVmYjhhMWNiMjUwZTJlODE=</encrypt></jdpay>";
                //var jdPubKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCKE5N2xm3NIrXON8Zj19GNtLZ8xwEQ6uDIyrS3S03UhgBJMkGl4msfq4Xuxv6XUAN7oU1XhV3/xtabr9rXto4Ke3d6WwNbxwXnK5LSgsQc1BhT5NcXHXpGBdt7P8NMez5qGieOKqHGvT0qvjyYnYA29a8Z4wzNR7vAVHp36uD5RwIDAQAB";

                //req = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><jdpay><version>V2.0</version><merchant>110226843002</merchant><result><code>000000</code><desc>success</desc></result><encrypt>MDIxZjNkNjI1YjU1NzQ4MWE5N2ExMTg3YjkxNmQ4NzkxYzQyMmFjZjM4YTM1MjZjY2JjNzM1ZDkxY2Q5ZDNmMTMzMGFjYTBkNTI0MzYzNjc3MTVhODI3OWUzZTAxMmY5ODEyOTVmNDNiNWY5MDZhZGJiYTcwYTYyOTFlYzVmYTU2Y2EyN2U1YzhkNzllMGE3ZTUyNDE4NWU4OWMxNjIwNDFkODcyYzJiZDA4ZWY4YWEyMmY5ZWUxNDk3YTg3MTI3YmU1NTMxNjc5NWJiOTlmN2ZmNGU1MTc1YWJhNjNkYjUzYWUwZDQzOTk4ZjIzMjBiYmVkNGJkMDcxOWUzOThjZjU1ODUwNzM4Y2RiNzM2Njc1N2U2ZTcxN2Q0N2ZiYTZmN2M1YzBiYzRmMjc4ZThiZDNhYTkxZTExNzBiYjg2ZDNjNmQ3OWUyZTBlYjUzZWNlZjFjODQ2MzdiN2E5MTQxN2Y3NmRhZmNkNDdiMzMwNjc1MGRhYjhiYzg0NTFkOWNiY2QyMDZhOTJiYzU2YTFiOWEwMjRmNTZhMWZhNTVhNjlmYTA1ZDFlMmI0YTI4MGE1YTU0N2NlMjc3ZWMwM2QyNWE4ODdlOTA0ZGM3YTY2MDViY2I1OTI5MDBlYWU4MGU0Mzc4MmEwOWY3ZjEwZTk5MGZkOGUzYTA4MzNkNGMyZGZkNWM3MDhkOGU4N2NhMmQyZGM1MDgwYzUyOTg3OGNkMzFhZWRkMTE1NDM5ZjExYTM2OGM2OGE4MGZjZTYyMjJkNzlmODcwNGYyNDMzMTYyZThhZTBkODM2ODBjYzg5ZGRjMWY3ZGVmYzQzYjc4MDZiMDNhMTBmZTc2YjI3MThjYjQ0YjQwZDkyY2E3OGUzYmYzZmFlNjBlOTI4OGU1ODVkNjBjMWZiNDBmMjFjNzVmNDkxYmRkYWFlNzQ0YjZkYmU1ODNkOWQ4OGYwN2EyMDViOWQ5MGNjMzViMTE3MDQ4NWVlNTdlN2Y5MTRhZDM3YzFlODY1NDFiZmQyNDg1MzhlZGZiNDNiZWZmZjY3YmE3NWQ5YjI0MzE4ZDMzMDE5NTE3YWM4ZTJiMDZhZWYyM2NhNjMwODc3MDhkNTdkZWI3MWVhMmY2MzA2ZDliZjBmZGFlNzQ3ODgzODg0ZjVhOWFkODIxYWM0NGQ1ZDlmMGRlNDhkMjBiYTJjYmQ4NTlkMmU3NDMxZDExZmRjMzkxMDU3ZmE3NGE0Yzg2OThkMmY0ZWQ1ZjE3MjIwOWQ1ZTBmZGIzZjFhNGYwOTllZWY5YzRiMWYyZDAxZjlhNzhlYWY5ZjU0YmIyZjczNmUxMjJkNWY2NzhlMDFmYjU0YjY3NWRlYTc1ZWZkNmMwNTJhZmY3ZGVhMGM5NjAyMWQwMGQyMjI2NzdhM2RlNDdhMTdkMWI4ZWQxYmEyYWZlZDg1ZjI4NDk2ZmI2MGVjOTc5OTc4MjgzZTEyNzY2ZmI1OWUzZjY1MWI4OTVlMmQ4OGNlNGRhODg0NzJiNTFiN2RmZDc5NzdkNDk4NTY0NGU4ZjBmNGZjMTM3MmUzMGNhMTUwOTFkNDFhODIzMjZiODU0YjMzNmI1N2EwZDVjMjZjOWNjMzBlMjFjZjNkMDA0NjQ4Zjk0NjQzZWRhOTU1MmIyZjJkYzZjNGJmOTU5MDIzNTBlODlmOTNhZDRhYmEyMzZiY2E1OWE4NzY5Mjc0ZTcwN2MyNGFjNGJmOTU5MDIzNTBlODlmNDNlZGE5NTUyYjJmMmRjNjU0MTNlZjYxZTNlODc4MDk3MmNiYjg3NTVjNmU1NWNlZDljNWU0ZDE5ZTRmZjJjZTAxNmJiMGIzYWFlOTdlYTQzYmM5NWVmMGU0ZjUyNzY4NDNlZGE5NTUyYjJmMmRjNmMyOWRiYWZkYTNjYzQ1M2E3ZGJhZWNjZWJmNGIxZmQ5MTMxMmRiMzliOTU2YzBmNmNiODMxMDQ1ZDBiYjM1ZTNmMzlmMGE0ODNiN2M3ODYyZjNjMTFiN2ZiODljNDNkMjE4NGFlNzU5M2JhMmQ2YTJkOWMwMmYxYTBlNTg2MzhkYzU0NzE0NjExNzkyNGU4ZjQ4NDgzMTAyNDY5OGRlNGZiMDVmNGQzNzE3NGMwOGI2NGU2NjkxMmU2NGY5M2I0YjNiMThmMzZiZmY0NTgwN2FjMDAxOWRlY2ZkYTcyOGFmNzIyZTQwNjhlMTViM2UwMmQzMmRiYjJkOTE2MmQzNWMzZWM2OGRkZjJjMjdmOTRhZGNmYzEzOTdlOWY0NjQwODFiYWU0Y2E3Y2NjZDY0NjQzNGFmZWU4ODExYWRiZTBlY2MwY2JlOThmNDliMDZkYjE2YjNjNTZhOTRiOGZkMDU=</encrypt></jdpay>";

                //req = Regex.Replace(req, @"[\t\n\r]", "", RegexOptions.IgnoreCase);

                req = req.Replace("\r", "").Replace("\n", "").Replace("\t", "");

                AsynNotifyResponse anyResponse = Payment.JDPay.XMLUtil.decryptResXml <AsynNotifyResponse>(Payment.JDPay.Config.JDPubKey, payConfig.JDPayDESKey, req);
                // System.Diagnostics.Debug.WriteLine("异步通知订单号:" + anyResponse.tradeNum + ",状态:" + anyResponse.status);
                Tolog("异步通知订单号:" + anyResponse.tradeNum + ",状态:" + anyResponse.status);
                string   orderId   = anyResponse.tradeNum;
                OrderPay orderInfo = bllOrder.GetOrderPay(orderId, payType: 2);
                if (orderInfo == null)
                {
                    //context.Response.Write("订单未找到");
                    context.Response.StatusCode = 500;
                    context.Response.Write(failStr);
                    return;
                }
                if (orderInfo.Status.Equals(1))
                {
                    //Tolog("已支付");
                    // context.Response.Write("订单已支付");
                    context.Response.StatusCode = 200;
                    context.Response.Write(successStr);
                    return;
                }

                if (anyResponse.status == "2")
                {
                    //京东支付未返回流水号
                    bool result = false;
                    Alipay.ShMemberNotifyUrl shNotify = new Alipay.ShMemberNotifyUrl();
                    if (orderInfo.Type == "4")
                    {
                        result = shNotify.PayRecharge(orderInfo, "");
                    }
                    else if (orderInfo.Type == "5")
                    {
                        result = shNotify.PayRegister(orderInfo, "");
                    }
                    else if (orderInfo.Type == "6")
                    {
                        result = shNotify.PayUpgrade(orderInfo, "");
                    }
                    if (result)
                    {
                        context.Response.StatusCode = 200;
                        context.Response.Write(successStr);
                        Tolog("支付成功" + orderInfo.OrderId);
                        return;
                    }
                    else
                    {
                        context.Response.StatusCode = 500;
                        context.Response.Write(failStr);
                        Tolog("支付失败");
                        return;
                    }
                }
                else
                {
                    context.Response.StatusCode = 500;
                    context.Response.Write(failStr);
                    return;
                }
            }
            catch (Exception ex)
            {
                //error = "fail";
                Tolog("京东支付异常:" + ex.ToString());
            }

            context.Response.ContentType = "text/plain";
            context.Response.StatusCode  = 500;
            context.Response.Write(failStr);
        }
Beispiel #15
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //Tolog("进入支付回调");
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Request.InputStream);
                //xmlDoc.Load(@"D:\PayRegisterNotify20170613203329981.xml");
                xmlDoc.Save(string.Format("C:\\WXPay\\PayRegisterNotify{0}.xml", DateTime.Now.ToString("yyyyMMddHHmmssfff")));//写入日志

                //全部参数
                Dictionary <string, string> parametersAll = new Dictionary <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);
                    }
                }
                parametersAll = (from entry in parametersAll
                                 orderby entry.Key ascending
                                 select entry).ToDictionary(pair => pair.Key, pair => pair.Value); //全部参数排序
                PayConfig payConfig = bllPay.GetPayConfig();
                if (!bllPay.VerifySignatureWx(parametersAll, payConfig.WXPartnerKey))              //验证签名
                {
                    Tolog("验证签名出错");
                    Response.Write(failXml);
                    return;
                }
                OrderPay orderPay = bllOrder.GetOrderPay(parametersAll["out_trade_no"]);
                if (orderPay == null)
                {
                    Tolog("订单未找到");
                    Response.Write(failXml);
                    return;
                }
                if (orderPay.Status.Equals(1))
                {
                    Tolog("已支付");
                    Response.Write(successXml);
                    return;
                }
                BLLJIMP.Model.API.User.PayRegisterUser requestUser = JsonConvert.DeserializeObject <BLLJIMP.Model.API.User.PayRegisterUser>(orderPay.Ex1);
                UserLevelConfig levelConfig = bll.QueryUserLevel(orderPay.WebsiteOwner, "DistributionOnLine", requestUser.level.ToString());
                if (levelConfig == null)
                {
                    Tolog("会员等级未找到");
                    Response.Write(failXml);
                    return;
                }
                //更新订单状态
                if (parametersAll["return_code"].Equals("SUCCESS") && parametersAll["result_code"].Equals("SUCCESS"))//交易成功
                {
                    UserInfo regUser = bllUser.GetUserInfoByPhone(requestUser.phone, orderPay.WebsiteOwner);
                    if (regUser != null && regUser.MemberLevel >= 10)
                    {
                        Tolog("该手机已注册会员");
                        Response.Write(failXml);
                        return;
                    }
                    if (regUser != null && regUser.MemberLevel > requestUser.level)
                    {
                        Tolog("该会员有更高级别");
                        Response.Write(failXml);
                        return;
                    }
                    if (regUser != null)
                    {
                        regUser.UserType          = 2;
                        regUser.TrueName          = requestUser.truename;
                        regUser.DistributionOwner = requestUser.spreadid;
                        regUser.MemberLevel       = requestUser.level;
                        regUser.MemberStartTime   = DateTime.Now;
                        regUser.MemberApplyTime   = orderPay.InsertDate;
                        regUser.RegIP             = requestUser.regIP;
                        regUser.Password          = requestUser.password;
                        regUser.MemberApplyStatus = 9;
                        regUser.IdentityCard      = requestUser.idcard;
                        regUser.Province          = requestUser.province;
                        regUser.City         = requestUser.city;
                        regUser.District     = requestUser.district;
                        regUser.Town         = requestUser.town;
                        regUser.ProvinceCode = requestUser.provinceCode;
                        regUser.CityCode     = requestUser.cityCode;
                        regUser.DistrictCode = requestUser.districtCode;
                        regUser.TownCode     = requestUser.townCode;
                        regUser.RegUserID    = null;
                        regUser.RegisterWay  = "线上";
                        regUser.IsDisable    = 0;
                        regUser.RegUserID    = null;
                    }
                    else
                    {
                        regUser                   = new UserInfo();
                        regUser.UserID            = requestUser.userid;
                        regUser.UserType          = 2;
                        regUser.TrueName          = requestUser.truename;
                        regUser.WebsiteOwner      = orderPay.WebsiteOwner;
                        regUser.DistributionOwner = requestUser.spreadid;
                        regUser.Phone             = requestUser.phone;
                        regUser.MemberLevel       = requestUser.level;
                        regUser.MemberStartTime   = DateTime.Now;
                        regUser.MemberApplyTime   = orderPay.InsertDate;
                        regUser.Regtime           = DateTime.Now;
                        regUser.LastLoginDate     = DateTime.Parse("1970-01-01");
                        regUser.RegIP             = requestUser.regIP;
                        regUser.Password          = requestUser.password;
                        regUser.MemberApplyStatus = 9;
                        regUser.IdentityCard      = requestUser.idcard;
                        regUser.Province          = requestUser.province;
                        regUser.City              = requestUser.city;
                        regUser.District          = requestUser.district;
                        regUser.Town              = requestUser.town;
                        regUser.ProvinceCode      = requestUser.provinceCode;
                        regUser.CityCode          = requestUser.cityCode;
                        regUser.DistrictCode      = requestUser.districtCode;
                        regUser.TownCode          = requestUser.townCode;
                        regUser.RegisterWay       = "线上";
                        regUser.IsDisable         = 0;
                        regUser.RegUserID         = null;
                    }
                    string msg = "";
                    orderPay.Trade_No = parametersAll["transaction_id"];
                    //线上注册分佣
                    if (!bll.PayRegisterTransfers(regUser, orderPay, parametersAll["openid"], parametersAll["transaction_id"], levelConfig, out msg))
                    {
                        Tolog(msg);
                        Response.Write(failXml);
                        return;
                    }
                    //发送优惠券
                    if (!string.IsNullOrEmpty(levelConfig.CouponId))
                    {
                        BLLCardCoupon bllCardCoupon = new BLLCardCoupon();
                        bllCardCoupon.SendCardCouponsByCurrUserInfo(regUser, levelConfig.CouponId);
                    }

                    Response.Write(successXml);
                    return;
                }
                Tolog("返回信息有误");
                Response.Write(failXml);
            }
            catch (Exception ex)
            {
                Tolog("出错了:" + ex.ToString());
                Response.Write(failXml);
            }
        }
Beispiel #16
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //Tolog("进入支付回调");
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Request.InputStream);
                xmlDoc.Save(string.Format("C:\\WXPay\\PayUpgradeNotify{0}.xml", DateTime.Now.ToString("yyyyMMddHHmmssfff")));//写入日志

                //全部参数
                Dictionary <string, string> parametersAll = new Dictionary <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);
                    }
                }
                parametersAll = (from entry in parametersAll
                                 orderby entry.Key ascending
                                 select entry).ToDictionary(pair => pair.Key, pair => pair.Value); //全部参数排序
                PayConfig payConfig = bllPay.GetPayConfig();
                if (!bllPay.VerifySignatureWx(parametersAll, payConfig.WXPartnerKey))              //验证签名
                {
                    Tolog("验证签名出错");
                    Response.Write(failXml);
                    return;
                }
                OrderPay orderPay = bllOrder.GetOrderPay(parametersAll["out_trade_no"]);
                if (orderPay == null)
                {
                    Tolog("订单未找到");
                    Response.Write(failXml);
                    return;
                }
                if (orderPay.Status.Equals(1))
                {
                    Tolog("已支付");
                    Response.Write(successXml);
                    return;
                }
                BLLJIMP.Model.API.User.PayUpgrade payUpgrade = JsonConvert.DeserializeObject <BLLJIMP.Model.API.User.PayUpgrade>(orderPay.Ex1);
                //更新订单状态
                if (parametersAll["return_code"].Equals("SUCCESS") && parametersAll["result_code"].Equals("SUCCESS"))//交易成功
                {
                    string msg = "";
                    orderPay.Trade_No = parametersAll["transaction_id"];
                    UserLevelConfig levelConfig = bll.QueryUserLevel(orderPay.WebsiteOwner, "DistributionOnLine", payUpgrade.toLevel.ToString());
                    UserInfo        payUser     = bllUser.GetUserInfo(orderPay.UserId, orderPay.WebsiteOwner);
                    if (!string.IsNullOrEmpty(levelConfig.CouponId))
                    {
                        BLLCardCoupon bllCardCoupon = new BLLCardCoupon();
                        bllCardCoupon.SendCardCouponsByCurrUserInfo(payUser, levelConfig.CouponId);
                    }
                    //支付升级分佣
                    if (!bll.PayUpgradeTransfers(orderPay, payUpgrade, parametersAll["openid"], parametersAll["transaction_id"], out msg))
                    {
                        Tolog(msg);
                        Response.Write(failXml);
                        return;
                    }

                    Response.Write(successXml);
                    return;
                }
                Tolog("返回信息有误");
                Response.Write(failXml);
            }
            catch (Exception ex)
            {
                Tolog("出错了:" + ex.Message);
                Response.Write(failXml);
            }
        }
Beispiel #17
0
        protected void Page_Load(object sender, EventArgs e)
        {
            BllPay bllPay = new BllPay();

            payConfig = bllPay.GetPayConfig();
        }
Beispiel #18
0
        /// <summary>
        /// 微信支付
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private string BrandWcPayRequest(HttpContext context)
        {
            if (!bllPay.IsWeiXinBrowser)
            {
                resp.errcode = 1;
                resp.errmsg  = "请在微信中打开";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            string  orderId     = context.Request["order_id"];
            decimal totalAmount = 0;                                      //订单金额
            string  appId       = "";                                     //微信AppId
            string  mchId       = "";                                     //商户号
            string  key         = "";                                     //api密钥
            string  openId      = "";                                     //openid
            string  ip          = "";                                     //ip
            string  notifyUrl   = baseUrl + "/WxPayNotify/NotifyV2.aspx"; //支付通知地址
            string  body        = "";                                     //订单内容

            if (string.IsNullOrEmpty(orderId))
            {
                resp.errcode = 1;
                resp.errmsg  = "order_id 必传";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            var orderInfo = bllMall.GetOrderInfo(orderId);

            if (orderInfo != null)
            {
                totalAmount = orderInfo.TotalAmount;
                //if (orderInfo.OrderUserID != CurrentUserInfo.UserID)
                //{
                //    resp.errcode = 1;
                //    resp.errmsg = "订单号无效";
                //    return ZentCloud.Common.JSONHelper.ObjectToJson(resp);
                //}
                if (orderInfo.PaymentStatus == 1)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "该订单已经支付,不需重复支付";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }

                //更改支付方式
                bllMall.Update(orderInfo, " PaymentType=2 ", string.Format(" (OrderID = '{0}' Or ParentOrderId='{0}') ", orderInfo.OrderID));

                //resp.errcode = 1;
                //resp.errmsg = "订单号不存在";
                //return ZentCloud.Common.JSONHelper.ObjectToJson(resp);
            }
            else
            {
                #region 众筹
                var orderInfoCrowd = bllMall.Get <CrowdFundRecord>(string.Format(" RecordID={0}", orderId));
                if (orderInfoCrowd == null)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单号不存在";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                if (orderInfoCrowd.UserID != currentUserInfo.UserID)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单号无效";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                if (orderInfoCrowd.Status == 1)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "订单已经支付,不需重复支付";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                totalAmount = orderInfoCrowd.Amount;
                notifyUrl   = baseUrl + "/WxPayNotify/NotifyCrowdFundV2.aspx";
                #endregion
            }

            PayConfig payConfig = bllPay.GetPayConfig();
            if (payConfig == null)
            {
                resp.errcode = 1;
                resp.errmsg  = "该商户微信支付还没有配置";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            if ((string.IsNullOrEmpty(payConfig.WXAppId)) || (string.IsNullOrEmpty(payConfig.WXMCH_ID)) || (string.IsNullOrEmpty(payConfig.WXPartnerKey)))
            {
                resp.errcode = 1;
                resp.errmsg  = "该商户微信支付还没有配置";
                return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            appId  = payConfig.WXAppId;
            mchId  = payConfig.WXMCH_ID;
            key    = payConfig.WXPartnerKey;
            openId = currentUserInfo.WXOpenId;
            ip     = context.Request.UserHostAddress;
            string   payReqStr   = bllPay.GetBrandWcPayRequest(orderId, totalAmount, appId, mchId, key, openId, ip, notifyUrl, body);
            WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <WXPayReq>(payReqStr);
            if (!string.IsNullOrEmpty(payReqModel.paySign))
            {
                return(ZentCloud.Common.JSONHelper.ObjectToJson(new
                {
                    errcode = 0,
                    pay_req = payReqModel
                }));
            }
            resp.errcode = 1;
            resp.errmsg  = "获取配置失败";
            return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
        }
Beispiel #19
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Dictionary <string, string> parametersAll = bllPay.GetRequestParameter();
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(parametersAll["notify_data"]);
                xmlDoc.Save(string.Format("C:\\Alipay\\mallnotify{0}.xml", DateTime.Now.ToString("yyyyMMddHHmmssfff")));
                //商户订单号
                string outTradeNo = xmlDoc.SelectSingleNode("/notify/out_trade_no").InnerText;
                //支付宝交易号
                string tradeNo = xmlDoc.SelectSingleNode("/notify/trade_no").InnerText;
                //交易状态
                string   tradeStatus  = xmlDoc.SelectSingleNode("/notify/trade_status").InnerText;
                string   websiteOwner = bllOrder.WebsiteOwner;
                OrderPay orderPay     = bllOrder.GetOrderPay(outTradeNo, "", websiteOwner);
                if (parametersAll.Count > 0)//判断是否有带返回参数
                {
                    Notify    aliNotify    = new Notify();
                    PayConfig payConfig    = bllPay.GetPayConfig();
                    bool      verifyResult = aliNotify.VerifyNotifyMall(parametersAll, Request.Form["sign"], payConfig.Partner, payConfig.PartnerKey);
                    if (verifyResult)//验证成功
                    {
                        /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                        //请在这里加上商户的业务逻辑程序代码

                        //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                        //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                        //解密(如果是RSA签名需要解密,如果是MD5签名则下面一行清注释掉)
                        //sPara = aliNotify.Decrypt(sPara);

                        //XML解析notify_data数据
                        if (tradeStatus == "TRADE_FINISHED")
                        {
                            //判断该笔订单是否在商户网站中已经做过处理
                            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                            //如果有做过处理,不执行商户的业务程序

                            //注意:
                            //该种交易状态只在两种情况下出现
                            //1、开通了普通即时到账,买家付款成功后。
                            //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。

                            if (orderPay.Status.Equals(0))//只有未付款状态
                            {
                                bool result = false;
                                if (orderPay.Type == "4")
                                {
                                    result = PayRecharge(orderPay, tradeNo);
                                }
                                else if (orderPay.Type == "5")
                                {
                                    result = PayRegister(orderPay, tradeNo);
                                }
                                else if (orderPay.Type == "6")
                                {
                                    result = PayUpgrade(orderPay, tradeNo);
                                }
                                if (result)
                                {
                                    Response.Write("success");
                                }
                                else
                                {
                                    Response.Write("fail");
                                }
                            }
                            else
                            {
                                Response.Write("success");  //请不要修改或删除
                            }
                        }
                        else if (tradeStatus == "TRADE_SUCCESS")
                        {
                            //判断该笔订单是否在商户网站中已经做过处理
                            //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                            //如果有做过处理,不执行商户的业务程序

                            //注意:
                            //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。


                            if (orderPay.Status.Equals(0))//只有未付款状态
                            {
                                bool result = false;
                                if (orderPay.Type == "4")
                                {
                                    result = PayRecharge(orderPay, tradeNo);
                                }
                                else if (orderPay.Type == "5")
                                {
                                    result = PayRegister(orderPay, tradeNo);
                                }
                                else if (orderPay.Type == "6")
                                {
                                    result = PayUpgrade(orderPay, tradeNo);
                                }
                                if (result)
                                {
                                    Response.Write("success");
                                }
                                else
                                {
                                    Response.Write("fail");
                                }
                            }
                            else
                            {
                                Response.Write("success");  //请不要修改或删除
                            }
                        }
                        else
                        {
                            Response.Write(tradeStatus);
                        }
                        //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                        /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    }
                    else//验证失败
                    {
                        Response.Write("fail");
                    }
                }
                else
                {
                    Response.Write("无通知参数");
                }
            }
            catch (Exception)
            {
                Response.Write("fail");
            }
        }
Beispiel #20
0
        public void ProcessRequest(HttpContext context)
        {
            decimal amount = Convert.ToDecimal(context.Request["amount"]);

            if (amount <= 0)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "金额必须大于0";
                bll.ContextResponse(context, apiResp);
                return;
            }
            string websiteOwner = bll.WebsiteOwner;

            if (string.IsNullOrWhiteSpace(CurrentUserInfo.WXOpenId))
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "请先绑定微信";
                bll.ContextResponse(context, apiResp);
                return;
            }
            PayConfig payConfig = bllPay.GetPayConfig();

            if (payConfig == null || string.IsNullOrEmpty(payConfig.WXAppId) || string.IsNullOrEmpty(payConfig.WXMCH_ID) || string.IsNullOrEmpty(payConfig.WXPartnerKey))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户微信支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            OrderPay orderPay = new OrderPay();

            orderPay.OrderId      = bll.GetGUID(TransacType.PayRegisterOrder);
            orderPay.InsertDate   = DateTime.Now;
            orderPay.Subject      = "支付充值";
            orderPay.Total_Fee    = amount;
            orderPay.Type         = "4";
            orderPay.WebsiteOwner = websiteOwner;
            orderPay.UserId       = CurrentUserInfo.UserID;
            if (!bll.Add(orderPay))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "生成支付订单失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            string appId     = payConfig.WXAppId;                                                                             //微信AppId
            string mchId     = payConfig.WXMCH_ID;                                                                            //商户号
            string key       = payConfig.WXPartnerKey;                                                                        //api密钥
            string openId    = CurrentUserInfo.WXOpenId;                                                                      //openid
            string ip        = context.Request.UserHostAddress;                                                               //ip
            string notifyUrl = string.Format("http://{0}/WxPayNotify/PayRechargeNotify.aspx", context.Request.Url.Authority); //支付充值通知地址
            string body      = "";                                                                                            //订单内容

            string payReqStr = bllPay.GetBrandWcPayRequest(orderPay.OrderId, orderPay.Total_Fee, appId, mchId, key, openId, ip, notifyUrl, body);

            BllPay.WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <BllPay.WXPayReq>(payReqStr);
            if (string.IsNullOrEmpty(payReqModel.paySign))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "构造支付信息失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                pay_req = payReqModel
            };
            bllUser.ContextResponse(context, apiResp);
        }
Beispiel #21
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //Tolog("进入支付回调");
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Request.InputStream);
                xmlDoc.Save(string.Format("C:\\WXPay\\PayRechargeNotify{0}.xml", DateTime.Now.ToString("yyyyMMddHHmmssfff")));//写入日志

                //全部参数
                Dictionary <string, string> parametersAll = new Dictionary <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);
                    }
                }
                parametersAll = (from entry in parametersAll
                                 orderby entry.Key ascending
                                 select entry).ToDictionary(pair => pair.Key, pair => pair.Value); //全部参数排序
                PayConfig payConfig = bllPay.GetPayConfig();
                if (!bllPay.VerifySignatureWx(parametersAll, payConfig.WXPartnerKey))              //验证签名
                {
                    Tolog("验证签名出错");
                    Response.Write(failXml);
                    return;
                }
                OrderPay orderPay = bllOrder.GetOrderPay(parametersAll["out_trade_no"]);
                if (orderPay == null)
                {
                    Tolog("订单未找到");
                    Response.Write(failXml);
                    return;
                }
                if (orderPay.Status.Equals(1))
                {
                    Tolog("已支付");
                    Response.Write(successXml);
                    return;
                }
                //更新订单状态
                if (parametersAll["return_code"].Equals("SUCCESS") && parametersAll["result_code"].Equals("SUCCESS"))//交易成功
                {
                    string msg = "";
                    orderPay.Trade_No = parametersAll["transaction_id"];
                    if (!bll.PayRechargeTransfers(orderPay, parametersAll["openid"], parametersAll["transaction_id"], out msg))
                    {
                        Tolog(msg);
                        Response.Write(failXml);
                        return;
                    }
                    Response.Write(successXml);
                    return;
                }
                Tolog("返回信息有误");
                Response.Write(failXml);
            }
            catch (Exception ex)
            {
                Tolog("出错了:" + ex.Message);
                Response.Write(failXml);
            }
        }
Beispiel #22
0
        public void ProcessRequest(HttpContext context)
        {
            BLLJIMP.Model.API.User.PayRegisterUser requestUser = bll.ConvertRequestToModel <BLLJIMP.Model.API.User.PayRegisterUser>(new BLLJIMP.Model.API.User.PayRegisterUser());
            string websiteOwner = bll.WebsiteOwner;

            if (context.Session["currWXOpenId"] == null)
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "仅支持微信注册";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (string.IsNullOrWhiteSpace(requestUser.spreadid))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入推荐人编号";
                bll.ContextResponse(context, apiResp);
                return;
            }
            string currWXOpenId = context.Session["currWXOpenId"].ToString();

            if (string.IsNullOrWhiteSpace(requestUser.level.ToString()))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请选择会员级别";
                bll.ContextResponse(context, apiResp);
                return;
            }

            if (string.IsNullOrWhiteSpace(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.PrimaryKeyIncomplete;
                apiResp.msg  = "请输入手机号码";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (!ZentCloud.Common.MyRegex.PhoneNumLogicJudge(requestUser.phone))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "手机号码格式不正确";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (!ZentCloud.Common.MyRegex.IsIDCard(requestUser.idcard))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "身份证号码必须如实填写";
                bll.ContextResponse(context, apiResp);
                return;
            }
            UserLevelConfig levelConfig = bll.QueryUserLevel(websiteOwner, "DistributionOnLine", requestUser.level.ToString());

            if (levelConfig == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (levelConfig.IsDisable == 1)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "会员级别禁止注册";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUser.levelname = levelConfig.LevelString;
            UserInfo spreadUser = spreadUser = bllUser.GetSpreadUser(requestUser.spreadid, websiteOwner);

            if (spreadUser == null)
            {
                apiResp.code = (int)APIErrCode.IsNotFound;
                apiResp.msg  = "推荐人未找到";
                bll.ContextResponse(context, apiResp);
                return;
            }
            requestUser.spreadid = spreadUser.UserID; //推荐人
            UserInfo oldUserInfo = bllUser.GetUserInfoByPhone(requestUser.phone, websiteOwner);

            if (oldUserInfo != null && oldUserInfo.MemberLevel >= 10)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该手机已注册会员";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (oldUserInfo != null && oldUserInfo.MemberLevel > requestUser.level)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该会员有更高级别";
                bll.ContextResponse(context, apiResp);
                return;
            }

            PayConfig payConfig = bllPay.GetPayConfig();

            if (payConfig == null || string.IsNullOrEmpty(payConfig.WXAppId) || string.IsNullOrEmpty(payConfig.WXMCH_ID) || string.IsNullOrEmpty(payConfig.WXPartnerKey))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "该商户微信支付还没有配置";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (oldUserInfo != null)
            {
                requestUser.userid = oldUserInfo.UserID;
            }
            else
            {
                requestUser.userid = string.Format("ZYUser{0}{1}", DateTime.Now.ToString("yyyyMMdd"), Guid.NewGuid().ToString("N").ToUpper());
            }
            requestUser.regIP    = context.Request.UserHostAddress;//ip
            requestUser.password = ZentCloud.Common.Rand.Number(6);

            OrderPay orderPay = new OrderPay();

            orderPay.OrderId      = bll.GetGUID(TransacType.PayRegisterOrder);
            orderPay.InsertDate   = DateTime.Now;
            orderPay.Subject      = "支付注册会员";
            orderPay.Total_Fee    = Convert.ToDecimal(levelConfig.FromHistoryScore);
            orderPay.Type         = "5";
            orderPay.WebsiteOwner = websiteOwner;
            orderPay.UserId       = requestUser.userid;
            orderPay.Ex1          = JsonConvert.SerializeObject(requestUser);
            orderPay.Ex2          = requestUser.phone;
            if (!bll.Add(orderPay))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "生成支付订单失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            string appId     = payConfig.WXAppId;                                                                             //微信AppId
            string mchId     = payConfig.WXMCH_ID;                                                                            //商户号
            string key       = payConfig.WXPartnerKey;                                                                        //api密钥
            string openId    = currWXOpenId;                                                                                  //openid
            string notifyUrl = string.Format("http://{0}/WxPayNotify/PayRegisterNotify.aspx", context.Request.Url.Authority); //支付注册通知地址
            string body      = "";                                                                                            //订单内容

            string payReqStr = bllPay.GetBrandWcPayRequest(orderPay.OrderId, orderPay.Total_Fee, appId, mchId, key, openId, requestUser.regIP, notifyUrl, body);

            BllPay.WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <BllPay.WXPayReq>(payReqStr);
            if (string.IsNullOrEmpty(payReqModel.paySign))
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "构造支付信息失败";
                bll.ContextResponse(context, apiResp);
                return;
            }

            apiResp.code   = (int)APIErrCode.IsSuccess;
            apiResp.status = true;
            apiResp.result = new
            {
                pay_req = payReqModel
            };
            bllUser.ContextResponse(context, apiResp);
        }