Пример #1
0
        /// <summary>
        /// 讯飞WebAPI语音合成
        /// </summary>
        /// <param name="txt"></param>
        /// <returns></returns>
        public byte[] XunFeiTTS(string txt)
        {
            string     requestURL = "http://api.xfyun.cn/v1/service/v1/tts";
            HttpClient http       = new HttpClient();

            try
            {
                TtsParam ttsParam = new TtsParam
                {
                    auf         = "audio/L16;rate=16000",
                    aue         = "raw",
                    voice_name  = "xiaoyan",
                    speed       = "50",
                    volume      = "50",
                    pitch       = "50",
                    engine_type = "intp65",
                    text_type   = "text"
                };
                var ttsJson  = Base64Helper.ToBase64(SerializeHelper.SerializeObjectToJson(ttsParam));
                var curTime  = EncryptHelper.Get1970ToNowSeconds().ToString();
                var checkSum = EncryptHelper.Md5Encryp(ttsKey + curTime + ttsJson);
                var content  = new StringContent("text=" + HttpUtility.UrlEncode(txt));
                content.Headers.Add("X-CurTime", curTime);
                content.Headers.Add("X-Param", ttsJson);
                content.Headers.Add("X-Appid", appId);
                content.Headers.Add("X-CheckSum", checkSum);
                content.Headers.Add("X-Real-Ip", "127.0.0.1");
                content.Headers.ContentType.MediaType = "application/x-www-form-urlencoded";
                using (var response = http.PostAsync(requestURL, content).Result)
                {
                    if (response.Content.Headers.ContentType.MediaType.Equals("audio/mpeg"))
                    {
                        //合成成功
                        response.EnsureSuccessStatusCode();
                        return(response.Content.ReadAsByteArrayAsync().Result);
                    }
                    else
                    {
                        //合成失败
                        var str    = response.Content.ReadAsStringAsync().Result;
                        var result = SerializeHelper.SerializeJsonToObject <IatResult>(str);
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return(null);
        }
        public async Task <ActionResult> Create([Bind("OrderId, UserId, CreditCardId, MailingAddressId, ShippingAddressId, OrderStatusId, Total")] WizardsOrder order)
        {
            var sessionUserId = UserHelper.GetSessionUserId(this);

            if (ModelState.IsValid)
            {
                var cart = CartHelper.getCartFromSession(this);
                order.UserId        = (int)sessionUserId;
                order.OrderStatusId = 1; //Default is processing
                order.Total         = calculateTotal(cart);
                _context.Add(order);
                await _context.SaveChangesAsync();

                foreach (var item in cart)
                {
                    // Update order details
                    OrderDetail od = new OrderDetail()
                    {
                        OrderId = order.OrderId, GameId = item.Game.GameId, Quantity = item.Quantity, IsDigital = item.IsDigital
                    };
                    _context.Add(od);

                    // Update game quantity
                    if (!item.IsDigital)
                    {
                        var game = _context.Game.Find(item.Game.GameId);
                        game.GameQty = (short)(game.GameQty - item.Quantity);
                        _context.Update(game);
                    }
                }

                await _context.SaveChangesAsync();

                CartHelper.clearCart(this);
                return(RedirectToAction("Index"));
            }

            var cardList = _context.CreditCard.Where(c => c.UserId == sessionUserId);
            await cardList.ForEachAsync(c => c.CreditCardNumber = Base64Helper.decode(c.CreditCardNumber));

            ViewData["UserId"]            = sessionUserId;
            ViewData["CreditCardId"]      = new SelectList(cardList, "CreditCardId", "CreditCardNumber");
            ViewData["MailingAddressId"]  = new SelectList(_context.Address.Include(a => a.AddressType).Where(a => a.AddressTypeId == 1 && a.UserId == sessionUserId), "AddressId", "Street1");
            ViewData["ShippingAddressId"] = new SelectList(_context.Address.Include(a => a.AddressType).Where(a => a.AddressTypeId == 2 && a.UserId == sessionUserId), "AddressId", "Street1");
            ViewData["OrderStatusId"]     = 1; // Default to Processing
            ViewData["Total"]             = calculateTotal(CartHelper.getCartFromSession(this));

            return(View(order));
        }
        protected override async Task <IPrincipal> AuthenticateAsync(string userName, string password, CancellationToken cancellationToken)
        {
            using (var db = new SqlServerContext())
            {
                password = Base64Helper.EncodeBase64(password);
                if (await db.User.AnyAsync(x => x.UserName == userName && x.Password == password, cancellationToken))
                {
                    return(await Task.Run(() => new ClaimsPrincipal(new UserManage(new User {
                        UserName = userName, Password = password
                    })), cancellationToken));
                }
            }

            return(null);
        }
Пример #4
0
 private void btnBase64Bmp_ToBase64_Click(object sender, EventArgs e)
 {
     if (picBoxBase64Bmp.Image == null)
     {
         Base64BmpPicBmp();
     }
     try
     {
         rtxtBase64BmpStr.Text = $"data:image/png;base64,{Base64Helper.ImgToBase64(picBoxBase64Bmp.Image)}";
     }
     catch (Exception ex)
     {
         WinFormHelper.ShowError(ex);
     }
 }
Пример #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            HttpCookie cookie = Request.Cookies["Logged"];

            Response.Write("<img id='loadingImage' width='100' height='100' style='position:absolute;margin-top:-100px;margin-left:-100px;top:50% !important;left:50% !important;' src='../Pictures/loading.gif'/>");
            Response.Write("<div id='content' class='container text-center' style='display:none'>");

            if (cookie["select"] == null)
            {
                Response.Write("<div class='alert alert-warning'><strong>Warning!</strong>You haven't selected any smartphone.</div>");
            }
            else
            {
                string    connectionString = ConfigurationManager.ConnectionStrings["SilentConnection"].ConnectionString;
                DataTable table            = SqlHelper.GetSpecificInformation(connectionString, cookie["select"], "GetContacts");

                if (table.Rows.Count == 0)
                {
                    Response.Write("<div class='alert alert-info'><strong>Info!</strong>You don't have any contacts.</div>");
                }
                else
                {
                    Response.Write("<table class='table table-hover table-responsive'>");
                    Response.Write("<thead><tr><th>Icon</th><th>Name</th><th>Number</th></tr></thead>");
                    Response.Write("<tbody>");
                    foreach (DataRow row in table.Rows)
                    {
                        string picture;
                        if (!row["Picture"].ToString().Equals(""))
                        {
                            picture = Base64Helper.MakeUrlUnsafe(row["Picture"].ToString());
                        }
                        else
                        {
                            picture = "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yH93e2Si5f8Tj/VoAABwBdjrB5AAACFFADVFAGbtABpFAKFFAGFFgDo7K5+/Jzfd2WnMi3UQgJw2OjrwHoB6G2D0zujoF87o6MguAKIHwNrosW4OABCpBqDm+U8d+V+VKALBiuXNFQAAOhVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE1LTA0LTAyVDAxOjI3OjA4KzA4OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNS0wNC0wMlQwMToyNzowOCswODowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDQtMDJUMDE6Mjc6MDgrMDg6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmIyYTE4Yzk1LTMyMWYtNDI3Yy1hNTcxLTgxNTY5YmJkMjAyZDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmRpZDo3ZDNlMDI0Yy1iZDU1LTQxNmItOTkwYi1kMWJkNTY5OGU5NGE8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDo3ZDNlMDI0Yy1iZDU1LTQxNmItOTkwYi1kMWJkNTY5OGU5NGE8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6N2QzZTAyNGMtYmQ1NS00MTZiLTk5MGItZDFiZDU2OThlOTRhPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE1LTA0LTAyVDAxOjI3OjA4KzA4OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmIyYTE4Yzk1LTMyMWYtNDI3Yy1hNTcxLTgxNTY5YmJkMjAyZDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNS0wNC0wMlQwMToyNzowOCswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5EaXNwbGF5PC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI1NjwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4yNTY8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pplp45QAAAAgY0hSTQAAWQkAAFVIAAD3zAAAgFUAAGVwAADU9wAALUgAABScB/kkFAAAD35JREFUeNrs3X2QV9V9x/H37sKyu7AssEQWkKfyIIJUeZBQFiaigoo2KpgxtZFESa022jRN/3CmbWI67XTaaad/NJlJOqmZTp1JOtOmNRPSNlPzoCYamyaKjRqrwSeiRA1QfCAgbP84R7u7LLv7272/+7v33Pdr5g44MrC/7z3n8zv33nPPaerr60NSNTVbAskAkGQASDIAJBkAkgwASQaAJANAkgEgyQCQZABIMgAkGQCSDABJBoAkA0CSASCpOCZYguDDN96Q0sfpBmYB74rHDGAqMAVoB9qAVqAFaAJOAseBY8CbwOvAa8Ah4OV+x4vxz5Te5+/8go3eAEhCK/BL8VgEzAN6YufO2mFg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";
                        }
                        Response.Write("<tr>");
                        Response.Write("<td><img class='img-responsive img-circle' width='50' height='50' src='data:image/png;base64, " + picture + "'/></td>");
                        Response.Write("<td>" + row["ContactName"].ToString() + "</td>");
                        Response.Write("<td>" + row["Number"].ToString() + "</td>");
                        Response.Write("</tr>");
                    }
                    Response.Write("</tbody>");
                    Response.Write("</table>");
                }
            }
            Response.Write("</div>");
        }
Пример #6
0
        public ActionResult JssdkJsonP(string mpid)
        {
            var account = GetAccount(mpid);

            if (account == null)
            {
                LogWriter.Info(string.Format("mpid为“{0}”的jssdk获取失败,原因:公众号不存在", mpid));
                return(Content("公众号不存在"));
            }

            var wxFO = Formula.FormulaHelper.CreateFO <WxFO>();

            var ticket = wxFO.GetJsApiTicket(mpid);
            var url    = Request.QueryString["callurl"] ?? "";

            if (string.IsNullOrEmpty(url))
            {
                url = Request.UrlReferrer == null?Request.Url.ToString() : Request.UrlReferrer.ToString();
            }
            else
            {
                var constr = string.IsNullOrEmpty(Request.QueryString["constr"]) ? "@" : Request.QueryString["constr"];
                url = url.Replace(constr, "&");

                var urlmode = Request.QueryString["urlmode"] ?? "";
                if (urlmode.ToLower().Trim() == "base64")
                {
                    url = Base64Helper.DecodeBase64(url.Replace(" ", "+"));
                }
            }
            string timestamp = Convert.ToString(ConvertDateTimeInt(DateTime.Now));
            string nonceStr  = createNonceStr();
            string rawstring = "jsapi_ticket=" + ticket + "&noncestr=" + nonceStr + "&timestamp=" + timestamp + "&url=" + url;
            string signature = SHA1_Hash(rawstring);

            var callback = Request.QueryString["callback"] ?? "";

            return(Content(string.IsNullOrEmpty(callback) ? "" : string.Format("{0}({1})", callback, new JavaScriptSerializer().Serialize(
                                                                                   new
            {
                appId = account.AppID,
                nonceStr = nonceStr,
                timestamp = timestamp,
                url = url,
                signature = signature,
                rawString = rawstring,
            }))));
        }
Пример #7
0
        public async Task <Manager> GetManagerAsync(string email)
        {
            var id = Base64Helper.ToBase64(email);

            this.builder.Path = $"/api/managers/{id}";

            // TODO: Exception handling; do not pass raw API errors to client.
            using (var response = await this.client.GetAsync(this.builder.Uri))
            {
                response.EnsureSuccessStatusCode();

                var manager = await response.Content.ReadAsAsync <Manager>();

                return(manager);
            }
        }
Пример #8
0
 /// <summary>
 /// 发送入园凭证短信 格式验证
 /// </summary>
 /// <param name="data"></param>
 /// <returns></returns>
 public MessageSendRequest CheckFormatForMessageSendRequest(string data)
 {
     try
     {
         var request = Base64Helper.Base64EncodeToObject <MessageSendRequest>(data);
         if (request.Head == null || request.Body == null || request.Body.OrderInfo == null)
         {
             return(null);
         }
         return(request);
     }
     catch
     {
         return(null);
     }
 }
        public PartialViewResult Preview(string token, string mediaID, string mpId, string messageType)
        {
            //var head =  "http://yiliscrm3.mgcc.com.cn";

            var head  = _webUrlService.GetSiteRootAddress();
            var reurl = Base64Helper.EncodeBase64(head + _matialFileService.PreviewUrl + $"?mediaID={mediaID},{mpId},{messageType}");
            var url   = head + _matialFileService.Auth2Url;

            ViewBag.Url         = url;
            ViewBag.Token       = token;
            ViewBag.Reurl       = reurl;
            ViewBag.MediaID     = mediaID;
            ViewBag.MpId        = mpId;
            ViewBag.MessageType = messageType;
            return(PartialView("_Preview"));
        }
Пример #10
0
 /// <summary>
 /// 验证创建单个产品订单格式是否正确
 /// </summary>
 /// <param name="data"></param>
 /// <returns></returns>
 public OrderSingleCreateRequest CheckFormatForOrderSingleCreateRequest(string data)
 {
     try
     {
         var request = Base64Helper.Base64EncodeToObject <OrderSingleCreateRequest>(data);
         if (request.Head == null || request.Body == null || request.Body.OrderInfo == null)
         {
             return(null);
         }
         return(request);
     }
     catch (Exception ex)
     {
         return(null);
     }
 }
Пример #11
0
        public async Task <IActionResult> GetFile([FromQuery] string baseFileName)
        {
            try
            {
                var fileName = Base64Helper.Decode(baseFileName);
                var file     = await _adminService.ReadFileAsync(baseFileName);

                var result = File(file.FileData, file.ContentType, fileName);
                return(result);
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Can't get file with baseName {0}", baseFileName);
                return(BadRequest(e));
            }
        }
Пример #12
0
 /// <summary>
 /// 验证产品格式是否正确
 /// </summary>
 /// <param name="data"></param>
 /// <returns></returns>
 public ProductQueryRequest CheckFormatForProductQueryRequest(string data)
 {
     try
     {
         var request = Base64Helper.Base64EncodeToObject <ProductQueryRequest>(data);
         if (request.Head == null || request.Body == null)
         {
             return(null);
         }
         return(request);
     }
     catch
     {
         return(null);
     }
 }
Пример #13
0
        public ActionResult JssdkJsonP(string corpid, string accesstoken, string callurl, string callback)
        {
            #region 校验
            var account = GetAccount(corpid);
            if (account == null)
            {
                LogWriter.Info(string.Format("corpid为“{0}”的JSSDK获取失败,原因:企业号不存在", corpid));
                return(Json(new
                {
                    errorcode = "500",
                    errormsg = "企业号不存在",
                }));
            }
            if (GetPassToken(account, accesstoken) == null)
            {
                LogWriter.Info(string.Format("corpid为“{0}”的JSSDK获取失败,原因:accesstoken错误", corpid));
                return(Json(new
                {
                    errorcode = "500",
                    errormsg = "非法访问",
                }));
            }
            #endregion

            var wxFO = Formula.FormulaHelper.CreateFO <WxFO>();

            var ticket = wxFO.GetJsApiTicket(corpid);
            var url    = callurl ?? "";
            url = Base64Helper.DecodeBase64(url.Replace(" ", "+"));
            string timestamp = Convert.ToString(ConvertDateTimeInt(DateTime.Now));
            string nonceStr  = createNonceStr();
            string rawstring = "jsapi_ticket=" + ticket + "&noncestr=" + nonceStr + "&timestamp=" + timestamp + "&url=" + url;
            string signature = SHA1_Hash(rawstring);

            return(Content(string.IsNullOrEmpty(callback) ? "" : string.Format("{0}({1})", callback, new JavaScriptSerializer().Serialize(
                                                                                   new
            {
                errcode = "0",
                errormsg = "ok",
                appId = account.CorpID,
                nonceStr = nonceStr,
                timestamp = timestamp,
                url = url,
                signature = signature,
                rawString = rawstring,
            }))));
        }
        // LAMESPEC: It's not clear from docs what should be happening
        // here if inputCount > InputBlockSize. It just "Converts the
        // specified region of the specified byte array" and that's all.
        public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
        {
            if (m_disposed)
            {
                throw new ObjectDisposedException("TransformBlock");
            }
            if (inputBuffer == null)
            {
                throw new ArgumentNullException("inputBuffer");
            }
            if (outputBuffer == null)
            {
                throw new ArgumentNullException("outputBuffer");
            }
            if (inputCount < 0)
            {
                throw new ArgumentException("inputCount", "< 0");
            }
            if (inputCount > inputBuffer.Length)
            {
                throw new ArgumentException("inputCount", Locale.GetText("Overflow"));
            }
            if (inputOffset < 0)
            {
                throw new ArgumentOutOfRangeException("inputOffset", "< 0");
            }
            // ordered to avoid possible integer overflow
            if (inputOffset > inputBuffer.Length - inputCount)
            {
                throw new ArgumentException("inputOffset", Locale.GetText("Overflow"));
            }
            // ordered to avoid possible integer overflow
            if (outputOffset < 0)
            {
                throw new ArgumentOutOfRangeException("outputOffset", "< 0");
            }
            if (outputOffset > outputBuffer.Length - inputCount)
            {
                throw new ArgumentException("outputOffset", Locale.GetText("Overflow"));
            }
            /// To match MS implementation
            //			if (inputCount != this.InputBlockSize)
            //				throw new CryptographicException (Locale.GetText ("Invalid input length"));

            Base64Helper.TransformBlock(inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
            return(this.OutputBlockSize);
        }
Пример #15
0
        /// <summary>
        /// HttpClient实现Get请求(异步)
        /// </summary>
        public static async Task <ProductResponse> dooGet()
        {
            ProductQueryRequest request = new ProductQueryRequest
            {
                Head = new HeadRequest
                {
                    InvokeTime      = DateTime.Now.ToString("yyyy-MM-dd"),
                    InvokeUser      = "******",
                    ProtocolVersion = "V1"
                },
                Body = new Product
                {
                    Type = 0
                }
            };
            var data         = Base64Helper.ObjectToBase64Encode(request);
            var sign         = Md5Helper.Md5Encrypt32(data, "dc0b52fb-c750-44f2-b5dc-f2577fd98c1b");
            var securityType = "MD5";

            string url = "http://192.168.13.43:60110/api/product?data=" + data + "&sign=" + sign + "&securityType=" + securityType;
            //创建HttpClient(注意传入HttpClientHandler)
            var handler = new HttpClientHandler()
            {
                AutomaticDecompression = DecompressionMethods.GZip
            };

            using (var http = new HttpClient(handler))
            {
                //await异步等待回应
                var response = await http.GetAsync(url);

                //确保HTTP成功状态值
                var httpResponseMessage = response.EnsureSuccessStatusCode();
                if (httpResponseMessage.StatusCode == HttpStatusCode.OK)
                {
                    var ddd = await response.Content.ReadAsStringAsync();

                    var result = JsonHelper.JsonToObject <PageResult>(ddd);
                    return(Base64Helper.Base64EncodeToObject <ProductResponse>(result.Data));
                }
                return(null);

                //await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip)
            }
        }
Пример #16
0
        private void btn_Base64_Decode_Click(object sender, EventArgs e)
        {
            var codeText = rtxt_Base64_Orginal.Text;

            if (string.IsNullOrWhiteSpace(codeText))
            {
                WinFormHelper.ShowWarning("请输入要解码的文本!");
                return;
            }
            try
            {
                rtxt_Base64_Handled.Text = Base64Helper.UnBase64String(codeText);
            }
            catch (Exception ex)
            {
                WinFormHelper.ShowError(ex);
            }
        }
Пример #17
0
        /// <summary>
        /// JSON解析失败
        /// </summary>
        /// <returns></returns>
        public static PageResult JsonParsingFailure()
        {
            var publicResponse = new PublicResponse()
            {
                Head = HeadResult.V1
            };

            publicResponse.Head.Code     = "900001";
            publicResponse.Head.Describe = "JSON解析失败";
            var data = Base64Helper.ObjectToBase64Encode(publicResponse);

            return(new PageResult
            {
                Data = data,
                Sign = "",
                SecurityType = "MD5"
            });
        }
        public async Task <IActionResult> Unsubscribe(string base64Email)
        {
            var decodedId = Base64Helper.Base64Decode(base64Email);

            if (string.IsNullOrWhiteSpace(decodedId))
            {
                return(Problem());
            }

            var subscription = await _unitOfWork.Subscriptions.GetFirstOrDefault(s => s.Email == decodedId);

            subscription.IsSubscribed    = false;
            subscription.UnsubscribeDate = DateTime.UtcNow;

            await _unitOfWork.Save();

            return(Ok());
        }
Пример #19
0
        /// <summary>
        /// 签名错误
        /// </summary>
        /// <returns></returns>
        public static PageResult SignatureError()
        {
            var publicResponse = new PublicResponse()
            {
                Head = HeadResult.V1
            };

            publicResponse.Head.Code     = "900002";
            publicResponse.Head.Describe = "签名错误";
            var data = Base64Helper.ObjectToBase64Encode(publicResponse);

            return(new PageResult
            {
                Data = data,
                Sign = "",
                SecurityType = "MD5"
            });
        }
Пример #20
0
 public ActionResult Download(string src, string contentType)
 {
     if (string.IsNullOrEmpty(src))
     {
         return(new EmptyResult());
     }
     src = Base64Helper.DecodingString(src);
     if (string.IsNullOrEmpty(contentType))
     {
         string text = FileHelper.GetContentType(Path.GetExtension(src));
         if (text.StartsWith("."))
         {
             text = text.Replace(".", "");
         }
         contentType = FileHelper.GetContentType(text);
     }
     return(File(Server.MapPath("~/" + src), contentType));
 }
        public void OnAuthorization(AuthorizationFilterContext context)
        {
            var values = context.HttpContext.Request.Headers["Authorization"];

            if (values.Count == 0)
            {
                context.Result = new UnauthorizedResult();
            }
            else
            {
                var token = Base64Helper.Decode(values[0].Substring(6));
                context.HttpContext.User = new CustomPrincipal {
                    CurrentIdentity = new CustomIdentity {
                        Id = Guid.Parse(token)
                    }
                };
            }
        }
Пример #22
0
    /// <summary>
    /// 验证 Json Web Token
    /// </summary>
    /// <param name="token"></param>
    /// <returns></returns>
    public static bool VerifyJWT(string token)
    {
        if (string.IsNullOrEmpty(token))
        {
            return(false);
        }

        var split = token.Split('.');

        if (split.Length != 3)
        {
            return(false);
        }

        string signature = Base64Helper.EncodeUrl(HS256(split[0], split[1], JwtSecret));

        return(signature == split[2]);
    }
Пример #23
0
        private ReceivedResult getReceiveds_common(String msg_ids, string path)
        {
            String          url    = REPORT_HOST_NAME + path + "?msg_ids=" + msg_ids;
            String          auth   = Base64Helper.GetBase64Encode(this.appKey + ":" + this.masterSecret);
            ResponseWrapper rsp    = this.sendGet(url, auth, null);
            ReceivedResult  result = new ReceivedResult();
            List <ReceivedResult.Received> list = new List <ReceivedResult.Received>();

            Console.WriteLine("recieve content==" + rsp.responseContent);
            if (rsp.responseCode == System.Net.HttpStatusCode.OK)
            {
                list = (List <ReceivedResult.Received>)JsonTool.JsonToObject(rsp.responseContent, list);
                String content = rsp.responseContent;
            }
            result.ResponseResult = rsp;
            result.ReceivedList   = list;
            return(result);
        }
Пример #24
0
        public ActionResult OAuth2UserInfo(string mpid)
        {
            var account = GetAccount(mpid);

            if (account == null)
            {
                LogWriter.Info(string.Format("mpid为“{0}”的认证授权失败,原因:公众号不存在", mpid));
                return(Content("公众号不存在"));
            }
            var reurl = Request.QueryString["reurl"];

            if (string.IsNullOrEmpty(reurl))
            {
                LogWriter.Info(string.Format("mpid为“{0}”的静默授权失败,原因:reurl为空", mpid));
                return(Content("reurl为空"));
            }
            var urlmode = Request.QueryString["urlmode"] ?? "";

            if (account.MpOAuth2WhiteList.Where(c => c.Domain == "*").Count() == 0)
            {
                Uri ru = null;
                try
                {
                    ru = new Uri(urlmode.ToLower().Trim() == "base64" ? Base64Helper.DecodeBase64(reurl.Replace(" ", "+")) : reurl);
                }
                catch (Exception ex)
                {
                    LogWriter.Error(ex, string.Format("mpid为“{0}”的静默授权失败,原因:解析reurl“{1}”错误", mpid, reurl));
                    return(Content("reurl不正确"));
                }
                var redomain = ru.Authority.ToLower();
                if (account.MpOAuth2WhiteList.Where(c => c.Domain == redomain).Count() == 0)
                {
                    LogWriter.Info(string.Format("mpid为“{0}”的静默授权失败,原因:域名{1}不在白名单中", mpid, redomain));
                    return(Content("您的域名未授权调用该接口"));
                }
            }
            string appId  = account.AppID;
            string secret = account.AppSecret;
            var    constr = Request.QueryString["constr"] ?? "";
            var    url    = OAuthApi.GetAuthorizeUrl(appId, $"{Request.Url.Scheme}://{Request.Url.Host}/wechatservice/wxapi/OAuth2UserInfoCallback?mpid=" + mpid + "&reurl=" + reurl + "&constr=" + constr + "&urlmode=" + urlmode, "JeffreySu", OAuthScope.snsapi_userinfo);

            return(Redirect(url));
        }
Пример #25
0
        // client using httpclient, sample for http post with authentication
        private static bool AddNewEarthwatcherHttpClient(string tigUser, string username, string password)
        {
            var     httpClient = new HttpClient();
            dynamic tigmember  = new ExpandoObject();

            tigmember.Name = tigUser;
            var json    = JsonConvert.SerializeObject(tigmember);
            var content = new StringContent(json);

            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            var authstring = Base64Helper.ToBase64String(string.Format("{0}:{1}", username, password));

            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authstring);
            // send the request
            bool isSuccess = httpClient.Post(Server + "earthwatchers", content).IsSuccessStatusCode;

            return(isSuccess);
        }
Пример #26
0
        public async Task <PartialViewResult> BindingOpenID(int id)
        {
            ViewBag.ImageUrl = "";
            if (id != 0)
            {
                var head   = _webUrlService.GetSiteRootAddress();
                var output = await _CustomerServiceOnlineAppService.Get(new EntityDto <int>(id));

                var access = await _mpAccountAppService.Get(new EntityDto <int> {
                    Id = output.MpID
                });

                var reurl = Base64Helper.EncodeBase64(head + $"MpApi/BindOpenID?id={id}");
                ViewBag.BindingUrl = head + _matialFileService.Auth2Url;
                ViewBag.Token      = access.TaskAccessToken;
                ViewBag.Reurl      = reurl;
            }
            return(PartialView("_BindingOpenID"));
        }
Пример #27
0
 public string AuthentificateUserFromPhone([FromBody] UserAuthenticationModel value)
 {
     if (DataChecker.CheckUserCredentials(value))
     {
         string connectionString = ConfigurationManager.ConnectionStrings["SilentConnection"].ConnectionString;
         if (SqlHelper.LogInUser(connectionString, Base64Helper.Decode(value.Username), Base64Helper.Decode(value.Password)))
         {
             return(Base64Helper.Encode("success"));
         }
         else
         {
             return(Base64Helper.Encode("fail"));
         }
     }
     else
     {
         return(Base64Helper.Encode("fail"));
     }
 }
Пример #28
0
        private async Task <IActionResult> AddInputArgument(Guid id, string input, bool isLeftArgument)
        {
            byte[] inputArray = Base64Helper.ConvertBase64String(input);

            if (id == Guid.Empty || inputArray == null)
            {
                return(BadRequest());
            }

            var message = new AddDiffInputMessage {
                Id = id, Input = inputArray, IsLeft = isLeftArgument
            };

            await _serviceBus.PublishAsync(message);

            var uri = Url.RouteUrl("GetDiffResult", new { id });

            return(Accepted(uri));
        }
Пример #29
0
        public ProductResponse GetProduct(ProductQueryRequest request)
        {
            request.Head = RequestHead();
            string url    = _website + "product";
            var    result = PostService(request, url);

            if (!string.IsNullOrEmpty(result.Data))
            {
                return(Base64Helper.Base64EncodeToObject <ProductResponse>(result.Data));
            }
            return(new ProductResponse
            {
                Head = new HeadResponse
                {
                    Code = "900001",
                    Describe = "数据格式不正确"
                }
            });
        }
Пример #30
0
        /// <summary>
        /// 创建单个产品订单
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public OrderSingleCreateResponse SingleCreateOrder(OrderSingleCreateRequest request)
        {
            request.Head = RequestHead();
            string url    = _website + "order/singleCreate";
            var    result = PostService(request, url);

            if (!string.IsNullOrEmpty(result.Data))
            {
                return(Base64Helper.Base64EncodeToObject <OrderSingleCreateResponse>(result.Data));
            }
            return(new OrderSingleCreateResponse
            {
                Head = new HeadResponse
                {
                    Code = "900001",
                    Describe = "数据格式不正确"
                }
            });
        }