/// <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); }
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); } }
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>"); }
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 + "×tamp=" + 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, })))); }
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); } }
/// <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")); }
/// <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); } }
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)); } }
/// <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); } }
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 + "×tamp=" + 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); }
/// <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) } }
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); } }
/// <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()); }
/// <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" }); }
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) } }; } }
/// <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]); }
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); }
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)); }
// 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); }
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")); }
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")); } }
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)); }
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 = "数据格式不正确" } }); }
/// <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 = "数据格式不正确" } }); }