Пример #1
0
        /// <summary>
        /// 支付充值
        /// </summary>
        /// <param name="orderPay"></param>
        /// <returns></returns>
        public bool PayRecharge(OrderPay orderPay, string tradeNo)
        {
            string msg = "";

            orderPay.Trade_No = tradeNo;
            return(bll.PayRechargeTransfers(orderPay, "", tradeNo, out msg));
        }
Пример #2
0
        public void ProcessRequest(HttpContext context)
        {
            string   orderId      = context.Request["order_id"];
            string   websiteOwner = bllOrder.WebsiteOwner;
            OrderPay orderPay     = bllOrder.GetColByKey <OrderPay>("OrderId", orderId, "AutoID,Status", websiteOwner: websiteOwner);

            if (orderPay == null)
            {
                apiResp.msg  = "订单未找到";
                apiResp.code = (int)APIErrCode.OperateFail;
            }
            else if (orderPay.Status == 0)
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "订单还未支付";
            }
            else if (orderPay.Status == 1)
            {
                apiResp.status = true;
                apiResp.code   = (int)APIErrCode.IsSuccess;
                apiResp.msg    = "订单支付完成";
            }
            else
            {
                apiResp.code = (int)APIErrCode.OperateFail;
                apiResp.msg  = "订单状态未知";
            }
            bllOrder.ContextResponse(context, apiResp);
        }
Пример #3
0
        public void ProcessRequest(HttpContext context)
        {
            string orderId = context.Request["order_id"];

            if (string.IsNullOrEmpty(orderId))
            {
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.IsNotFound;
                apiResp.msg  = "order_id 为必填项,请检查";
                bllPay.ContextResponse(context, apiResp);
                return;
            }
            OrderPay orderInfo = bllOrder.GetOrderPay(orderId);

            if (orderInfo == null)
            {
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.IsNotFound;
                apiResp.msg  = "订单号不存在";
                bllPay.ContextResponse(context, apiResp);
                return;
            }
            if (orderInfo.UserId != CurrentUserInfo.UserID)
            {
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.IsNotFound;
                apiResp.msg  = "订单号无效";
                bllPay.ContextResponse(context, apiResp);
                return;
            }
            if (orderInfo.Status == 1)
            {
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.IsRepeat;
                apiResp.msg  = "订单已经支付,不需重复支付";
                bllPay.ContextResponse(context, apiResp);
                return;
            }
            RequestWeiXin weixin = new RequestWeiXin();

            weixin.notifyUrl = "http://" + context.Request.Url.Host + "/WxPayNotify/NotifyWeixinPay.aspx";//支付通知地址
            PayConfig payConfig = bllPay.GetPayConfig();

            weixin.appId  = payConfig.WXAppId;
            weixin.mch_Id = payConfig.WXMCH_ID;
            weixin.key    = payConfig.WXPartnerKey;
            weixin.openId = CurrentUserInfo.WXOpenId;
            weixin.ip     = context.Request.UserHostAddress;
            string payReqStr = bllPay.GetBrandWcPayRequest(orderInfo.OrderId, orderInfo.Total_Fee, weixin.appId, weixin.mch_Id, weixin.key, weixin.openId, weixin.ip, weixin.notifyUrl, weixin.body, "APP");

            BllPay.WXPayReq payReqModel = ZentCloud.Common.JSONHelper.JsonToModel <BllPay.WXPayReq>(payReqStr);
            if (!string.IsNullOrEmpty(payReqModel.paySign))
            {
                bllPay.ContextResponse(context, new
                {
                    status  = true,
                    pay_req = payReqModel
                });
            }
            apiResp.code = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
            apiResp.msg  = "出错";
            bllPay.ContextResponse(context, apiResp);
        }
Пример #4
0
 public static void ClearReferences(this OrderPay model)
 {
     model.tb_admin   = null;
     model.tb_balance = null;
     model.tb_device  = null;
     model.tb_member  = null;
     model.tb_order   = null;
 }
Пример #5
0
    public string OffLinePay(string JSon, string from)
    {
        OrderPay bll = new OrderPay();

        OrderPay.ResultOffLinePay result = bll.OffLinePay(AESHelper.Decrypt_android(JSon));
        JavaScriptSerializer      js     = new JavaScriptSerializer();

        return(AESHelper.Encrypt_android(js.Serialize(result)));
    }
Пример #6
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);
        }
Пример #7
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 + "元");
            }
        }
Пример #8
0
        public void ProcessRequest(HttpContext context)
        {
            string cardId = context.Request["card_id"];

            if (string.IsNullOrEmpty(cardId))
            {
                apiResp.msg = "card_id 必传";
                bll.ContextResponse(context, apiResp);
                return;
            }

            if (bll.GetCount <OrderPay>(string.Format(" UserId='{0}' And Status=1 And Type=8 And RelationId='{1}'", CurrentUserInfo.UserID, cardId)) > 0)
            {
                apiResp.msg = "重复申请";
                bll.ContextResponse(context, apiResp);
                return;
            }

            MeifanCard card = bll.GetCard(cardId);

            if (card == null)
            {
                apiResp.msg = "card_id 错误";
                bll.ContextResponse(context, apiResp);
                return;
            }
            OrderPay order = new OrderPay();

            order.WebsiteOwner = bll.WebsiteOwner;
            order.InsertDate   = DateTime.Now;
            order.UserId       = CurrentUserInfo.UserID;
            order.Type         = "8";
            order.OrderId      = bll.GetGUID(BLLJIMP.TransacType.CommAdd);
            order.Total_Fee    = card.Amount + card.ServerAmount;
            order.Subject      = card.CardName;
            order.PayType      = 0;
            order.Status       = 0;
            order.RelationId   = card.CardId;
            order.Ex1          = "0";
            if (bll.Add(order))
            {
                apiResp.status = true;
                apiResp.msg    = "ok";
                apiResp.result = new
                {
                    order_id = order.OrderId
                };
            }
            else
            {
                apiResp.msg = "生成订单失败";
            }
            bll.ContextResponse(context, apiResp);
        }
Пример #9
0
        public void ProcessRequest(HttpContext context)
        {
            string   orderId  = context.Request["id"];
            BllOrder bllOrder = new BllOrder();
            OrderPay orderPay = bllOrder.GetOrderPay(orderId, "1", bllOrder.WebsiteOwner);

            if (orderPay != null && orderPay.Status == 1)
            {
                apiResp.status = true;
            }
            bllOrder.ContextResponse(context, apiResp);
        }
Пример #10
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);
        }
Пример #11
0
        public void TestMethod1()
        {
            // Database.SetInitializer(new MigrateDatabaseToLatestVersion<TicketDbContext,Configuration>());
            BootStrapper.ConfigureDependencies();
            IUnitOfWork           unitOfWorkTicket           = ObjectFactory.GetNamedInstance <IUnitOfWork>(EnumModule.DomesticTicket.ToString());
            IUnitOfWorkRepository unitOfWorkRepositoryticket = ObjectFactory.GetNamedInstance <IUnitOfWorkRepository>(EnumModule.DomesticTicket.ToString());

            Order order = new Order();

            order.OrderId    = "01305201230119290277";
            order.PnrCode    = "HPK3BQ";
            order.OrderMoney = decimal.Parse("1000");
            order.CreateTime = DateTime.Now;

            OrderPay orderPay = new OrderPay();

            orderPay.PayMoney = decimal.Parse("1000");
            order.OrderPay    = orderPay ?? null;


            order.Policy                            = new Policy();
            order.Policy.PolicyPoint                = decimal.Parse("8");
            order.Policy.PlatformCode               = "517";
            order.Policy.PolicyType                 = "1";
            order.Policy.WorkTime                   = new StartAndEndTime();
            order.Policy.WorkTime.StartTime         = "9:00";
            order.Policy.WorkTime.EndTime           = "23:00";
            order.Policy.ReturnTicketTime           = new StartAndEndTime();
            order.Policy.ReturnTicketTime.StartTime = "9:00";
            order.Policy.ReturnTicketTime.EndTime   = "23:00";
            order.Policy.AnnulTicketTime            = new StartAndEndTime();
            order.Policy.AnnulTicketTime.StartTime  = "9:00";
            order.Policy.AnnulTicketTime.EndTime    = "23:00";
            order.Passengers                        = new List <Passenger>();
            order.Passengers.Add(new Passenger {
                PassengerName = "测试", ABFee = decimal.Parse("50"), RQFee = decimal.Parse("120")
            });
            order.OrderLogs = new List <OrderLog>();
            order.OrderLogs.Add(new OrderLog {
                OperationContent = "新订单", OperationPerson = "test1", OperationDatetime = DateTime.Now
            });
            order.SkyWays = new List <SkyWay>();
            order.SkyWays.Add(new SkyWay {
                CarrayCode = "3U", FromCityCode = "CTU", ToCityCode = "PEK", Seat = "F", StartDateTime = DateTime.Parse("2013-12-05 11:15:00.000"), ToDateTime = DateTime.Parse("2013-12-05 11:17:00.000")
            });
            unitOfWorkRepositoryticket.PersistCreationOf(order);
            unitOfWorkTicket.Commit();
        }
Пример #12
0
        /// <summary>
        /// 获取支付订单信息 hx add
        /// </summary>
        /// <param name="orderId"></param>
        /// <returns></returns>
        public dynamic GetOrderPayById(string orderId)
        {
            W_Order  order  = Orm.Single <W_Order>(x => x.OrderId == orderId);
            OrderPay order2 = null;

            if (order != null)
            {
                order2                    = new OrderPay();
                order2.ID                 = order.ID;
                order2.Price              = order.Price;
                order2.OrderId            = order.OrderId;
                order2.OrderPayDetailList = GetOrderPayDetailList(order.ID);
            }

            return(order2);
        }
Пример #13
0
        /// <summary>
        /// 支付升级
        /// </summary>
        /// <param name="orderPay"></param>
        /// <returns></returns>
        public bool PayUpgrade(OrderPay orderPay, string tradeNo)
        {
            string msg = "";

            BLLJIMP.Model.API.User.PayUpgrade payUpgrade = JsonConvert.DeserializeObject <BLLJIMP.Model.API.User.PayUpgrade>(orderPay.Ex1);
            orderPay.Trade_No = tradeNo;
            UserLevelConfig levelConfig = bll.QueryUserLevel(orderPay.WebsiteOwner, "DistributionOnLine", payUpgrade.toLevel.ToString());
            UserInfo        currUser    = bllUser.GetUserInfo(orderPay.UserId, orderPay.WebsiteOwner);

            if (!string.IsNullOrEmpty(levelConfig.CouponId))
            {
                BLLCardCoupon bllCardCoupon = new BLLCardCoupon();
                bllCardCoupon.SendCardCouponsByCurrUserInfo(currUser, levelConfig.CouponId);
            }
            return(bll.PayUpgradeTransfers(orderPay, payUpgrade, "", tradeNo, out msg));
        }
Пример #14
0
 public CommonPayModel(OrderPay model)
 {
     this.ParentId      = model.OrderId;
     this.BalanceId     = model.BalanceId;
     this.MemberId      = model.MemberId;
     this.OriginalPrice = model.OriginalPrice;
     this.BalancePrice  = model.BalancePrice;
     this.Rate          = model.Rate;
     this.RemovePrice   = model.RemovePrice;
     this.Price         = model.Price;
     this.Member        = model.tb_member;
     this.AddTime       = model.AddTime;
     this.Remark        = model.Remark;
     this.Type          = "OrderPay";
     this.PayId         = model.OrderPayId;
     this.State         = model.State;
 }
Пример #15
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 = "支付页生成失败";
            }
        }
Пример #16
0
        static void Main(string[] args)
        {
            Console.WriteLine("Enter client data: ");
            Console.Write("Name: ");
            string clientName = Console.ReadLine();

            Console.Write("Email: ");
            string email = Console.ReadLine();

            Console.Write("Birth date (DD/MM/YYYY): ");
            DateTime birthDate = DateTime.Parse(Console.ReadLine());

            Console.WriteLine("Enter order data: ");
            Console.Write("Status: ");
            OrderStatus status = Enum.Parse <OrderStatus>(Console.ReadLine());

            Client   client = new Client(clientName, email, birthDate);
            OrderPay order  = new OrderPay(DateTime.Now, status, client);

            Console.Write("How many items to this order? ");
            int n = int.Parse(Console.ReadLine());

            for (int i = 1; i <= n; i++)
            {
                Console.WriteLine($"Enter #{i} item data:");
                Console.Write("Product name: ");
                string productName = Console.ReadLine();
                Console.Write("Product price: ");
                double price = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);

                Product product = new Product(productName, price);

                Console.Write("Quantity: ");
                int quantity = int.Parse(Console.ReadLine());

                OrderItem orderItem = new OrderItem(quantity, price, product);

                order.AddItem(orderItem);
            }

            Console.WriteLine();
            Console.WriteLine("ORDER SUMMARY:");
            Console.WriteLine(order);
        }
Пример #17
0
        public OrderPay GetOrderPay()
        {
            OrderPay model = new OrderPay();

            model.OrderId       = ParentId;
            model.BalanceId     = BalanceId;
            model.MemberId      = MemberId;
            model.BalancePrice  = BalancePrice;
            model.OriginalPrice = OriginalPrice;
            model.Rate          = Rate;
            model.RemovePrice   = RemovePrice;
            model.Price         = Price;
            model.tb_member     = Member;
            model.AddTime       = AddTime;
            model.Remark        = Remark;
            model.OrderPayId    = PayId;
            model.State         = State;

            return(model);
        }
Пример #18
0
        /// <summary>
        /// 订单信息
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        private Order GetOrderInfo(OrderPay order)
        {
            Order model = new Order();

            switch (order.Type)
            {
            case "8":
                MeifanCard card = bll.GetCard(order.RelationId);
                if (card != null)
                {
                    model.Title   = card.CardName;
                    model.ImgUrl  = card.CardImg;
                    model.Summary = card.CardNameEn;
                }
                break;

            default:
                break;
            }
            return(model);
        }
Пример #19
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);
        }
Пример #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);
        }
Пример #21
0
    /// <summary>
    /// 查看是否启用微信支付或者支付宝支付
    /// </summary>
    public ResultPayInfo GetPayInfo(string JSon, string version)
    {
        string    disID           = string.Empty;
        string    UserID          = string.Empty;
        string    OrderType       = string.Empty;
        string    ReceiptNo       = string.Empty;
        string    PayPrice        = string.Empty;
        string    PayIDJSon       = string.Empty;
        string    partner         = string.Empty;
        string    seller          = string.Empty;
        string    private_key     = string.Empty;
        string    subject         = string.Empty; //提示内容
        string    GoodsName       = string.Empty; //订单所有商品的名称
        string    OrderNumberJSon = string.Empty; //订单支付流水号的json
        string    OrderNumber     = string.Empty; //订单支付流水号
        string    orderInfo       = string.Empty; //订单信息
        string    OrderCode       = string.Empty; //企业订单号
        DataTable dt_order        = null;


        Hi.BLL.BD_Distributor bll_dis   = new Hi.BLL.BD_Distributor();
        Hi.BLL.BD_Company     bll_comp  = new Hi.BLL.BD_Company();
        Hi.BLL.DIS_Order      bll_order = new Hi.BLL.DIS_Order();
        ResultPayInfo         payinfo   = new ResultPayInfo();
        Common comm = new Common();

        try
        {
            #region//JSon取值
            JsonData JInfo = null;
            JInfo = JsonMapper.ToObject(JSon);
            if (JInfo.Count > 0 && JInfo["UserID"].ToString().Trim() != "" && JInfo["ResellerID"].ToString().Trim() != "" && JInfo["OrderType"].ToString().Trim() != "" &&
                JInfo["PayPrice"].ToString().Trim() != "" && JInfo["PayIDJson"].ToString().Trim() != "")
            {
                UserID = JInfo["UserID"].ToString();

                disID     = JInfo["ResellerID"].ToString();
                OrderType = JInfo["OrderType"].ToString();
                PayPrice  = JInfo["PayPrice"].ToString();
                PayIDJSon = JInfo["PayIDJson"].ToString();
            }
            else
            {
                return(new ResultPayInfo()
                {
                    Result = "F", Description = "参数异常"
                });
            }

            if (OrderType == "0")
            {
                if (JInfo["ReceiptNo"].ToString().Trim() != "")
                {
                    ReceiptNo = JInfo["ReceiptNo"].ToString();
                }
                else
                {
                    return(new ResultPayInfo()
                    {
                        Result = "F", Description = "参数异常"
                    });
                }
            }
            #endregion

            //判断登录信息是否正确
            Hi.Model.SYS_Users user = new Hi.Model.SYS_Users();
            if (!new Common().IsLegitUser(int.Parse(UserID), out user, 0, int.Parse(disID == "" ? "0" : disID)))
            {
                return new ResultPayInfo()
                       {
                           Result = "F", Description = "用户异常"
                       }
            }
            ;
            //判断经销商信息是否异常
            Hi.Model.BD_Distributor dis = bll_dis.GetModel(Convert.ToInt32(disID));
            if (dis == null || dis.dr == 1 || dis.AuditState == 0 || dis.IsEnabled == 0)
            {
                return new ResultPayInfo()
                       {
                           Result = "F", Description = "经销商异常"
                       }
            }
            ;
            //判断经销商对应的核心企业是否异常
            Hi.Model.BD_Company comp = bll_comp.GetModel(dis.CompID);
            if (comp == null || comp.dr == 1 || comp.AuditState == 0 || comp.IsEnabled == 0)
            {
                return new ResultPayInfo()
                       {
                           Result = "F", Description = "核心企业异常"
                       }
            }
            ;
            //判断此订单的信息是否异常,是否可支付
            //根据订单号,取出订单数据放入dt中
            if (OrderType == "0")
            {
                dt_order = bll_order.GetData(ReceiptNo).Tables[0];

                if (Convert.ToInt32(dt_order.Rows[0]["OState"]) == (int)Enums.OrderState.待审核 ||
                    Convert.ToInt32(dt_order.Rows[0]["OState"]) == (int)Enums.OrderState.已作废 ||
                    Convert.ToInt32(dt_order.Rows[0]["PayState"]) == (int)Enums.PayState.已支付)
                {
                    return new ResultPayInfo()
                           {
                               Result = "F", Description = "订单信息异常"
                           }
                }
                ;
            }

            //获取Pay_PayWxandAli表的实体
            Hi.Model.Pay_PayWxandAli payali = Common.GetPayWxandAli(comp.ID);
            if (payali == null || ClsSystem.gnvl(payali.ali_isno, "0") == "0")
            {
                return new ResultPayInfo()
                       {
                           Result = "F", Description = "核心企业无可用的支付宝收款账户"
                       }
            }
            ;
            //对数据库中数据进行解密
            //partner = Common.DesDecrypt(payali.ali_partner, Common.EncryptKey);
            //seller = Common.DesDecrypt(payali.ali_seller_email, Common.EncryptKey);
            //private_key = Common.DesDecrypt(payali.ali_key, Common.EncryptKey);
            partner     = payali.ali_partner;
            seller      = payali.ali_seller_email;
            private_key = payali.ali_RSAkey;
            //订单支付跟预付款充值的提示信息(两种请款下的提示信息是不同的)
            if (OrderType == "0")
            {
                subject = "医站通订单-" + ReceiptNo;
            }
            else
            {
                subject = "医站通预付款充值";
            }
            //订单所有商品明细

            if (OrderType == "0")
            {
                DataTable l = new Hi.BLL.DIS_OrderDetail().GetOrderDe("", " IsNUll(o.dr,0)=0 and o.OrderId=" + Convert.ToInt32(dt_order.Rows[0]["ID"]));
                foreach (DataRow dr in l.Rows)
                {
                    GoodsName += dr["GoodsName"] + ",";
                }
                GoodsName = GoodsName.Substring(0, GoodsName.Length - 1);//去掉最后一个逗号
                if (GoodsName.Length > 15)
                {
                    GoodsName = GoodsName.Substring(0, 10) + "...";
                }
            }

            //获取订单支付时的支付流水号
            if (OrderType == "0")
            {
                OrderNumberJSon = new OrderPay().GetPayID(PayIDJSon);
                //解析返回的订单支付流水号的JSon
                JInfo = JsonMapper.ToObject(OrderNumberJSon);
                if (JInfo["Result"].ToString().Trim() == "F" || JInfo["PayNumb"].ToString().Trim() == "" || JInfo["Result"].ToString().Trim() == "" ||
                    JInfo["OrderCode"].ToString().Trim() == "")
                {
                    return(new ResultPayInfo()
                    {
                        Result = "F", Description = "获取支付流水号异常"
                    });
                }
                else
                {
                    OrderNumber = JInfo["PayNumb"].ToString();
                    OrderCode   = JInfo["OrderCode"].ToString();
                }
            }
            else//钱包充值时的流水号跟企业订单号
            {
                List <string> list = new List <string>();
                list        = Getpayidyfk(user.ID, comp.ID, dis.ID, PayPrice);
                OrderNumber = list[0];
                OrderCode   = list[1];
                if (OrderNumber == "" || OrderCode == "")
                {
                    return new ResultPayInfo()
                           {
                               Result = "F", Description = "获取支付流水号异常"
                           }
                }
                ;
            }
            //创建订单信息
            orderInfo = comm.getOrderInfo(subject, GoodsName, PayPrice, OrderNumber, partner, seller);
            // 对订单做RSA 签名
            //private_key = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANDptrV3pWWdbnr6wT8lPkZ6kbRgsjf8CfXpQNrJyOsmktOaX8DQRh5nd0lSFTtbfeGV4oWXi26bv+1Vt+CfAsYssf+futRj0l6Cxx0psJapK7QEXq3HqjB0tM11M9ym75WFFvTSZs1DysUkRV35g5rXuRtBOWR2sqm9JRAen+29AgMBAAECgYEAzZ+L1xb5c4e960uOE1Hb9tDDQs/9+j6XqzQ3QmFj4Zeo4p9KaeRVb62U6lThUvgdcYDuYWEkuuyPvtEk1/CKb61AvEW69ehwLeDXOy9AzEgQpGFPb1bgJ+kU8YCpgcOGR9G55iVc0ZW7B2iyx111Wvij8pc+A2ZeuByAG1f8PoECQQD7wvCyBJRNb7Gv7iHF+zx2lDxG6LTX2rCAZdr8FyWVjZEBfL6uPI+/2J2AqtFPaLa25+jQc3b74r4wuGKsvxBhAkEA1G4aDQovfB9RO/c4I+NX4mmitpNt66IuqKp0a9pOL/YfpNtr5GBgmK4LMVASqIG74bw5wAV7zJkunlGGPusK3QJBALLiUm/KvS1AXbqpsymfV9jRfvrLQiPVaW/x72ULdVMMIaoy3rGiqmkgGtlfhhWsS5cutMfYIwTamVS4zrP7lkECQFTvDJVoHCI5d0ZNivG2ZR4OdFMhURKkTpl7RX8V0qsUcgR9An9WFWkWNT1rMXqUHGWd100yJBRirqP4Hn+rhDUCQBPVgm4jNd5WjKD0Oj39FmF5D89OviTgQK4xYxYUIfqLBhuGZ3kWDvAmeE6uRgVXjQncv/c68W8pS2huT0syom4=";
            //private_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB";
            string sign = Com.Alipay.RSAFromPkcs8.sign(orderInfo, private_key, "utf-8");
            //string sign = RSAFromPkcs8.sign(orderInfo, private_key, "utf-8");
            sign = HttpUtility.UrlEncode(sign, Encoding.UTF8);
            //返回实体
            // 完整的符合支付宝参数规范的订单信息
            payinfo.Result      = "T";
            payinfo.Description = "返回成功";
            payinfo.InfoString  = orderInfo + "&sign=\"" + sign + "\"&"
                                  + comm.getSignType();
            payinfo.OrderCode = OrderCode;
        }
        catch (Exception ex)
        {
            Common.CatchInfo(ex.Message + ":" + ex.StackTrace, "GetPayInfo:" + JSon);
            return(new ResultPayInfo()
            {
                Result = "F", Description = "参数异常"
            });
        }
        return(payinfo);
    }
Пример #22
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);
        }
Пример #23
0
        public void ProcessRequest(HttpContext context)
        {
            string       data = context.Request["data"];
            RequestModel requestModel;

            try
            {
                requestModel = ZentCloud.Common.JSONHelper.JsonToModel <RequestModel>(context.Request["data"]);
            }
            catch (Exception)
            {
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.IsNotFound;
                apiResp.msg  = "json格式错误,请检查";
                bll.ContextResponse(context, apiResp);
                return;
            }
            if (string.IsNullOrEmpty(requestModel.type))
            {
                apiResp.msg  = "type 为必填项,请检查";
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.IsNotFound;
                bll.ContextResponse(context, apiResp);
                return;
            }
            OrderPay model = new OrderPay();

            model.OrderId      = bll.GetGUID(BLLJIMP.TransacType.CommAdd);
            model.InsertDate   = DateTime.Now;
            model.Type         = requestModel.type;
            model.WebsiteOwner = bll.WebsiteOwner;
            model.UserId       = bll.GetCurrUserID();
            model.Status       = 0;
            model.PayType      = requestModel.pay_type;
            model.Ex1          = bll.GetCurrentUserInfo().TrueName;

            model.BuySmsNumber     = requestModel.sms_number;
            model.BuySmsTotalCount = requestModel.sms_number * requestModel.sms_count;
            model.Total_Fee        = requestModel.sms_number * requestModel.sms_price;
            if (model.Type == "1")
            {
                model.Subject = "账户充值";
            }
            else if (model.Type == "2")
            {
                model.Subject = "购买VIP";
            }
            else if (model.Type == "3")
            {
                model.Subject = "信用金充值";
            }
            else if (model.Type == "7")
            {
                model.Subject = "短信充值";
                model.UserId  = requestModel.userid;
            }

            if (bll.Add(model))
            {
                apiResp.status = true;
                apiResp.msg    = "ok";
                apiResp.result = model.OrderId;
            }
            else
            {
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.IsNotFound;
                apiResp.msg  = "操作出错";
            }
            bll.ContextResponse(context, apiResp);
        }
Пример #24
0
        public void ProcessRequest(HttpContext context)
        {
            string orderId     = context.Request["order_id"];
            string callbackUrl = context.Request["callback_url"];

            if (string.IsNullOrEmpty(orderId))
            {
                apiResp.msg  = "请传入订单编号";
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.IsNotFound;
                bllPay.ContextResponse(context, apiResp);
                return;
            }
            OrderPay orderInfo = bllOrder.GetOrderPay(orderId);

            if (orderInfo == null)
            {
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.IsNotFound;
                apiResp.msg  = "不存在订单";
                bllPay.ContextResponse(context, apiResp);
                return;
            }
            if (orderInfo.UserId != CurrentUserInfo.UserID)
            {
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
                apiResp.msg  = "无效订单";
                bllPay.ContextResponse(context, apiResp);
                return;
            }
            if (orderInfo.Status == 1)
            {
                apiResp.code = (int)BLLJIMP.Enums.APIErrCode.OperateFail;
                apiResp.msg  = "订单已经支付,不需重复支付";
                bllPay.ContextResponse(context, apiResp);
                return;
            }



            RequestAlipay aliPay = new RequestAlipay();

            aliPay.notify_url = "http://" + context.Request.Url.Host + "/Alipay/NotifyAplipay.aspx";//支付通知地址
            PayConfig payConfig = bllPay.GetPayConfig();

            aliPay.order_id            = orderInfo.OrderId;
            aliPay.total_fee           = orderInfo.Total_Fee;
            aliPay.seller_account_name = payConfig.Seller_Account_Name;
            aliPay.partner             = payConfig.Partner;
            aliPay.key = payConfig.PartnerKey;
            try
            {
                string payReqStr = bllPay.GetAliPayRequestMobile(aliPay.order_id, Convert.ToDouble(aliPay.total_fee), aliPay.seller_account_name, aliPay.partner, aliPay.key, aliPay.notify_url, "", callbackUrl, "");
                if (!string.IsNullOrEmpty(payReqStr))
                {
                    apiResp.result = payReqStr;
                    apiResp.status = true;
                }
            }
            catch (Exception ex)
            {
                apiResp.msg = ex.ToString();
            }
            bllPay.ContextResponse(context, apiResp);
        }
Пример #25
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Order = bllOrder.GetOrderPay(Request["oid"]);
                if (Order == null)
                {
                    Response.Write("订单不存在");
                    Response.End();
                }
                if (!Order.Status.Equals(0))
                {
                    Response.Write("订单不是未支付状态");
                    Response.End();
                }

                //支付宝网关地址
                string GATEWAY_NEW = "http://wappaygw.alipay.com/service/rest.htm?";

                ////////////////////////////////////////////调用授权接口alipay.wap.trade.create.direct获取授权码token////////////////////////////////////////////

                //返回格式
                string format = "xml";
                //必填,不需要修改

                //返回格式
                string v = "2.0";
                //必填,不需要修改

                //请求号
                string req_id = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(0, 99999);
                //必填,须保证每次请求都是唯一

                //req_data详细信息

                //服务器异步通知页面路径
                string notify_url = string.Format("http://{0}/alipay/notifyurl.aspx", Request.Url.Host);
                //需http://格式的完整路径,不允许加?id=123这类自定义参数

                //页面跳转同步通知页面路径
                string call_back_url = string.Format("http://{0}/alipay/call_back_url.aspx", Request.Url.Host);
                //需http://格式的完整路径,不允许加?id=123这类自定义参数

                //操作中断返回地址
                string merchant_url = string.Format("http://{0}/alipay/merchanturl.aspx", Request.Url.Host);
                //用户付款中途退出返回商户的地址。需http://格式的完整路径,不允许加?id=123这类自定义参数

                //卖家支付宝帐户
                //string seller_email = "*****@*****.**";

                string seller_email = Config.Seller_Account_Name;
                //必填

                //商户订单号
                string out_trade_no = Order.OrderId;
                //商户网站订单系统中唯一订单号,必填

                //订单名称
                string subject = Order.OrderId;
                //必填

                //付款金额
                string total_fee = Order.Total_Fee.ToString();
                //必填

                //请求业务参数详细
                string req_dataToken = "<direct_trade_create_req><notify_url>" + notify_url + "</notify_url><call_back_url>" + call_back_url + "</call_back_url><seller_account_name>" + seller_email + "</seller_account_name><out_trade_no>" + out_trade_no + "</out_trade_no><subject>" + subject + "</subject><total_fee>" + total_fee + "</total_fee><merchant_url>" + merchant_url + "</merchant_url></direct_trade_create_req>";
                //必填

                //把请求参数打包成数组
                Dictionary <string, string> sParaTempToken = new Dictionary <string, string>();
                sParaTempToken.Add("partner", Config.Partner);
                sParaTempToken.Add("_input_charset", Config.Input_charset.ToLower());
                sParaTempToken.Add("sec_id", Config.Sign_type.ToUpper());
                sParaTempToken.Add("service", "alipay.wap.trade.create.direct");
                sParaTempToken.Add("format", format);
                sParaTempToken.Add("v", v);
                sParaTempToken.Add("req_id", req_id);
                sParaTempToken.Add("req_data", req_dataToken);

                //建立请求
                string sHtmlTextToken = Submit.BuildRequest(GATEWAY_NEW, sParaTempToken);
                //URLDECODE返回的信息
                Encoding code = Encoding.GetEncoding(Config.Input_charset);
                sHtmlTextToken = HttpUtility.UrlDecode(sHtmlTextToken, code);

                //解析远程模拟提交后返回的信息
                Dictionary <string, string> dicHtmlTextToken = Submit.ParseResponse(sHtmlTextToken);

                //获取token
                string request_token = dicHtmlTextToken["request_token"];

                ////////////////////////////////////////////根据授权码token调用交易接口alipay.wap.auth.authAndExecute////////////////////////////////////////////


                //业务详细
                string req_data = "<auth_and_execute_req><request_token>" + request_token + "</request_token></auth_and_execute_req>";
                //必填

                //把请求参数打包成数组
                Dictionary <string, string> sParaTemp = new Dictionary <string, string>();
                sParaTemp.Add("partner", Config.Partner);
                sParaTemp.Add("_input_charset", Config.Input_charset.ToLower());
                sParaTemp.Add("sec_id", Config.Sign_type.ToUpper());
                sParaTemp.Add("service", "alipay.wap.auth.authAndExecute");
                sParaTemp.Add("format", format);
                sParaTemp.Add("v", v);
                sParaTemp.Add("req_data", req_data);

                //建立请求
                string sHtmlText = Submit.BuildRequest(GATEWAY_NEW, sParaTemp, "get", "确认");
                Response.Write(sHtmlText);
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
                Response.End();
            }
        }
Пример #26
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);
        }
Пример #27
0
        public void ProcessRequest(HttpContext context)
        {
            string cardId = context.Request["card_id"];
            var    userId = context.Request["user_id"];

            if (string.IsNullOrEmpty(cardId))
            {
                apiResp.msg = "card_id 必传";
                bll.ContextResponse(context, apiResp);
                return;
            }

            var orderModel = bll.Get <OrderPay>(string.Format(" UserId='{0}' And Status=1 And Type=8 And RelationId='{1}'", userId, cardId));

            if (orderModel != null)
            {
                if (DateTime.Now < DateTime.Parse(orderModel.Ex4))
                {
                    apiResp.msg = "重复订单";
                    bll.ContextResponse(context, apiResp);
                    return;
                }
            }

            MeifanCard card = bll.GetCard(cardId);

            if (card == null)
            {
                apiResp.msg = "card_id 错误";
                bll.ContextResponse(context, apiResp);
                return;
            }
            OrderPay order = new OrderPay();

            order.WebsiteOwner = bll.WebsiteOwner;
            order.InsertDate   = DateTime.Now;
            order.UserId       = userId;
            order.Type         = "8";
            order.OrderId      = bll.GetGUID(BLLJIMP.TransacType.CommAdd);
            order.Total_Fee    = card.Amount + card.ServerAmount;
            order.Subject      = card.CardName;
            order.PayType      = 0;
            order.Status       = 1;
            order.RelationId   = card.CardId;
            order.Ex1          = "0";
            order.Ex5          = "1";
            if (bll.Add(order))
            {
                apiResp.status = true;
                apiResp.msg    = "ok";
                //apiResp.result = new
                //{
                //    order_id = order.OrderId
                //};
            }
            else
            {
                apiResp.msg = "生成订单失败";
            }
            bll.ContextResponse(context, apiResp);
        }
Пример #28
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);
            }
        }
Пример #29
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);
            }
        }
Пример #30
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);
        }