Пример #1
0
        public void ProcessRequest(HttpContext context)
        {
            string postString = string.Empty;

            if (System.Web.HttpContext.Current.Request.RequestType == "POST")
            {
                //StreamReader reader = new StreamReader(System.Web.HttpContext.Current.Request.InputStream);
                //string xmlData = reader.ReadToEnd();
                //WechatService.Excute(xmlData);

                using (Stream stream = HttpContext.Current.Request.InputStream)
                {
                    Byte[] postBytes = new Byte[stream.Length];
                    stream.Read(postBytes, 0, (Int32)stream.Length);
                    postString = Encoding.UTF8.GetString(postBytes);
                }

                if (!string.IsNullOrEmpty(postString))
                {
                    WechatService.Excute(postString);
                }
            }
            else
            {
                //微信接入的测试
                WechatService.Auth();
            }
        }
Пример #2
0
        //
        // GET: /Test/
        public ActionResult Index()
        {
            MenuInfo menu  = new MenuInfo("开始训练", MenuInfo.ButtonType.view, "http://wx.zzd123.com/wechat/Calendar");
            MenuInfo menu2 = new MenuInfo("免费体验", new MenuInfo[] {
                new MenuInfo("免费行为测评", MenuInfo.ButtonType.view, "http://wx.zzd123.com/Free/FreeScale"),
                new MenuInfo("免费心理服务", MenuInfo.ButtonType.view, "http://wx.zzd123.com/Free/FreeHeartList")
            });
            //  MenuInfo menu2 = new MenuInfo("行为测评", MenuInfo.ButtonType.view, "http://www.sina.com");
            //MenuInfo relatedInfo = new MenuInfo("相关链接", new MenuInfo[] {
            //    new MenuInfo("公司介绍", MenuInfo.ButtonType.click, "Event_Company"),
            //    new MenuInfo("官方网站", MenuInfo.ButtonType.view, "http://www.iqidi.com"),
            //    new MenuInfo("提点建议", MenuInfo.ButtonType.click, "Event_Suggestion"),
            //    new MenuInfo("联系客服", MenuInfo.ButtonType.click, "Event_Contact"),
            //    new MenuInfo("发邮件", MenuInfo.ButtonType.view, "http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=S31yfX15fn8LOjplKCQm")
            //});

            MenuJson menujson = new MenuJson();

            menujson.button.AddRange(new MenuInfo[] { menu, menu2 });

            string token = AccessTokenService.GetAccessToken();

            string postData = JsonConvert.SerializeObject(menujson);

            ViewBag.x = WechatService.wechatApi("CreateMenu", token, postData);


            return(View());
        }
Пример #3
0
        public ActionResult WxRedirect(string code)
        {
            LoggerHelper.Info("code:" + code);

            string access_token = WechatService.GetWrokAccessToken();

            string redirectUrl = "/#/?openId=null";

            if (code == "" || access_token == "")
            {
                return(Redirect(redirectUrl));
            }

            try
            {
                string url   = "https://" + "qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=" + access_token + "&code=" + code;
                var    token = HttpHelper.Get <WechatUserInfo>(url);

                if (token != null)
                {
                    LoggerHelper.Info("UserInfo:" + JsonHelper.Serialize(token));
                    redirectUrl = "/#/?openId=" + token.UserId;
                }
                return(Redirect(redirectUrl));
            }
            catch (Exception)
            {
                return(Redirect(redirectUrl));
            }
        }
Пример #4
0
        //取未过期的券
        public ResultObj <List <PrivilegeMemberRelationModel> > GetNoneExpirePrivilegeByMemberId(string memberId = "")
        {
            PrivilegeMemberRelationModel privilegeMemberInfo = new PrivilegeMemberRelationModel();

            privilegeMemberInfo.MemberId = memberId;

            IWechat iwechat = new WechatService();

            return(Content(iwechat.GetNoneExpirePrivilegeByMemberId(privilegeMemberInfo)));
        }
Пример #5
0
        public string VerifyCode(string machid = "", string pickcode = "")
        {
            var log = LogManager.GetLogger("FycnApi", "wechat");

            log.Info("pickup:machid:" + machid + "pickcode:" + pickcode);
            RedisHelper redisHelper3 = new RedisHelper(3);

            if (!redisHelper3.KeyExists(pickcode))
            {
                return("NG取货码错误");
            }
            ICommon icommon = new CommonService();

            if (string.IsNullOrEmpty(machid))
            {
                return("NG机器编号错误");
            }
            if (string.IsNullOrEmpty(pickcode))
            {
                return("NG取货码错误");
            }
            int machineCount = icommon.CheckMachineId(machid, "");

            if (machineCount == 0)
            {
                return("NG机器编号不存在");
            }
            IWechat iwechat = new WechatService();
            ClientSalesRelationModel clientSalesRelation = new ClientSalesRelationModel();

            clientSalesRelation.MachineId = machid;
            clientSalesRelation.PickupNo  = pickcode;
            var lstRelation = iwechat.VerifyPickupCode(clientSalesRelation);

            if (lstRelation.Count == 0)
            {
                return("NG取货码不存在");
            }
            if (lstRelation.Count > 1)
            {
                return("NG取货码错误");
            }

            redisHelper3.KeyDelete(pickcode);
            return("OK" + lstRelation[0].WaresName);

            /*
             * var request = Fycn.Utility.HttpContext.Current.Request;
             * int len = (int)request.ContentLength;
             * byte[] b = new byte[len];
             * Fycn.Utility.HttpContext.Current.Request.Body.Read(b, 0, len);
             * string postStr = Encoding.UTF8.GetString(b);
             * log.Info("postStr" + postStr);
             */
        }
Пример #6
0
        //获取符合活动规则的券
        public ResultObj <List <PrivilegeModel> > GetActivityPrivilegeList(string clientId = "", string activityType = "")
        {
            ActivityModel activityInfo = new ActivityModel();

            activityInfo.ClientId     = clientId;
            activityInfo.ActivityType = activityType;

            IWechat iwechat = new WechatService();

            return(Content(iwechat.GetActivityPrivilegeList(activityInfo)));
        }
Пример #7
0
 public JsonResult UpdateCustomer(CustomerDto customer)
 {
     return(ExceptionCatch.Invoke(() =>
     {
         CustomerService.Instance.UpdateCustomer(customer);
         if (!string.IsNullOrEmpty(customer.OpenId))
         {
             var c = CustomerService.Instance.GetCustomer(customer.Id);
             WechatService.SendCustomerMessage(string.Format("问题:{0},回复:{1}", c.Question, customer.Answer), customer.OpenId);
         }
     }));
 }
Пример #8
0
        /// <summary>
        /// 取得会员可领优惠券的次数
        /// </summary>
        /// <param name="memberId"></param>
        /// <param name="clientId"></param>
        /// <returns></returns>
        public ResultObj <int> GetCanTakeTicketCount(string memberId = "", string clientId = "", string principleType = "")
        {
            PrivilegeMemberRelationModel privilegeMemberInfo = new PrivilegeMemberRelationModel();

            privilegeMemberInfo.MemberId      = memberId;
            privilegeMemberInfo.ClientId      = clientId;
            privilegeMemberInfo.PrincipleType = principleType;

            IWechat iwechat = new WechatService();

            return(Content(iwechat.GetCanTakeTicketCount(privilegeMemberInfo)));
        }
Пример #9
0
        //取附近的机器
        public ResultObj <List <MachineLocationModel> > GetMachineLocations(string longitude = "", string latitude = "", string clientId = "", int pageIndex = 1, int pageSize = 10)
        {
            IWechat iwechat = new WechatService();
            MachineLocationModel machineLocations = new MachineLocationModel();

            machineLocations.PageIndex = pageIndex;
            machineLocations.PageSize  = pageSize;
            machineLocations.Longitude = longitude;
            machineLocations.Latitude  = latitude;
            machineLocations.ClientId  = clientId;
            return(Content(iwechat.GetMachineLocations(machineLocations)));
        }
Пример #10
0
 public string sendMessageTest()
 {
     try {
         WechatService s       = new WechatService();
         var           QYToken = s.getQYToken();
         var           result  = s.send(QYToken);
         return(result);
     }
     catch (Exception e) {
         return(e.ToString());
     }
 }
Пример #11
0
        public ResultObj <List <PrivilegeMemberRelationModel> > GetPrivilegeByMemberId(string memberId = "", int pageIndex = 1, int pageSize = 10)
        {
            PrivilegeMemberRelationModel privilegeMemberInfo = new PrivilegeMemberRelationModel();

            privilegeMemberInfo.MemberId  = memberId;
            privilegeMemberInfo.PageIndex = pageIndex;
            privilegeMemberInfo.PageSize  = pageSize;

            IWechat iwechat = new WechatService();

            return(Content(iwechat.GetPrivilegeByMemberId(privilegeMemberInfo)));
        }
Пример #12
0
 public string getQYMemberById(string id)
 {
     try
     {
         WechatService s       = new WechatService();
         var           QYToken = s.getQYToken();
         var           result  = s.getQYMemberById(QYToken, id);
         return(result);
     }
     catch (Exception e)
     {
         return(e.ToString());
     }
 }
Пример #13
0
        public ActionResult Post(PostModel postModel)
        {
            if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, ConfigHelper.WeChatToken))
            {
                return(Content("参数错误!"));
            }
            postModel.Token          = ConfigHelper.WeChatToken;
            postModel.EncodingAESKey = ConfigHelper.WeChatEncodingAESKey;
            postModel.AppId          = ConfigHelper.WeChatAppId;

            var messageHandler = new WechatService(Request.InputStream, postModel); //接收消息

            messageHandler.Execute();                                               //执行微信处理过程
            return(Content(messageHandler.ResponseDocument.ToString()));            //返回xml信息
        }
Пример #14
0
        public ResultObj <List <PrivilegeMemberRelationModel> > GetPrivilegeByMemberId(string memberId = "", int pageIndex = 1, int pageSize = 10)
        {
            PrivilegeMemberRelationModel privilegeMemberInfo = new PrivilegeMemberRelationModel();

            privilegeMemberInfo.MemberId  = memberId;
            privilegeMemberInfo.PageIndex = pageIndex;
            privilegeMemberInfo.PageSize  = pageSize;

            IWechat iwechat    = new WechatService();
            int     totalcount = iwechat.GetPrivilegeCountByMemberId(privilegeMemberInfo);

            var pagination = new Pagination {
                PageSize = pageSize, PageIndex = pageIndex, StartIndex = 0, TotalRows = totalcount, TotalPage = 0
            };

            return(Content(iwechat.GetPrivilegeByMemberId(privilegeMemberInfo), pagination));
        }
Пример #15
0
        //根据商品id取对应的商品或商品组
        public ResultObj <ProductListModel> GetProdcutAndGroupByWaresId(string waresId)
        {
            if (string.IsNullOrEmpty(waresId))
            {
                return(null);
            }
            IWechat iwechat = new WechatService();
            List <ProductListModel> lstProduct = iwechat.GetProdcutAndGroupByWaresId(waresId);

            if (lstProduct.Count != 1)
            {
                return(null);
            }
            else
            {
                return(Content(lstProduct[0]));
            }
        }
Пример #16
0
        public ResultObj <int> GetTicket([FromBody] PrivilegeMemberRelationModel privilegeMemberInfo)
        {
            IWechat iwechat = new WechatService();
            int     count   = iwechat.IsExistTicket(privilegeMemberInfo);

            if (count > 0)
            {
                return(Content(0));
            }
            if (!string.IsNullOrEmpty(privilegeMemberInfo.TimeRule))
            {
                if (privilegeMemberInfo.TimeRule == "1")
                {
                    privilegeMemberInfo.ExpireTime = Convert.ToDateTime(DateTime.Now.ToString("yyyyy-MM-dd") + " 23:59:59");
                }
            }
            privilegeMemberInfo.PrivilegeStatus = 1;
            return(Content(iwechat.PostTicket(privilegeMemberInfo)));
        }
Пример #17
0
        public ResultObj <int> PostFriendShare(string otherOpenId, string myOpenId, string pickupNo)
        {
            ClientSalesRelationModel clientSalesInfo = new ClientSalesRelationModel();

            clientSalesInfo.MemberId = myOpenId;
            clientSalesInfo.PickupNo = pickupNo;
            IWechat iwechat   = new WechatService();
            var     lstResult = iwechat.GetClientSalesByPickNo(otherOpenId, clientSalesInfo);

            if (lstResult.Count == 0)
            {
                return(Content(0));
            }
            if (lstResult[0].MemberId == myOpenId)
            {
                return(Content(2));
            }
            return(Content(iwechat.ExchangeFromFriend(clientSalesInfo)));
        }
Пример #18
0
        public ActionResult CreateMenuold()
        {
            MenuInfo menu  = new MenuInfo("开始训练", MenuInfo.ButtonType.view, "http://wx.zzd123.com/wechat/Calendar");
            MenuInfo menu2 = new MenuInfo("免费体验", new MenuInfo[] {
                new MenuInfo("免费行为测评", MenuInfo.ButtonType.view, "http://wx.zzd123.com/Free/FreeScale"),
                new MenuInfo("免费心理服务", MenuInfo.ButtonType.view, "http://wx.zzd123.com/Free/FreeHeartList")
            });
            MenuJson menujson = new MenuJson();

            menujson.button.AddRange(new MenuInfo[] { menu, menu2 });

            string token = AccessTokenService.GetAccessToken();

            string postData = JsonConvert.SerializeObject(menujson);

            ViewBag.x = WechatService.wechatApi("CreateMenu", token, postData);


            return(View());
        }
Пример #19
0
        public void ProcessRequest(HttpContext context)
        {
            if (System.Web.HttpContext.Current.Request.RequestType == "POST")
            {
                //*********************************自动应答代码块*********************************
                string postString = string.Empty;
                using (Stream stream = HttpContext.Current.Request.InputStream)
                {
                    Byte[] postBytes = new Byte[stream.Length];
                    stream.Read(postBytes, 0, (Int32)stream.Length);
                    //接收的消息为GBK格式
                    postString = Encoding.GetEncoding("GBK").GetString(postBytes);

                    WechatService.Excute(postString);
                }
                //********************************自动应答代码块end*******************************
            }
            else
            {
                //微信接入的测试
                WechatService.Auth();
            }
        }
Пример #20
0
        public string PickupResult(string machid, string pickcode, string name, string price, string trackno, string saletime)
        {
            var log = LogManager.GetLogger("FycnApi", "wechat");

            log.Info("PickupResult:" + machid + "pickcode:" + pickcode + "name:" + name + "price:" + price + "trackno:" + trackno + "saletime:" + saletime);
            IWechat iwechat = new WechatService();
            ClientSalesRelationModel clientSalesRelation = new ClientSalesRelationModel();

            clientSalesRelation.TotalNum  = 1;
            clientSalesRelation.TunnelId  = trackno;
            clientSalesRelation.MachineId = machid;
            clientSalesRelation.PickupNo  = pickcode;
            clientSalesRelation.Remark    = "成功";
            int result = iwechat.PutPayResultByPickupCode(clientSalesRelation);

            if (result == 3)
            {
                return("NG取货码不存在");
            }
            if (result == 0)
            {
                return("NG系统内部错误");
            }

            return("OK");

            /*
             * var request = Fycn.Utility.HttpContext.Current.Request;
             * int len = (int)request.ContentLength;
             * byte[] b = new byte[len];
             * Fycn.Utility.HttpContext.Current.Request.Body.Read(b, 0, len);
             * string postStr = Encoding.UTF8.GetString(b);
             * log.Info("result postStr" + postStr);
             * return "NG 测试";
             */
        }
Пример #21
0
        public byte[] PushLogic(string commandStr, byte[] byteInfo, byte[] data, AsyncSocketUserToken m_asyncSocketUserToken)
        {
            IMachine imachine = new MachineService();

            //验证通过
            switch (commandStr)
            {
            case "40":     //心跳
                int    size40       = 2;
                byte[] returnByte40 = new byte[7];
                returnByte40[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size40).CopyTo(returnByte40, 1); //size
                returnByte40[4] = data[0];

                string machineNum40 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");


                int signal40 = data[13];
                int temp40   = (sbyte)data[14];
                int door40   = data[15];
                MachineHelper.Signature(machineNum40, m_asyncSocketUserToken.ConnectSocket.RemoteEndPoint.ToString());

                returnByte40[5] = 0;

                returnByte40[6] = 238;    //
                                          //验证码生成
                byte   result40Chunk = new byte();
                byte[] finalResult40 = returnByte40.Skip(4).Take(size40).ToArray();
                for (int i = 0; i < finalResult40.Length; i++)
                {
                    result40Chunk ^= finalResult40[i];
                }
                returnByte40[3] = result40Chunk;
                ByteHelper.Encryption(size40, finalResult40.ToArray()).CopyTo(returnByte40, 4);    //加密
                try
                {
                    imachine.UpdateMachineInlineTimeAndIpv4(machineNum40, signal40, temp40, door40, m_asyncSocketUserToken.ConnectSocket.RemoteEndPoint.ToString());
                }
                catch (Exception e)
                {
                    return(returnByte40);
                }
                return(returnByte40);

            case "30":     //申请签到随机码
                int size30 = 19;
                //机器编号
                int    infoSize30   = int.Parse(ByteHelper.GenerateRealityData(byteInfo.Skip(1).Take(2).ToArray(), "intval"));
                string machineNum30 = string.Empty;
                if (infoSize30 < 15)
                {
                    machineNum30 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                }
                else
                {
                    string deviceId = ByteHelper.GenerateRealityData(data.Skip(1).Take(15).ToArray(), "stringval");
                    machineNum30 = imachine.GetMachineIdByDeviceId(deviceId);
                }

                byte[] returnByte30 = new byte[24];
                returnByte30[0] = byteInfo[0];                              //包头;
                ByteHelper.IntToTwoByte(size30).CopyTo(returnByte30, 1);    //size
                returnByte30[4] = data[0];
                ByteHelper.StrToByte(machineNum30).CopyTo(returnByte30, 5); //机器编号

                ByteHelper.StrToByte(MachineHelper.GenerateCode(machineNum30, "code")).CopyTo(returnByte30, 17);


                returnByte30[23] = 238;    //
                                           //验证码生成
                byte   result30Chunk = new byte();
                byte[] finalResult30 = returnByte30.Skip(4).Take(size30).ToArray();
                for (int i = 0; i < finalResult30.Length; i++)
                {
                    result30Chunk ^= finalResult30[i];
                }
                returnByte30[3] = result30Chunk;
                //SendMsg(finalResultA1, myClientSocket);
                ByteHelper.Encryption(size30, finalResult30.ToArray()).CopyTo(returnByte30, 4);    //加密

                return(returnByte30);

            case "41":     //签到
                int size41 = 16;
                //机器编号
                string machineNum41 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                string signCode     = ByteHelper.GenerateRealityData(data.Skip(13).Take(6).ToArray(), "stringval");

                //resultA1 = imachine.UpdateMachineInlineTimeAndIpv4(machineNum41, m_asyncSocketUserToken.ConnectSocket.RemoteEndPoint.ToString() + "-" + m_asyncSocketUserToken.ConnectSocket.LocalEndPoint.ToString());
                m_asyncSocketUserToken.MachineId = machineNum41;
                SocketDictionary.Add(machineNum41, m_asyncSocketUserToken);

                byte[] returnByte41 = new byte[21];
                returnByte41[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size41).CopyTo(returnByte41, 1); //size
                returnByte41[4] = data[0];


                ByteHelper.StrToByte(DateTime.Now.ToString("yyyyMMddHHmmss")).CopyTo(returnByte41, 5);    //机器编号

                if (MachineHelper.IsLegal(machineNum41, signCode, "code"))
                {
                    try
                    {
                        ICommon common41     = new CommonService();
                        int     machineCount = common41.CheckMachineId(machineNum41, "");
                        if (machineCount > 0)
                        {
                            MachineHelper.ClearCode(machineNum41, "code");
                            MachineHelper.Signature(machineNum41, m_asyncSocketUserToken.ConnectSocket.RemoteEndPoint.ToString());
                            returnByte41[19] = 48;
                        }
                        else
                        {
                            returnByte41[19] = 49;
                        }
                    }
                    catch (Exception e)
                    {
                        returnByte41[19] = 50;
                    }
                }
                else
                {
                    returnByte41[19] = 50;
                }

                returnByte41[20] = 238;    //
                                           //验证码生成
                byte   resultA1Chunk = new byte();
                byte[] finalResult41 = returnByte41.Skip(4).Take(size41).ToArray();
                for (int i = 0; i < finalResult41.Length; i++)
                {
                    resultA1Chunk ^= finalResult41[i];
                }
                returnByte41[3] = resultA1Chunk;
                //SendMsg(finalResultA1, myClientSocket);
                ByteHelper.Encryption(size41, finalResult41.ToArray()).CopyTo(returnByte41, 4);    //加密

                return(returnByte41);

            case "43":     //上报出货结果
                int size43 = 2;
                // string machineNum = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                string serialNum = ByteHelper.GenerateRealityData(data.Skip(13).Take(22).ToArray(), "stringval");
                //清除缓存
                MachineHelper.ClearCacheOrder(serialNum);

                byte[] returnByte43 = new byte[7];
                returnByte43[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size43).CopyTo(returnByte43, 1); //size
                returnByte43[4] = data[0];
                string result43  = data[35].ToString();
                int    putResult = 0;
                if (result43 == "48")
                {
                    putResult = imachine.PutPayResultByOrderNo(serialNum, true);
                }
                else
                {
                    putResult = imachine.PutPayResultByOrderNo(serialNum, false);
                }
                if (putResult == 1)
                {
                    returnByte43[5] = 48;
                }
                else if (putResult == 0)
                {
                    returnByte43[5] = 49;
                }
                else
                {
                    returnByte43[5] = 53;
                }
                returnByte43[6] = 238;    //结尾
                                          //验证码生成
                byte   result43Chunk = new byte();
                byte[] finalResult43 = returnByte43.Skip(4).Take(size43).ToArray();
                for (int i = 0; i < finalResult43.Length; i++)
                {
                    result43Chunk ^= finalResult43[i];
                }
                returnByte43[3] = result43Chunk;
                //SendMsg(finalResultA1, myClientSocket);
                ByteHelper.Encryption(size43, finalResult43.ToArray()).CopyTo(returnByte43, 4);    //加密

                return(returnByte43);

            case "4A":     //验证订单是否合法
                int    size4A    = 14;
                string orerNum4A = ByteHelper.GenerateRealityData(data.Skip(13).Take(22).ToArray(), "stringval");

                byte[] returnByte4A = new byte[19];
                returnByte4A[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size4A).CopyTo(returnByte4A, 1); //size
                returnByte4A[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByte4A, 5);

                if (MachineHelper.IsLegalOrder(orerNum4A))     //判断是否为合法订单
                {
                    returnByte4A[17] = 48;
                }
                else
                {
                    returnByte4A[17] = 49;
                }

                returnByte4A[18] = 238;    //结尾
                                           //验证码生成
                byte   result4AChunk = new byte();
                byte[] finalResult4A = returnByte4A.Skip(4).Take(size4A).ToArray();
                for (int i = 0; i < finalResult4A.Length; i++)
                {
                    result4AChunk ^= finalResult4A[i];
                }
                returnByte4A[3] = result4AChunk;
                //SendMsg(finalResultA1, myClientSocket);
                ByteHelper.Encryption(size4A, finalResult4A.ToArray()).CopyTo(returnByte4A, 4);    //加密

                return(returnByte4A);

            case "54":     //上报一键补货结果 (一键补货)

                string machineNum65 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum45 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval
                MachineHelper.ClearCachePush(machineNum65, "54");

                return(new byte[0]);

            case "53":     //上报按货道补货结果

                string machineNum53 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum45 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval
                MachineHelper.ClearCachePush(machineNum53, "53");
                //SendMsg(returnByteA6, myClientSocket);
                return(new byte[0]);

            case "52":     //上报现金设置结果

                string machineNum52 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum45 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval
                MachineHelper.ClearCachePush(machineNum52, "52");
                //SendMsg(returnByteA6, myClientSocket);
                return(new byte[0]);

            case "57":     //上报广告资源拉取结果

                string machineNum57 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum45 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval
                MachineHelper.ClearCachePush(machineNum57, "57");
                //SendMsg(returnByteA6, myClientSocket);
                return(new byte[0]);

            case "65":     // 终端->服务器 一键补货
                int    size65      = 14;
                string machineId65 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");

                byte[] returnByte65 = new byte[19];
                returnByte65[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size65).CopyTo(returnByte65, 1); //size
                returnByte65[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByte65, 5);

                int result = imachine.GetFullfilGood(machineId65);
                try
                {
                    if (result > 0)
                    {
                        returnByte65[17] = 48;
                    }
                    else
                    {
                        returnByte65[17] = 49;
                    }
                }
                catch (Exception e)
                {
                    returnByte65[17] = 49;
                }
                returnByte65[18] = 238;    //结尾
                                           //验证码生成
                byte   result65Chunk = new byte();
                byte[] finalResult65 = returnByte65.Skip(4).Take(size65).ToArray();
                for (int i = 0; i < finalResult65.Length; i++)
                {
                    result65Chunk ^= finalResult65[i];
                }
                returnByte65[3] = result65Chunk;
                //SendMsg(finalResultA1, myClientSocket);
                ByteHelper.Encryption(size65, finalResult65.ToArray()).CopyTo(returnByte65, 4);    //加密

                return(returnByte65);

            case "66":     // 终端->服务器 详细补货
                int    size66       = 14;
                string machineNum66 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");

                byte[] returnByte66 = new byte[19];
                returnByte66[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size66).CopyTo(returnByte66, 1); //size
                returnByte66[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByte66, 5); //机器编号

                byte[] tunnels66   = data.Skip(13).Take(data.Length - 13).ToArray();
                int    loopTimes66 = (tunnels66.Length / 7);

                KeyJsonModel jsonModel66 = new KeyJsonModel();
                jsonModel66.m = machineNum66;
                jsonModel66.t = new List <KeyTunnelModel>();
                for (int i = 0; i < loopTimes66; i++)
                {
                    jsonModel66.t.Add(new KeyTunnelModel()
                    {
                        tid = ByteHelper.GenerateRealityData(data.Skip(13 + i * 7).Take(5).ToArray(), "stringval"),
                        n   = ByteHelper.GenerateRealityData(data.Skip(18 + i * 7).Take(2).ToArray(), "stringval")
                    });
                }
                try
                {
                    int result66 = imachine.GetFullfilGoodByTunnel(jsonModel66);
                    if (result66 > 0)
                    {
                        returnByte66[17] = 48;
                    }
                    else
                    {
                        returnByte66[17] = 49;
                    }
                }
                catch (Exception e)
                {
                    returnByte66[17] = 49;
                }
                returnByte66[18] = 238;
                byte   resultChunk66 = new byte();
                byte[] finalResult66 = returnByte66.Skip(4).Take(size66).ToArray();
                for (int i = 0; i < finalResult66.Length; i++)
                {
                    resultChunk66 ^= finalResult66[i];
                }
                returnByte66[3] = resultChunk66;
                //SendMsg(returnByteA5, myClientSocket);
                ByteHelper.Encryption(size66, finalResult66.ToArray()).CopyTo(returnByte66, 4);    //加密
                return(returnByte66);

            case "67":     // 终端->服务器 补现金价格
                int    size67       = 14;
                string machineNum67 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum48 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval");
                //string tunnelNumA5 = ByteHelper.GenerateRealityData(data.Skip(9).Take(5).ToArray(), "stringval");

                byte[] returnByte67 = new byte[19];
                returnByte67[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size67).CopyTo(returnByte67, 1); //size
                returnByte67[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByte67, 5); //机器编号


                byte[] tunnels67   = data.Skip(13).Take(data.Length - 13).ToArray();
                int    loopTimes67 = (tunnels67.Length / 10);

                List <PriceAndMaxStockModel> lstPrice67 = new List <PriceAndMaxStockModel>();

                for (int i = 0; i < loopTimes67; i++)
                {
                    lstPrice67.Add(new PriceAndMaxStockModel()
                    {
                        tid = ByteHelper.GenerateRealityData(data.Skip(13 + i * 10).Take(5).ToArray(), "stringval"),
                        p1  = (decimal)int.Parse(ByteHelper.GenerateRealityData(data.Skip(18 + i * 10).Take(5).ToArray(), "stringval")) / 100
                    });
                }
                try
                {
                    int result67 = imachine.PostCashPrice(lstPrice67, machineNum67);
                    if (result67 == 1)
                    {
                        returnByte67[17] = 48;
                    }
                    else
                    {
                        returnByte67[17] = 49;
                    }
                }
                catch (Exception e)
                {
                    returnByte67[17] = 49;
                }

                returnByte67[18] = 238;
                byte   resultChunk67 = new byte();
                byte[] finalResult67 = returnByte67.Skip(4).Take(size67).ToArray();
                for (int i = 0; i < finalResult67.Length; i++)
                {
                    resultChunk67 ^= finalResult67[i];
                }
                returnByte67[3] = resultChunk67;
                //SendMsg(returnByteA5, myClientSocket);
                ByteHelper.Encryption(size67, finalResult67.ToArray()).CopyTo(returnByte67, 4);    //加密
                return(returnByte67);

            case "68":     // 终端->服务器 补最大库存
                int    size68       = 14;
                string machineNum68 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");

                byte[] returnByte68 = new byte[19];
                returnByte68[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size68).CopyTo(returnByte68, 1); //size
                returnByte68[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByte68, 5); //机器编号


                byte[] tunnels68   = data.Skip(13).Take(data.Length - 13).ToArray();
                int    loopTimes68 = (tunnels68.Length / 7);

                List <PriceAndMaxStockModel> lstPrice68 = new List <PriceAndMaxStockModel>();

                for (int i = 0; i < loopTimes68; i++)
                {
                    lstPrice68.Add(new PriceAndMaxStockModel()
                    {
                        tid = ByteHelper.GenerateRealityData(data.Skip(13 + i * 7).Take(5).ToArray(), "stringval"),
                        ms  = int.Parse(ByteHelper.GenerateRealityData(data.Skip(18 + i * 7).Take(2).ToArray(), "stringval"))
                    });
                }
                try
                {
                    int result68 = imachine.PostMaxPuts(lstPrice68, machineNum68);
                    if (result68 == 1)
                    {
                        returnByte68[17] = 48;
                    }
                    else
                    {
                        returnByte68[17] = 49;
                    }
                }
                catch (Exception e)
                {
                    returnByte68[17] = 49;
                }
                returnByte68[18] = 238;
                byte   resultChunk68 = new byte();
                byte[] finalResult68 = returnByte68.Skip(4).Take(size68).ToArray();
                for (int i = 0; i < finalResult68.Length; i++)
                {
                    resultChunk68 ^= finalResult68[i];
                }
                returnByte68[3] = resultChunk68;
                //SendMsg(returnByteA5, myClientSocket);
                ByteHelper.Encryption(size68, finalResult68.ToArray()).CopyTo(returnByte68, 4);    //加密
                return(returnByte68);

            case "6B":                    // 终端->服务器 上报现金出货
                int    size6B       = 14; //加密的长度
                string machineNum6B = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum48 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval");
                //string tunnelNumA5 = ByteHelper.GenerateRealityData(data.Skip(9).Take(5).ToArray(), "stringval");

                byte[] returnByte6B = new byte[19];                      //返回的长度
                returnByte6B[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size6B).CopyTo(returnByte6B, 1); //size
                returnByte6B[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByte6B, 5); //机器编号

                string tunnelId = ByteHelper.GenerateRealityData(data.Skip(13).Take(5).ToArray(), "stringval");
                string price    = ByteHelper.GenerateRealityData(data.Skip(18).Take(5).ToArray(), "stringval");


                try
                {
                    CashSaleModel cashInfo = new CashSaleModel();
                    cashInfo.SalesType   = "1";
                    cashInfo.MachineId   = machineNum6B;
                    cashInfo.GoodsId     = tunnelId;
                    cashInfo.SalesPrices = (Convert.ToDouble(price) / 100).ToString("0.00");
                    int result6B = new CashSaleService().PostData(cashInfo);
                    if (result6B == 1)
                    {
                        returnByte6B[17] = 48;
                    }
                    else
                    {
                        returnByte6B[17] = 49;
                    }
                }
                catch (Exception e)
                {
                    returnByte6B[17] = 49;
                }

                returnByte6B[18] = 238;
                byte   resultChunk6B = new byte();
                byte[] finalResult6B = returnByte6B.Skip(4).Take(size6B).ToArray();
                for (int i = 0; i < finalResult6B.Length; i++)
                {
                    resultChunk6B ^= finalResult6B[i];
                }
                returnByte6B[3] = resultChunk6B;
                //SendMsg(returnByteA5, myClientSocket);
                ByteHelper.Encryption(size6B, finalResult6B.ToArray()).CopyTo(returnByte6B, 4);    //加密
                return(returnByte6B);

            case "6C":                    // 终端->服务器 纸币器状态
                int    size6C       = 14; //加密的长度
                string machineNum6C = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum48 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval");
                //string tunnelNumA5 = ByteHelper.GenerateRealityData(data.Skip(9).Take(5).ToArray(), "stringval");

                byte[] returnByte6C = new byte[19];                      //返回的长度
                returnByte6C[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size6C).CopyTo(returnByte6C, 1); //size
                returnByte6C[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByte6C, 5); //机器编号

                string statusCode = ByteHelper.GenerateRealityData(data.Skip(13).Take(2).ToArray(), "stringval");
                //string price = ByteHelper.GenerateRealityData(data.Skip(18).Take(5).ToArray(), "stringval");


                try
                {
                    CashEquipmentModel cashEquipment = new CashEquipmentModel();
                    cashEquipment.MachineId  = machineNum6C;
                    cashEquipment.CashStatus = statusCode;
                    cashEquipment.UpdateType = "cash_status";

                    int result6C = new CashEquipmentService().UpdateData(cashEquipment);
                    if (result6C == 1)
                    {
                        returnByte6C[17] = 48;
                    }
                    else
                    {
                        returnByte6C[17] = 49;
                    }
                }
                catch (Exception e)
                {
                    returnByte6C[17] = 49;
                }

                returnByte6C[18] = 238;
                byte   resultChunk6C = new byte();
                byte[] finalResult6C = returnByte6C.Skip(4).Take(size6C).ToArray();
                for (int i = 0; i < finalResult6C.Length; i++)
                {
                    resultChunk6C ^= finalResult6C[i];
                }
                returnByte6C[3] = resultChunk6C;
                //SendMsg(returnByteA5, myClientSocket);
                ByteHelper.Encryption(size6C, finalResult6C.ToArray()).CopyTo(returnByte6C, 4);    //加密
                return(returnByte6C);

            case "6D":                    // 终端->服务器 纸币器当前存量
                int    size6D       = 14; //加密的长度
                string machineNum6D = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum48 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval");
                //string tunnelNumA5 = ByteHelper.GenerateRealityData(data.Skip(9).Take(5).ToArray(), "stringval");

                byte[] returnByte6D = new byte[19];                      //返回的长度
                returnByte6D[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size6D).CopyTo(returnByte6D, 1); //size
                returnByte6D[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByte6D, 5); //机器编号

                string priceD = ByteHelper.GenerateRealityData(data.Skip(13).Take(10).ToArray(), "stringval");
                //string price = ByteHelper.GenerateRealityData(data.Skip(18).Take(5).ToArray(), "stringval");


                try
                {
                    CashEquipmentModel cashEquipmentD = new CashEquipmentModel();
                    cashEquipmentD.MachineId  = machineNum6D;
                    cashEquipmentD.CashStock  = (Convert.ToInt32(priceD) / 100).ToString();
                    cashEquipmentD.UpdateType = "cash_stock";

                    int result6D = new CashEquipmentService().UpdateData(cashEquipmentD);
                    if (result6D == 1)
                    {
                        returnByte6D[17] = 48;
                    }
                    else
                    {
                        returnByte6D[17] = 49;
                    }
                }
                catch (Exception e)
                {
                    returnByte6D[17] = 49;
                }

                returnByte6D[18] = 238;
                byte   resultChunk6D = new byte();
                byte[] finalResult6D = returnByte6D.Skip(4).Take(size6D).ToArray();
                for (int i = 0; i < finalResult6D.Length; i++)
                {
                    resultChunk6D ^= finalResult6D[i];
                }
                returnByte6D[3] = resultChunk6D;
                //SendMsg(returnByteA5, myClientSocket);
                ByteHelper.Encryption(size6D, finalResult6D.ToArray()).CopyTo(returnByte6D, 4);    //加密
                return(returnByte6D);

            case "6E":                    // 终端->服务器 硬币器状态
                int    size6E       = 14; //加密的长度
                string machineNum6E = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum48 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval");
                //string tunnelNumA5 = ByteHelper.GenerateRealityData(data.Skip(9).Take(5).ToArray(), "stringval");

                byte[] returnByte6E = new byte[19];                      //返回的长度
                returnByte6E[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size6E).CopyTo(returnByte6E, 1); //size
                returnByte6E[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByte6E, 5); //机器编号

                string coinStatusE = ByteHelper.GenerateRealityData(data.Skip(13).Take(2).ToArray(), "stringval");
                //string price = ByteHelper.GenerateRealityData(data.Skip(18).Take(5).ToArray(), "stringval");


                try
                {
                    CashEquipmentModel cashEquipmentE = new CashEquipmentModel();
                    cashEquipmentE.MachineId  = machineNum6E;
                    cashEquipmentE.CoinStatus = coinStatusE;
                    cashEquipmentE.UpdateType = "coin_status";

                    int result6E = new CashEquipmentService().UpdateData(cashEquipmentE);
                    if (result6E == 1)
                    {
                        returnByte6E[17] = 48;
                    }
                    else
                    {
                        returnByte6E[17] = 49;
                    }
                }
                catch (Exception e)
                {
                    returnByte6E[17] = 49;
                }

                returnByte6E[18] = 238;
                byte   resultChunk6E = new byte();
                byte[] finalResult6E = returnByte6E.Skip(4).Take(size6E).ToArray();
                for (int i = 0; i < finalResult6E.Length; i++)
                {
                    resultChunk6E ^= finalResult6E[i];
                }
                returnByte6E[3] = resultChunk6E;
                //SendMsg(returnByteA5, myClientSocket);
                ByteHelper.Encryption(size6E, finalResult6E.ToArray()).CopyTo(returnByte6E, 4);    //加密
                return(returnByte6E);

            case "6F":                    // 终端->服务器 硬币器当前存量
                int    size6F       = 14; //加密的长度
                string machineNum6F = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum48 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval");
                //string tunnelNumA5 = ByteHelper.GenerateRealityData(data.Skip(9).Take(5).ToArray(), "stringval");

                byte[] returnByte6F = new byte[19];                      //返回的长度
                returnByte6F[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size6F).CopyTo(returnByte6F, 1); //size
                returnByte6F[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByte6F, 5); //机器编号

                byte[] datasF     = data.Skip(13).Take(data.Length - 13).ToArray();
                int    loopTimesF = (datasF.Length / 10);

                List <CoinStockModel> lstCoin = new List <CoinStockModel>();

                for (int i = 0; i < loopTimesF; i++)
                {
                    CoinStockModel coinStock = new CoinStockModel();
                    coinStock.Money  = ByteHelper.GenerateRealityData(data.Skip(13 + i * 10).Take(5).ToArray(), "stringval");
                    coinStock.Number = ByteHelper.GenerateRealityData(data.Skip(18 + i * 10).Take(5).ToArray(), "stringval");
                }

                try
                {
                    CashEquipmentModel cashEquipmentF = new CashEquipmentModel();
                    cashEquipmentF.MachineId  = machineNum6F;
                    cashEquipmentF.CoinStock  = JsonHandler.GetJsonStrFromObject(lstCoin, false);
                    cashEquipmentF.UpdateType = "coin_stock";

                    int result6F = new CashEquipmentService().UpdateData(cashEquipmentF);
                    if (result6F == 1)
                    {
                        returnByte6F[17] = 48;
                    }
                    else
                    {
                        returnByte6F[17] = 49;
                    }
                }
                catch (Exception e)
                {
                    returnByte6F[17] = 49;
                }

                returnByte6F[18] = 238;
                byte   resultChunk6F = new byte();
                byte[] finalResult6F = returnByte6F.Skip(4).Take(size6F).ToArray();
                for (int i = 0; i < finalResult6F.Length; i++)
                {
                    resultChunk6F ^= finalResult6F[i];
                }
                returnByte6F[3] = resultChunk6F;
                //SendMsg(returnByteA5, myClientSocket);
                ByteHelper.Encryption(size6F, finalResult6F.ToArray()).CopyTo(returnByte6F, 4);    //加密
                return(returnByte6F);

            case "90":                    // 终端->服务器 上报现金出货
                int    size90       = 14; //加密的长度
                string machineNum90 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum48 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval");
                //string tunnelNumA5 = ByteHelper.GenerateRealityData(data.Skip(9).Take(5).ToArray(), "stringval");

                byte[] returnByte90 = new byte[19];                      //返回的长度
                returnByte90[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(size90).CopyTo(returnByte90, 1); //size
                returnByte90[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByte90, 5); //机器编号

                string tunnelId90 = ByteHelper.GenerateRealityData(data.Skip(13).Take(5).ToArray(), "stringval");
                string price90    = ByteHelper.GenerateRealityData(data.Skip(18).Take(5).ToArray(), "stringval");


                try
                {
                    CashSaleModel cashInfo90 = new CashSaleModel();
                    cashInfo90.SalesType   = "2";
                    cashInfo90.MachineId   = machineNum90;
                    cashInfo90.GoodsId     = tunnelId90;
                    cashInfo90.SalesPrices = (Convert.ToDouble(price90) / 100).ToString("0.00");
                    int result6B = new CashSaleService().PostData(cashInfo90);
                    if (result6B == 1)
                    {
                        returnByte90[17] = 48;
                    }
                    else
                    {
                        returnByte90[17] = 49;
                    }
                }
                catch (Exception e)
                {
                    returnByte90[17] = 49;
                }

                returnByte90[18] = 238;
                byte   resultChunk90 = new byte();
                byte[] finalResult90 = returnByte90.Skip(4).Take(size90).ToArray();
                for (int i = 0; i < finalResult90.Length; i++)
                {
                    resultChunk90 ^= finalResult90[i];
                }
                returnByte90[3] = resultChunk90;
                //SendMsg(returnByteA5, myClientSocket);
                ByteHelper.Encryption(size90, finalResult90.ToArray()).CopyTo(returnByte90, 4);    //加密
                return(returnByte90);

            case "A0":                    // 终端->服务器 取货码验证
                int    sizeA0       = 20; //加密的长度
                string machineNumA0 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                //string serialNum48 = ByteHelper.GenerateRealityData(data.Skip(13).Take(12).ToArray(), "stringval");
                //string tunnelNumA5 = ByteHelper.GenerateRealityData(data.Skip(9).Take(5).ToArray(), "stringval");

                byte[] returnByteA0 = new byte[25];                      //返回的长度
                returnByteA0[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(sizeA0).CopyTo(returnByteA0, 1); //size
                returnByteA0[4] = data[0];
                data.Skip(1).Take(12).ToArray().CopyTo(returnByteA0, 5); //机器编号

                //string tunnelId90 = ByteHelper.GenerateRealityData(data.Skip(13).Take(5).ToArray(), "stringval");
                //string price90 = ByteHelper.GenerateRealityData(data.Skip(18).Take(5).ToArray(), "stringval");
                string pickupCodeA0 = ByteHelper.GenerateRealityData(data.Skip(13).Take(8).ToArray(), "stringval");

                try
                {
                    ClientSalesRelationModel clientSalesInfoA0 = new ClientSalesRelationModel();
                    clientSalesInfoA0.MachineId = machineNumA0;
                    clientSalesInfoA0.PickupNo  = pickupCodeA0;
                    List <ClientSalesRelationModel> lstClientSales = new WechatService().VerifyPickupCode(clientSalesInfoA0);
                    if (lstClientSales.Count == 0)
                    {
                        returnByteA0[23] = 49;     //非法取货
                    }
                    else if (lstClientSales.Count > 1)
                    {
                        returnByteA0[23] = 52;     //其它
                    }
                    else
                    {
                        ClientSalesRelationModel retInfo = lstClientSales[0];
                        if (retInfo.CurrentStatus != 1)
                        {
                            returnByteA0[23] = 51;     //商品售空
                        }
                        else if (retInfo.CurrentStock == 0)
                        {
                            returnByteA0[23] = 51;     //商品售空
                        }
                        else
                        {
                            returnByteA0[23] = 48;
                            ByteHelper.StrToByte(retInfo.TunnelId).CopyTo(returnByteA0, 17);
                            if (retInfo.TotalNum == 0)
                            {
                                ByteHelper.strToAscii("1").CopyTo(returnByteA0, 22);
                            }
                            else
                            {
                                ByteHelper.strToAscii(retInfo.TotalNum.ToString()).CopyTo(returnByteA0, 22);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    returnByteA0[23] = 53;
                }

                returnByteA0[24] = 238;

                byte   resultChunkA0 = new byte();
                byte[] finalResultA0 = returnByteA0.Skip(4).Take(sizeA0).ToArray();
                for (int i = 0; i < finalResultA0.Length; i++)
                {
                    resultChunkA0 ^= finalResultA0[i];
                }

                returnByteA0[3] = resultChunkA0;
                //SendMsg(returnByteA5, myClientSocket);
                ByteHelper.Encryption(sizeA0, finalResultA0.ToArray()).CopyTo(returnByteA0, 4);  //加密

                return(returnByteA0);

            case "A1":                   // 终端->服务器 上报取货码结果
                int    sizeA1       = 2; //加密的长度
                string machineNumA1 = ByteHelper.GenerateRealityData(data.Skip(1).Take(12).ToArray(), "stringval");
                string pickupCodeA1 = ByteHelper.GenerateRealityData(data.Skip(13).Take(8).ToArray(), "stringval");
                string tunnelNumA1  = ByteHelper.GenerateRealityData(data.Skip(21).Take(5).ToArray(), "stringval");
                string totalNumA1   = ByteHelper.GenerateRealityData(data.Skip(26).Take(1).ToArray(), "stringval");


                byte[] returnByteA1 = new byte[7];                       //返回的长度
                returnByteA1[0] = byteInfo[0];                           //包头;
                ByteHelper.IntToTwoByte(sizeA1).CopyTo(returnByteA1, 1); //size
                returnByteA1[4] = data[0];


                try
                {
                    ClientSalesRelationModel clientSalesInfoA1 = new ClientSalesRelationModel();
                    clientSalesInfoA1.MachineId = machineNumA1;
                    clientSalesInfoA1.PickupNo  = pickupCodeA1;
                    clientSalesInfoA1.TunnelId  = tunnelNumA1;
                    clientSalesInfoA1.TotalNum  = int.Parse(totalNumA1);
                    if (data[27] == 48)
                    {
                        clientSalesInfoA1.Remark = "成功";
                    }
                    else if (data[27] == 49)
                    {
                        clientSalesInfoA1.Remark = "失败";
                    }
                    else if (data[27] == 50)
                    {
                        clientSalesInfoA1.Remark = "货道故障";
                    }
                    else
                    {
                        clientSalesInfoA1.Remark = "其它故障";
                    }
                    int resultA1 = new WechatService().PutPayResultByPickupCode(clientSalesInfoA1);
                    if (resultA1 == 0)
                    {
                        returnByteA1[5] = 49;
                    }
                    else
                    {
                        returnByteA1[5] = 48;
                    }
                }
                catch (Exception e)
                {
                    returnByteA1[5] = 49;
                }

                returnByteA1[6] = 238;

                byte   resultChunkA1 = new byte();
                byte[] finalResultA1 = returnByteA1.Skip(4).Take(sizeA1).ToArray();
                for (int i = 0; i < finalResultA1.Length; i++)
                {
                    resultChunkA1 ^= finalResultA1[i];
                }

                returnByteA1[3] = resultChunkA1;
                //SendMsg(returnByteA5, myClientSocket);
                ByteHelper.Encryption(sizeA1, finalResultA1.ToArray()).CopyTo(returnByteA1, 4);    //加密

                return(returnByteA1);
            }
            return(new byte[0]);
        }
Пример #22
0
 public IndexModel(WechatService service)
 {
     _service = service;
 }
Пример #23
0
        public ResultObj <List <ProductTypeModel> > GetProdcutTypeByClientId(string clientId)
        {
            IWechat iwechat = new WechatService();

            return(Content(iwechat.GetProdcutTypeByClientId(clientId)));
        }
Пример #24
0
        public ResultObj <List <ProductListModel> > GetProdcutByTypeAndClient(string typeId = "", string clientId = "")
        {
            IWechat iwechat = new WechatService();

            return(Content(iwechat.GetProdcutByTypeAndClient(typeId, clientId)));
        }
Пример #25
0
        //微信支付
        public ResultObj <PayStateModel> PostDataW(string clientId, string openId, string privilegeIds, string selfChosen, [FromBody] List <ProductPayModel> lstProductPay)
        {
            var log = LogManager.GetLogger("FycnApi", "wechat");

            try
            {
                IPay _ipay = new PayService();
                //移动支付赋值
                WxPayConfig payConfig = _ipay.GenerateConfigModelWByClientId(clientId);
                payConfig.NOTIFY_URL = PathConfig.NotidyAddr + "/Wechat/PostPayResultW"; //结果通知方法
                JsApi    jsApi   = new JsApi();
                PayModel payInfo = new PayModel();
                payInfo.openid = openId;
                //JsApi.payInfo = new PayModel();
                //生成code 根据code取微信支付的openid和access_token
                //jsApi.GetOpenidAndAccessToken(code, payConfig, payInfo, "/wechat.html#/pay?clientId=" + clientId, "");

                PayStateModel payState = new PayStateModel();


                //JSAPI支付预处理

                //string result = HttpService.Get(payInfo.redirect_url);
                //生成交易号
                payInfo.trade_no    = new PayHelper().GeneraterTradeNo();
                payInfo.jsonProduct = clientId;
                //取商品信息


                decimal totalFee     = 0;
                string  productNames = string.Empty;
                List <ProductListModel> lstProduct = new List <ProductListModel>();
                IWechat _iwechat     = new WechatService();
                string  waresId      = string.Empty;
                string  waresGroupId = string.Empty;
                foreach (ProductPayModel productInfo in lstProductPay)
                {
                    waresId = waresId + productInfo.WaresId + ",";
                }

                lstProduct = _iwechat.GetProdcutAndGroupList(waresId.TrimEnd(','), waresGroupId.TrimEnd(','));
                //遍历商品
                foreach (ProductListModel productInfo in lstProduct)
                {
                    var productPay = (from m in lstProductPay
                                      where m.WaresId == productInfo.WaresId
                                      select m).ToList <ProductPayModel>();
                    if (productPay.Count > 0)
                    {
                        totalFee              = totalFee + Convert.ToInt32(productPay[0].Number) * Convert.ToDecimal(productInfo.WaresDiscountUnitPrice == 0 ? productInfo.WaresUnitPrice: productInfo.WaresDiscountUnitPrice);
                        productNames          = productNames + productInfo.WaresName + ",";
                        productPay[0].TradeNo = payInfo.trade_no;
                    }
                }


                payInfo.product_name = productNames.Length > 25 ? productNames.Substring(0, 25) : productNames;

                payState.ProductJson = JsonHandler.GetJsonStrFromObject(lstProductPay, false);
                /*******************优惠券信息**********************/
                PrivilegeMemberRelationModel privilegeInfo = new PrivilegeMemberRelationModel();
                privilegeInfo.ClientId = clientId;
                privilegeInfo.MemberId = openId;
                if (totalFee > 0.01M)
                {
                    List <PrivilegeMemberRelationModel> lstPrivilege = new List <PrivilegeMemberRelationModel>();
                    if (string.IsNullOrEmpty(privilegeIds) && string.IsNullOrEmpty(selfChosen))
                    {
                        lstPrivilege = _iwechat.GetCanUsePrivilege(privilegeInfo, privilegeIds, ref totalFee, lstProductPay);
                    }
                    else if (!string.IsNullOrEmpty(privilegeIds))
                    {
                        lstPrivilege = _iwechat.GetChosenPrivilege(privilegeInfo, privilegeIds, ref totalFee, lstProductPay);
                    }



                    log.Info("ddddd" + lstPrivilege.Count);
                    if (lstPrivilege.Count > 0)
                    {
                        string[] lstStr = lstPrivilege.Select(m => m.Id).ToArray();
                        if (string.IsNullOrEmpty(privilegeIds))
                        {
                            payInfo.jsonProduct = payInfo.jsonProduct + "~" + string.Join(",", lstStr);
                        }
                        else
                        {
                            payInfo.jsonProduct = payInfo.jsonProduct + "~" + privilegeIds;
                        }

                        payState.PrivilegeJson = JsonHandler.GetJsonStrFromObject(lstPrivilege, false);
                    }
                }
                //string total_fee = "1";
                //检测是否给当前页面传递了相关参数

                // 1.先取购买商品的详情返回给用户   并缓存到页面   2.支付成功后跳转到支付结果页并把缓存数据插入到销售记录表
                //若传递了相关参数,则调统一下单接口,获得后续相关接口的入口参数

                // jsApiPay.openid = openid;

                /*
                 * decimal privilegeMoney = 0;
                 * int weixinMoney = 0;
                 * if (lstPrivilege.Count > 0)
                 * {
                 *  if (lstPrivilege[0].Money>0)
                 *  {
                 *      privilegeMoney = lstPrivilege[0].Money;
                 *      weixinMoney = Convert.ToInt32(((totalFee - privilegeMoney) * 100));
                 *  }
                 *  else
                 *  {
                 *      privilegeMoney = lstPrivilege[0].Discount;
                 *      weixinMoney = Convert.ToInt32(((totalFee) * 100)* (privilegeMoney/10));
                 *  }
                 *
                 * }
                 * else
                 * {
                 */
                int weixinMoney = Convert.ToInt32((totalFee) * 100);
                //}

                payInfo.total_fee = (weixinMoney < 0 ? 1 : weixinMoney);
                //payInfo.jsonProduct = JsonHandler.GetJsonStrFromObject(keyJsonInfo, false);
                payState.TotalMoney = (totalFee < 0 ? Convert.ToDecimal(0.01) : totalFee);
                //写入交易中转
                if (payInfo.total_fee == 0)
                {
                    payState.RequestState = "2";
                    payState.RequestData  = "";
                    return(Content(payState));
                }
                RedisHelper helper = new RedisHelper(0);

                helper.StringSet(payInfo.trade_no.Trim(), JsonHandler.GetJsonStrFromObject(lstProductPay, false), new TimeSpan(0, 10, 30));

                // FileHandler.WriteFile("data/", JsApi.payInfo.trade_no + ".wa", JsApi.payInfo.jsonProduct);

                WxPayData unifiedOrderResult = jsApi.GetUnifiedOrderResult(payInfo, payConfig);
                // Log.Write("GetDataW", "step step");
                string wxJsApiParam = jsApi.GetJsApiParameters(payConfig, payInfo);//获取H5调起JS API参数
                payState.RequestState = "1";
                payState.RequestData  = wxJsApiParam;



                return(Content(payState));
            }
            catch (Exception ex)
            {
                PayStateModel payStateError = new PayStateModel();
                payStateError.RequestState = "3";
                payStateError.RequestData  = ex.Message;
                return(Content(payStateError));
            }
            return(Content(new PayStateModel()));
        }
Пример #26
0
        // 微信支付结果
        public string PostPayResultW()
        {
            var log = LogManager.GetLogger("FycnApi", "wechat");

            try
            {
                var    request = Fycn.Utility.HttpContext.Current.Request;
                int    len     = (int)request.ContentLength;
                byte[] b       = new byte[len];
                Fycn.Utility.HttpContext.Current.Request.Body.Read(b, 0, len);
                string      postStr = Encoding.UTF8.GetString(b);
                XmlDocument xmlDoc  = new XmlDocument();
                xmlDoc.LoadXml(postStr);
                // 商户交易号
                XmlNode tradeNoNode = xmlDoc.SelectSingleNode("xml/out_trade_no");

                RedisHelper helper      = new RedisHelper(0);
                string      retProducts = helper.StringGet(tradeNoNode.InnerText);
                if (string.IsNullOrEmpty(retProducts))
                {
                    return("<xml><return_code><![CDATA[FAIL]]></return_code></xml>");
                }

                /*
                 * IMachine _imachine = new MachineService();
                 * if (_imachine.GetCountByTradeNo(tradeNoNode.InnerText) > 0)
                 * {
                 *  return Content(1);
                 * }
                 */


                //支付结果
                XmlNode payResultNode = xmlDoc.SelectSingleNode("xml/result_code");
                if (payResultNode.InnerText.ToUpper() == "SUCCESS")
                {
                    /*******************************放到微信支付通知参数里,因参数只支付最大128个字符长度,所以注释修改*****************************/
                    //XmlNode tunnelNode = xmlDoc.SelectSingleNode("xml/attach");
                    //KeyJsonModel keyJsonModel = JsonHandler.GetObjectFromJson<KeyJsonModel>(tunnelNode.InnerText);
                    XmlNode attachNode  = xmlDoc.SelectSingleNode("xml/attach");
                    string  jsonProduct = attachNode.InnerText;                        //helper.StringGet(tradeNoNode.InnerText);
                    XmlNode mchIdNode   = xmlDoc.SelectSingleNode("xml/mch_id");       // 商户号
                    XmlNode openidNode  = xmlDoc.SelectSingleNode("xml/openid");       //买家唯一标识
                    XmlNode isSubNode   = xmlDoc.SelectSingleNode("xml/is_subscribe"); // 是否为公众号关注者
                    XmlNode timeEndNode = xmlDoc.SelectSingleNode("xml/time_end");     // 是否为公众号关注者
                                                                                       //string jsonProduct = FileHandler.ReadFile("data/" + tradeNoNode.InnerText + ".wa");
                    //log.Info("nnnnnnn" + tradeNoNode.InnerText);
                    //log.Info("aaaaaaa"+retProducts);
                    List <ProductPayModel> lstProductPay = JsonHandler.GetObjectFromJson <List <ProductPayModel> >(retProducts);
                    log.Info("sssss" + JsonHandler.GetJsonStrFromObject(lstProductPay, false));
                    log.Info("mmmmm" + jsonProduct);
                    IWechat _iwechat = new WechatService();
                    int     result   = _iwechat.PostPayResultW(lstProductPay, mchIdNode.InnerText, openidNode.InnerText, isSubNode.InnerText, timeEndNode.InnerText, jsonProduct);
                    if (result > 0)
                    {
                        helper.KeyDelete(tradeNoNode.InnerText);
                    }
                }
                return("<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>");
            }
            catch (Exception ex)
            {
                //log.Info("bbbb" + ex.Message);
                return("<xml><return_code><![CDATA[FAIL]]></return_code></xml>");
            }

            //File.WriteAllText(@"c:\text.txt", postStr);
        }
Пример #27
0
        public ResultObj <PayStateModel> GetUrl(string m, string code, string retBack = "")
        {
            //var log = LogManager.GetLogger("FycnApi", "wechat");
            //log.Info("mmmmmmmmmmmmmmmm:"+m);
            string url = string.Empty;
            //KeyJsonModel keyJsonInfo = PayHelper.AnalizeKey(k);
            IPay          _ipay     = new PayService();
            WxPayConfig   payConfig = _ipay.GenerateConfigModelWByClientId(m);
            PayStateModel payState  = new PayStateModel();

            if (string.IsNullOrEmpty(payConfig.APPID))
            {
                payState.RequestState = "2";
                payState.ProductJson  = "";
                payState.RequestData  = "";
                return(Content(payState));
            }
            PayModel payInfo = new PayModel();

            //JsApi.payInfo = new PayModel();
            payInfo.k = m;
            JsApi  jsApi   = new JsApi();
            string backUrl = "/wechat.html?clientId=" + m;

            if (!string.IsNullOrEmpty(retBack))
            {
                backUrl = backUrl + HttpUtility.UrlDecode(retBack);
            }
            jsApi.GetOpenidAndAccessToken(code, payConfig, payInfo, backUrl, "snsapi_userinfo");

            if (string.IsNullOrEmpty(payInfo.openid))
            {
                payState.RequestState = "0";
                payState.ProductJson  = "";
                payState.RequestData  = payInfo.redirect_url;
                return(Content(payState));
            }
            //根据code 返回access_token
            //string urlAcess = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", payConfig.APPID,payConfig.APPSECRET,code);
            //string jsonResult = HttpService.Get(urlAcess);
            //log.Info("access_token:" + jsonResult);

            //Dictionary<string,string> dicAcess = JsonHandler.GetObjectFromJson<Dictionary<string,string>>(jsonResult);
            string accessToken = payInfo.access_token;//dicAcess["access_token"];
            //取授权用户信息
            string urlUserInfo  = string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN", accessToken, payInfo.openid);
            string jsonUserInfo = HttpService.Get(urlUserInfo);

            payState.RequestState = "1";
            payState.ProductJson  = jsonUserInfo;
            payState.RequestData  = "";
            IWechat           iwechat    = new WechatService();
            WechatMemberModel memberInfo = new WechatMemberModel();

            memberInfo.ClientId = m;
            memberInfo.OpenId   = payInfo.openid;
            List <WechatMemberModel> lstMemberInfo = iwechat.IsExistMember(memberInfo);

            if (lstMemberInfo.Count == 0)
            {
                WechatMemberModel createMemberInfo = JsonHandler.GetObjectFromJson <WechatMemberModel>(jsonUserInfo);
                createMemberInfo.ClientId = m;
                iwechat.CreateMember(createMemberInfo);
            }
            //if(iwechat.IsExistMember(memberInfo))
            //log.Info("test");

            return(Content(payState));
        }
Пример #28
0
        public ResultObj <List <SaleModel> > GetHistorySalesList(string openId, int pageIndex = 0, int pageSize = 15)
        {
            IWechat iwechat = new WechatService();

            return(Content(iwechat.GetHistorySalesList(openId, pageIndex, pageSize)));
        }
Пример #29
0
        public ResultObj <List <ClientSalesRelationModel> > GetWaitingSalesList(string openId)
        {
            IWechat iwechat = new WechatService();

            return(Content(iwechat.GetWaitingSalesList(openId)));
        }