/// <summary> /// 使用 Native 支付 /// </summary> /// <param name="productId"></param> /// <param name="hc"></param> /// <returns></returns> public async Task <IActionResult> NativePayCode(int productId, int hc) { var products = ProductModel.GetFakeProductList(); var product = products.FirstOrDefault(z => z.Id == productId); if (product == null || product.GetHashCode() != hc) { return(Content("商品信息不存在,或非法进入!2004")); } //使用 Native 支付,输出二维码并展示 MemoryStream fileStream = null;//输出图片的URL var price = (int)(product.Price * 100); var name = product.Name + " - 微信支付 V3 - Native 支付"; var sp_billno = string.Format("{0}{1}{2}", TenPayV3Info.MchId /*10位*/, SystemTime.Now.ToString("yyyyMMddHHmmss"), TenPayV3Util.BuildRandomStr(6)); var notifyUrl = TenPayV3Info.TenPayV3Notify.Replace("/TenpayV3/", "/TenpayRealV3/"); TransactionsRequestData requestData = new(TenPayV3Info.AppId, TenPayV3Info.MchId, name, sp_billno, new TenpayDateTime(DateTime.Now.AddHours(1)), null, notifyUrl, null, new() { currency = "CNY", total = price }, null, null, null, null); BasePayApis basePayApis = new BasePayApis(); var result = await basePayApis.NativeAsync(requestData); //进行安全签名验证 if (result.VerifySignSuccess == true) { fileStream = QrCodeHelper.GerQrCodeStream(result.code_url); } else { fileStream = QrCodeHelper.GetTextImageStream("Native Pay 未能通过签名验证,无法显示二维码"); } return(File(fileStream, "image/png")); }
public ActionResult GetFileTest() { IAopClient client = new DefaultAopClient("https://openapi.alipaydev.com/gateway.do", "2016101300673467", "MIIEogIBAAKCAQEAgV46jh5KmqbMbOFuFBQxnN6f0OngDpSr+Jkphwd7L6zC7N4yB0vF3EoLj/ahrgCEwTFy6oJz+tRif0hlt41KSMJCgJhiM/axrzyzDL7kGF0/ISwy5fZec8n5TGoS5cwNQ5koPO+ZsqGWd8rB7xIgpZ12APCwghUT1yDvxrAUEj78KBUhZfZTxRPZI5coat/fnVkC0EUR1DNzRjps3mDjleLb4g9fRgAxr/y8aUViOcnDZajZyA9RqZtRPWJOk80+rDGXV2/Z7r0EFokDe448PiV0bOK4Ggmmz+ADAsOvrZoGVUcfqo+1jr0KLOOSKdp9Bs6ft84tO3QMGMgFOqH8vwIDAQABAoIBABWd8DzlNOQosQoUlTdHtI6Y6K2ZFvZ4w0+0ECtfBaeOv7ei3Us4zyQjP1FcDeIsdgJuR9yF1el46ciJCW4lbt8/jqs8S1SRiVlV1DlyAF1N34mkgBDLHTdN7ZlmNCgv85tzETU1eEJQG/uCZuuS5N+nsxsvHN9vtDQDbe2OaJwvqmgxjqHvCLbP9v9U41aGyCveYFmnfEM/+2xufRMt9BzpE867ujmFOKyfqRj8fRHER2dlAGpLz9G2gOL5Eo0ve8KVxfFU3U93HRMCp6Yso0haM7nE0aNgYgl+gWMK+WdPOe/6f5MLVRyn9ePJWt2BIeEq2moZuuosE7B/QDID4PkCgYEA2Hqw4QU6/Z/u4Wl7cwgkdBTtZyGpXwCwjsnrFBqKHlJUowyl9HRqG1o7mqbGhS3iOc2UHA+BhNpRxYy0nl4vQUYzWWfkhq/PvYnuD2TzB3ybGd04iu/mY8hzM9VlsT4ojA3uL3QkO6I1pkLh9OyFglctvIs8KDJo4TP7a5T/6UUCgYEAmPxWCttT7O3vjlZQqjOr854l5Kn1xYKxF8PGaqfzHq79vHkhfNYiY/8cqKcJlJh8F+uG5Q6lRIiihwDuo+45MKmKL9ZHQpgBk9SKztpbflK/BR6UAXH/aloMr7j3IBFoJP7AiBpMtWsW6VTtJOwS9DoehkCN4bEZniDVF9o6tDMCgYBxA6xv7TEc02/8kfr21NtjFsHRw4sOo+eIw/VL64cLyWOSM7o34sa6POM9G7AsOwYNszuNYrL1Tpy+C3UH8Jeu9h08obZ2cjZ79xQnSUZvNCgs2ob4UcHveehauR975r14UJV2hKWd1FM511TrbsdMgoLIGdBwE9EZMPAi/AiWGQKBgHyNE9AK+KzwmhQcGdg38UqJ+vfLl5iR6nQao7O5wKm+dj23sJfeDmmzDTYRqC8eZglja5OY9NxzET8wdxlnnZAMt8Byh9mjv8UHSWtXQx35aCNW3dC/at6/KYz23dtx0IQuE7m7D7Cz2xdkWR2yRUwo9Sj/7YNNmDmxKUweE6UZAoGAPAkO10ddoGpNZ1VsIQPfYx/zn9UpIvax9HDkMYkAxMQdmG3h/yLH3x4c6QkytQE2VcLafQRAKc9il9WlgzUoOrzvO3W95XIck5dq16Re5ZZJCzc4jYnUmJ79AG0gJ3GDRBRWFpp/AxJWlMx7nMyNchj9kGQghgdVehWdV/eHmGM=", "json", "1.0", "RSA2", "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4PO7TRZraDCfHVc+xh6xO3pqthcju3GEd/V0bI+v+GU7BWjdNfQhZmqgCVmGFERf8CQFtX5IQk1+FlH3kwimwyl/TM0R+GwJxl8mIkBn6OSCR+WLMfhiYR9J/vCmUlzur9ByB2VuQk/QWAKFMsVUwhUaWNPWxCEN4nBlmgiss8vDgm+npNBfUJoiT/d/0SW2/jJEzFNWjT0P+MB/BKFCXHlW+2eU12uUZHblZ2yw0pDVnP6jUVd5Y4wrtb4TKrLWxgnCaiki4AsuD9AjTMD4kQ33+Dln9JYCyEyhLRDLWldJs9dw+arL95IkUzvfhAf1CWZo0TYBwlBUom6wmzFbewIDAQAB", "GBK", false); //"2019082766434970", // "MIIEpQIBAAKCAQEAsdm9hrmwgGt3FsiUFDr4wZMWMxLXt5mvJUNBMJacYyxbkCkXu+PNk+1ItN6EFdbIjoqLRlKXT4nGZmcSs7RhbWlDSG4Qd/PaAVZmtjEKiNEwCBIoQ2LyhCGuD5c6bA2K1e/HkgEhXnHPDlCJXf0BrkavPaOHYxG3iCQEXRDxGfDjaK3DSu1vPLEqxsMqPDieTDc81pXGQZeH7cW5iGIo4gX0ac+Bmc9vRz5uUbsfkitTvyx49tO9ROGp5XhlrmqMuslFbYpvx8KNcCr+eVVcaHPOpUXRCHXECBpF+jD0ZvMRg5f43dTaOiXtSdMayfeV2BVSN5vkPYUoNPp8amoVFQIDAQABAoIBAATWrrBWpvWndtL43AZ84D2r+cOj9Jh7Jue1n7Vps5GDKG6Qn6Ot++7VWtAI6cEKWeR+4nEkWBeC4RHyJfEbrDbk0T7MN8h7que0aRD13pqATnU5wTysGXr8y5aC/8TmzWsqndxcCYNfR0nVaRdUhdIu/B+KLmnElqCukivSBS02c9o39nNY2WsxTVabKUaoso7IBmM8dFdEBY7AjlEJQfPBUQldTllm8uRXcKItaHh7/WYQ4MeAf1612eao5LKVR9N+XkDEIz+wys48W58bT/McruvIPjLI3S6MLG6loo34czH7YDbLLtarAUaPGs6YFTRXE2s0+eNrCWHRRrMdmAECgYEA7tmsESQwaEOhu4xPYK4qYqVFVSV8Ve2NP6hvr9fQBlgilshBpVwR0MX41TlFG76qdkBSStky333AoNIf2OzjpZNBA0rAVfnHY3tqJwzeJfsOYUmniY6nepBdorgh94b8DdaeurEre7vwqvFMTBGwmDsR4oIOidY49UiSQ8d+ggECgYEAvp7Tp6ApmyO+PI7yujfE1VsNTeHLiVnf87xYnMW87EOjyl2XqiycspBxiVtcy7PZnQVYaFqcAMf1cYb0ti6BiCNXMOMg0eWFpUknYHllsB7pXu7n8Aheu0QkKRlFzkTBlFcs5yRG7V/vfP0DPL53jI54xj8LHS69FIF9ikazaxUCgYEA7hpogZ4F86qYLBKvfr2g2z3OZBc+X5q0WGVdEXqekfSCZrWzW1jxGaKBcG3rCsGDxOZSIvNq14jQ4oEV5nYgagrloJaALjUWI4IATHVzb4Fa0HlQXryrEG+iKHhOxCb4VgNBsPK1Wl/8hyyM1rg7x0X7ikYEoDvCBCMYTCEvaAECgYEAsaCzPoqi+qxOA4R5b0m0o9RbC24TCoSzih7CvCQPLmLBaDvarnsv8b1j70kxqaiIaienAGce5CNw9j96HaIslj3IbAfad31YEnOeu+mj9oB3mz0o6KYEEKEoyRuBzvqHIMIzV5iYd25kbqYetCYQpOvGY4YvxxvcmhUodQf4/RkCgYEA2SM3mgOz+jaBs96JVtTeLeEFIaKmnceD8u+wuuVfulY2aDDkEwYPfHXBqu4EqZjpcDg2l2EBsLRy7Ot7K2EaGJV0s7H1AP/13kziKCl9WwDoDg4Dk7ZRzj378YFehX4b9T3SQ36WMkgFHB9zOcRP5Rf7HO4inN6UqILHSTuTOY4=", // "json", // "1.0", 2088631146114221 // "RSA2", // "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA05z4aIvz0V9DyE/YS72CuCVbb9ncn5EJHGijdQ+qokDXR1e0SNIbZeitNKUL1bfqapjYIDIPON49VHtPFBWz2osSITsv9+lIQUhb/nBvTAhLL2Yebx6/NPC3a+meqm5e53Fu8W6WYvpQGI7zcGMiJaDs19xZHyTGJf0dTVn7+r2/XWA37801W8rADnikIyKm4gu1AiWWtpuVy+bimc6fcFq5dHOnHGlcK+kx+Bm4yRN3aDE8kG2EszLV850KaZwvHlUGdiW3mVixpfbQJV8ei2n0HIwLVGVvt1hjwNGgvrNAuBBc2ACAkk45gg77+pTiHR1XzxyjiXEelGUfFN09wQIDAQAB", // "GBK", false); AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest(); request.BizContent = "{" + "\"out_trade_no\":\"201523423420101001\"," + "\"seller_id\":\"2088102179325219\"," + "\"total_amount\":0.1," + "\"subject\":\"Iphone6 16G\"," + "\"timeout_express\":\"90m\"," + "\"qr_code_timeout_express\":\"90m\"" + " }"; AlipayTradePrecreateResponse response = client.Execute(request); ViewBag.Src = response.QrCode; return(File(QrCodeHelper.GenQrCode(response.QrCode, 200).ToArray(), @"image/jpeg")); }
public ActionResult GetFile() { IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", "2019082766434970", "MIIEpQIBAAKCAQEAsdm9hrmwgGt3FsiUFDr4wZMWMxLXt5mvJUNBMJacYyxbkCkXu+PNk+1ItN6EFdbIjoqLRlKXT4nGZmcSs7RhbWlDSG4Qd/PaAVZmtjEKiNEwCBIoQ2LyhCGuD5c6bA2K1e/HkgEhXnHPDlCJXf0BrkavPaOHYxG3iCQEXRDxGfDjaK3DSu1vPLEqxsMqPDieTDc81pXGQZeH7cW5iGIo4gX0ac+Bmc9vRz5uUbsfkitTvyx49tO9ROGp5XhlrmqMuslFbYpvx8KNcCr+eVVcaHPOpUXRCHXECBpF+jD0ZvMRg5f43dTaOiXtSdMayfeV2BVSN5vkPYUoNPp8amoVFQIDAQABAoIBAATWrrBWpvWndtL43AZ84D2r+cOj9Jh7Jue1n7Vps5GDKG6Qn6Ot++7VWtAI6cEKWeR+4nEkWBeC4RHyJfEbrDbk0T7MN8h7que0aRD13pqATnU5wTysGXr8y5aC/8TmzWsqndxcCYNfR0nVaRdUhdIu/B+KLmnElqCukivSBS02c9o39nNY2WsxTVabKUaoso7IBmM8dFdEBY7AjlEJQfPBUQldTllm8uRXcKItaHh7/WYQ4MeAf1612eao5LKVR9N+XkDEIz+wys48W58bT/McruvIPjLI3S6MLG6loo34czH7YDbLLtarAUaPGs6YFTRXE2s0+eNrCWHRRrMdmAECgYEA7tmsESQwaEOhu4xPYK4qYqVFVSV8Ve2NP6hvr9fQBlgilshBpVwR0MX41TlFG76qdkBSStky333AoNIf2OzjpZNBA0rAVfnHY3tqJwzeJfsOYUmniY6nepBdorgh94b8DdaeurEre7vwqvFMTBGwmDsR4oIOidY49UiSQ8d+ggECgYEAvp7Tp6ApmyO+PI7yujfE1VsNTeHLiVnf87xYnMW87EOjyl2XqiycspBxiVtcy7PZnQVYaFqcAMf1cYb0ti6BiCNXMOMg0eWFpUknYHllsB7pXu7n8Aheu0QkKRlFzkTBlFcs5yRG7V/vfP0DPL53jI54xj8LHS69FIF9ikazaxUCgYEA7hpogZ4F86qYLBKvfr2g2z3OZBc+X5q0WGVdEXqekfSCZrWzW1jxGaKBcG3rCsGDxOZSIvNq14jQ4oEV5nYgagrloJaALjUWI4IATHVzb4Fa0HlQXryrEG+iKHhOxCb4VgNBsPK1Wl/8hyyM1rg7x0X7ikYEoDvCBCMYTCEvaAECgYEAsaCzPoqi+qxOA4R5b0m0o9RbC24TCoSzih7CvCQPLmLBaDvarnsv8b1j70kxqaiIaienAGce5CNw9j96HaIslj3IbAfad31YEnOeu+mj9oB3mz0o6KYEEKEoyRuBzvqHIMIzV5iYd25kbqYetCYQpOvGY4YvxxvcmhUodQf4/RkCgYEA2SM3mgOz+jaBs96JVtTeLeEFIaKmnceD8u+wuuVfulY2aDDkEwYPfHXBqu4EqZjpcDg2l2EBsLRy7Ot7K2EaGJV0s7H1AP/13kziKCl9WwDoDg4Dk7ZRzj378YFehX4b9T3SQ36WMkgFHB9zOcRP5Rf7HO4inN6UqILHSTuTOY4=", "json", "1.0", "RSA2", "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA05z4aIvz0V9DyE/YS72CuCVbb9ncn5EJHGijdQ+qokDXR1e0SNIbZeitNKUL1bfqapjYIDIPON49VHtPFBWz2osSITsv9+lIQUhb/nBvTAhLL2Yebx6/NPC3a+meqm5e53Fu8W6WYvpQGI7zcGMiJaDs19xZHyTGJf0dTVn7+r2/XWA37801W8rADnikIyKm4gu1AiWWtpuVy+bimc6fcFq5dHOnHGlcK+kx+Bm4yRN3aDE8kG2EszLV850KaZwvHlUGdiW3mVixpfbQJV8ei2n0HIwLVGVvt1hjwNGgvrNAuBBc2ACAkk45gg77+pTiHR1XzxyjiXEelGUfFN09wQIDAQAB", "GBK", false); AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest(); var rand = this.GetRandomMumber(17); request.BizContent = "{" + "\"out_trade_no\":\"" + (201523423420101001 + long.Parse(rand)) + "\"," + "\"seller_id\":\"2088631146114221\"," + "\"total_amount\":0.1," + "\"subject\":\"Iphone6 16G\"," + "\"timeout_express\":\"90m\"," + "\"qr_code_timeout_express\":\"90m\"" + " }"; AlipayTradePrecreateResponse response = client.Execute(request); ViewBag.Src = response.QrCode; return(File(QrCodeHelper.GenQrCode(response.QrCode, 200).ToArray(), @"image/jpeg")); }
public ActionResult Place(Code code) { try { int x = (int)Math.Round(Convert.ToDouble(Request["x"].ToString())); int y = (int)Math.Round(Convert.ToDouble(Request["y"].ToString())); int width = (int)Math.Round(Convert.ToDouble(Request["width"].ToString())); int height = (int)Math.Round(Convert.ToDouble(Request["height"].ToString())); code.Rectangle = new Rectangle(x, y, width, height); code = DataAccessor.CodeRepository.UpdateCode(code); QrCodeHelper.CreateCode(code); QrCodeHelper.CreateThumbnail(code); if (!IsAuthenticated()) { CookieHelper.AddAnonymousCodeId(Request, Response, code.CodeId); } return(RedirectToAction("Dashboard", "Generator")); } catch (QRBaException ex) { Danger(ex.Message); return(View(code)); } }
/// <summary> /// 生成分享图片 /// </summary> /// <returns></returns> public BusinessBaseViewModel <FileUploadViewModel> CreateRedPacketShareImg(RedPacketShareImgRequestModel requestModel) { var res = new BusinessBaseViewModel <FileUploadViewModel>() { BusinessData = new FileUploadViewModel() }; if (requestModel.QrContent.IsNullOrWhiteSpace()) { res.ErrorMessage = "二维码内容不能为空"; return(res); } if (requestModel.FileName.IsNullOrWhiteSpace()) { res.ErrorMessage = "FileName不能为空"; return(res); } if (requestModel.FileName.IndexOf('.') > 0) { requestModel.FileName = requestModel.FileName.Substring(0, requestModel.FileName.LastIndexOf('.')); } string rootPath = ConfigHelper.GetAppsettingValue(TianYuConsts.SystemFileUploadRootPath); var tmpPath = requestModel.Type == 1 ? "RedPacketShareImg" : "RedPacketShareImgMini"; string subPath = Path.Combine(tmpPath, string.Format("{0}.jpg", requestModel.FileName)); string saveFilePath = Path.Combine(rootPath, subPath); if (!Directory.Exists(Path.Combine(rootPath, tmpPath))) { Directory.CreateDirectory(Path.Combine(rootPath, tmpPath)); } if (!File.Exists(saveFilePath)) { try { //生成图片 var backImg = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigHelper.GetAppsettingValue(TianYuConsts.RedShareBackImg)); QrCodeHelper.EncoderShareImg(requestModel.Type, requestModel.QrContent, backImg, saveFilePath, requestModel.UserName, requestModel.UserImg); } catch (Exception ex) { LogHelper.LogError("FileController.CreateRedPacketShareImg", ex.ToString()); res.Status = ResponseStatus.BusinessError; res.ErrorMessage = ex.Message; return(res); } } //已经存在则不再生成 res.BusinessData.UploadResult = new List <FileUploadItemViewModel>() { new FileUploadItemViewModel() { IsSuccess = true, FileUrl = subPath.ToImageUrl(), ServerFilePath = subPath } }; res.Status = ResponseStatus.Success; return(res); }
public ActionResult QrCodeForSigin(int activityId) { ////1.定义签到页面地址 string siginUrl = $"{WebConfig.Web_Host}/Home/SignIn/Signin?activityId={activityId}"; //2.生成二维码 return(File(QrCodeHelper.BuildQrCode(siginUrl), "image/jpeg")); }
/// <summary> /// 获取二维码图片 /// </summary> /// <param name="tenantId"></param> /// <param name="appAccountId"></param> /// <param name="type"></param> /// <param name="code"></param> /// <param name="size"></param> /// <returns></returns> public byte[] GenerateQrCodePicture(int tenantId, string appAccountId, int type, string code, int size) { ArgumentHelper.AssertNotNullOrEmpty(code, "code is null or empty"); AppConnectLogHelper.DebugFormat("调用GenerateQrCodePicture方法:tenantId:{0},code:{1}", tenantId, code); var scanUrl = UrlHelper.AddParameter(AppConnectHostConfig.Cache[0] + HostConst.QrCodeScanLogin, "code", code); AppConnectLogHelper.DebugFormat("scanUrl:{0}", scanUrl); return(QrCodeHelper.Generate(scanUrl, size)); }
public void Test_GetQrCode_ContentSingleText_Should_GenerateQrCode() { const string content = "apollo"; var result = QrCodeHelper.GetQrCode(content); var deserializedResult = GetQrCodeContent <string>(result); deserializedResult.Should().Be(content); }
public void UT_JpegCompressionTestEx() { Bitmap bmp = (Bitmap)Bitmap.FromFile(@"C:\temp\background_E3zjaD.jpg"); ImageCodecInfo jpgEncoder; EncoderParameters encoderParams; QrCodeHelper.GetJpegParams(50, out jpgEncoder, out encoderParams); bmp.Save("background-level-50.jpg", jpgEncoder, encoderParams); }
public async void Catch_Clicked(object sender, EventArgs e) { var caught_user = (await QrCodeHelper.ReadQrCode(this)).Text; await WebSocketClient.Instance.SendMessageAsync(new HunterAction() { @event = "catch", lobby = GameLogic.Instance.LobbyName, username = GameLogic.Instance.SelfUserName, caught = caught_user }); }
/// <summary> /// Constructeur /// </summary> /// <param name="don">Objet Don pour initialiser les labels de la fenêtre</param> public FenetreRecuDon(Don don) { InitializeComponent(); lblDate.Content = don.DateHeureTransaction.ToString("dd/MM/yy"); lblHeure.Content = don.DateHeureTransaction.ToString("HH:mm"); lblModePaiement.Content = don.ModePaiementTransaction.ToString(); lblMontant.Content = don.Montant.ToString() + "$"; lblNom.Content = don.NomAuteur; //lblNoTransaction.Content += " " + transaction.NoTransaction.ToString(); imgQrCode.Source = QrCodeHelper.getQrBitmap(don.ToString()); }
/// <summary> /// 生成二维码 /// </summary> /// <param name="id"></param> /// <param name="pixels"></param> /// <returns></returns> public ActionResult Generate(int id, int pixels) { var data = LocalDataProvider.Current.FindSolutionById(id); var url = Url.Action("Detail", new { id = id }); url = Request.Url.GetLeftPart(UriPartial.Authority) + url; var iconPath = Server.MapPath("/Content/images/logo.jpg"); MemoryStream ms = QrCodeHelper.RenderQrCode(url, "H", pixels, iconPath); return(File(ms.ToArray(), "image/jpeg", DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".jpeg")); }
public override async Task OnConnectedAsync() { // Just test sending message to client await Clients.All.ReceiveSomething("Notification", $"{Context.ConnectionId} is connected"); await Clients.Client(Context.ConnectionId).ReceiveSomething("Friendly neighbourhood", $"Call `http://localhost:11978/api/some/client/{Context.ConnectionId}/type_something`"); // Generate QR Code to client for all connections var url = $"http://localhost:11978/api/some/login/{Context.ConnectionId}"; await Clients.Client(Context.ConnectionId).GetQrCode(url, QrCodeHelper.Generate(url)); }
public FileResult QrCode() { var url = Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port + Url.Action("download"); var img = QrCodeHelper.GenerateQrCode(url, 5); using (var ms = new System.IO.MemoryStream()) { img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); return(File(ms.ToArray(), "image/jpeg")); } }
public void ProcessRequest(HttpContext context) { var key = HttpContext.Current.Request.QueryString["key"]; if (!string.IsNullOrEmpty(key)) { var ercode = QrCodeHelper.GetQrCodeImage(key); HttpContext.Current.Response.OutputStream.Write(ercode.GetBuffer(), 0, (int)ercode.Length); } }
private async Task <bool> CheckIfImageFile(IFormFile file) { byte[] fileBytes; using (var ms = new MemoryStream()) { await file.CopyToAsync(ms); fileBytes = ms.ToArray(); } return(QrCodeHelper.GetImageFormat(fileBytes) != QrCodeFormat.unknown); }
// GET: Mob/Home /// <summary> /// /// </summary> /// <param name="id">ShareCode</param> /// <returns></returns> public async Task <ActionResult> Index(string id, int size = 9) { MemberHelper helper = new MemberHelper(); Member member = await helper.GetByShareCodeAsync(id); string strIconPath = member == null ? "" : member.Avatar; string strContent = HttpContext.Request.Url.Scheme + "://" + HttpContext.Request.Url.Authority + "/Mob/Home/Index/" + id; Bitmap bitMap = QrCodeHelper.Create(strContent, size, strIconPath); return(File(TypeHelper.Bitmap2Byte(bitMap), "image/Jpeg")); }
public void UT_JpegCompressionTest() { Bitmap bmp = (Bitmap)Bitmap.FromFile(@"Images\image_1.jpg"); ImageCodecInfo jpgEncoder; EncoderParameters encoderParams; QrCodeHelper.GetJpegParams(10, out jpgEncoder, out encoderParams); bmp.Save("level-10.jpg", jpgEncoder, encoderParams); QrCodeHelper.GetJpegParams(50, out jpgEncoder, out encoderParams); bmp.Save("level-50.jpg", jpgEncoder, encoderParams); QrCodeHelper.GetJpegParams(90, out jpgEncoder, out encoderParams); bmp.Save("level-90.jpg", jpgEncoder, encoderParams); }
/// <summary> /// 生成二维码 /// </summary> /// <returns></returns> public ActionResult ImageQrCodeEncode() { MemoryStream ms = new MemoryStream(); string code = "http://www.webpsj.com/home/Authorize"; //Server.MapPath("~/"); //this.Server.MapPath("~/"); //System.Web.Hosting.HostingEnvironment.MapPath("~/"); 获取根目录的方法 //string filePath = @"D:\MyWork\MyWebApi\MyWebApi\Content\img\1.png"; //Image centerImage = Image.FromFile(System.Web.Hosting.HostingEnvironment.MapPath("~/") + "Content/img/1.png"); Bitmap qr = QrCodeHelper.Encode(code); qr.Save(ms, ImageFormat.Jpeg); byte[] buffurPic = ms.ToArray(); return(File(buffurPic, "image/jpeg")); }
public static string CreateQrCode(string scanUrl, out string squarePicUrl) { squarePicUrl = null; try { string logo_png = HttpContext.Current.Server.MapPath("~/qrcode_logo.png"); Bitmap bmp = QrCodeHelper.CreateQrCode(scanUrl, logo_png); //int borderOffset = 30; //int h = bmp.Height + borderOffset * 2; //int w = h * 9 / 5; //Bitmap tmpBmp = new Bitmap(w, h); //int offsetX = (tmpBmp.Width - tmpBmp.Height) / 2 + borderOffset; //int offsetY = borderOffset; //Graphics g = Graphics.FromImage(tmpBmp); //g.FillRectangle(Brushes.White, 0, 0, tmpBmp.Width, tmpBmp.Height); //g.DrawImage(bmp, offsetX, offsetY, bmp.Width, bmp.Height); int w = bmp.Width; int h = bmp.Height; Bitmap tmpBmp = new Bitmap(w + 10, h + 10); Graphics g = Graphics.FromImage(tmpBmp); g.FillRectangle(Brushes.White, 0, 0, tmpBmp.Width, tmpBmp.Height); g.DrawImage(bmp, 5, 5, w, h); string filename = "/pics/qrcode/" + DateTime.Today.ToString("yyyyMM") + "/" + DateTime.Today.ToString("dd") + "/" + Guid.NewGuid().ToString("N") + ".png"; string fullpath = HttpContext.Current.Server.MapPath("~" + filename); string dir = System.IO.Path.GetDirectoryName(fullpath); if (!System.IO.Directory.Exists(dir)) { System.IO.Directory.CreateDirectory(dir); } tmpBmp.Save(fullpath); string squareFullpath = fullpath.Replace(".png", "_square.png"); bmp.Save(squareFullpath); squarePicUrl = filename.Replace(".png", "_square.png").Replace("\\", "/"); return(filename.Replace("\\", "/")); } catch (Exception ex) { LogHelper.WriteError("二维码管理", "生成QRCode图片失败", ex); } finally { GC.Collect(); } return(null); }
/// <summary> /// 显示支付二维码,跳转至手机详情页再进行支付 /// </summary> /// <param name="productId"></param> /// <param name="hc"></param> /// <returns></returns> public IActionResult ProductPayCode(int productId, int hc) { var products = ProductModel.GetFakeProductList(); var product = products.FirstOrDefault(z => z.Id == productId); if (product == null || product.GetHashCode() != hc) { return(Content("商品信息不存在,或非法进入!2004")); } //使用 JsApi 方式支付,引导到常规的商品详情页面 string url = $"http://sdk.weixin.senparc.com/TenPayRealV3/JsApi?productId={productId}&hc={product.GetHashCode()}&t={SystemTime.Now.Ticks}"; var fileStream = QrCodeHelper.GerQrCodeStream(url); return(File(fileStream, "image/png")); }
public HttpResponseMessage GetQrCode(string out_trade_no) { LogHelper.Log.Debug("GetQrCode:" + out_trade_no); var order = CacheHelper.Get <OrderDTO>(out_trade_no); System.IO.MemoryStream MStream1 = new System.IO.MemoryStream(); QrCodeHelper.BuildQrCode(order.Order_QRUrl, MStream1, "~/wdi.ico"); var resp = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(MStream1.ToArray()) }; resp.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png"); return(resp); }
protected void Page_Load(object sender, EventArgs e) { string filePath = System.Web.HttpRuntime.AppDomainAppPath + "images\\base64.jpg"; if (File.Exists(filePath)) { //return; } else { QrCodeHelper.StrToImg(@"123+abc+网上的例QrcodeVersion的范围值是0-40,0的含义是表示压缩的信息量将会根据实际传入值确定,只有最高上限的控制,而且图片的大小将会根据信息量自动缩放。1-40的范围值,则有固定的信息量上限,而且图片的大小会固定在一个大小上,不会根据信息量的多少而变化。"); // Bitmap mp = Qrcodehelper.StrToImg(@"123+abc+网"); } string s = QrCodeHelper.ImgToStr(filePath); Label1.Text = s; }
public void Test_GetQrCode_ContentMultipleText_Should_GenerateQrCode() { var content = new QrCodeMockData { Id = 123456, Name = "Apollo", Date = DateTime.UtcNow.AddDays(15), Price = new decimal(25.65) }; var result = QrCodeHelper.GetQrCode(content); var deserializedResult = GetQrCodeContent <QrCodeMockData>(result); deserializedResult.Id.Should().Be(content.Id); deserializedResult.Name.Should().Be(content.Name); deserializedResult.Date.Should().Be(content.Date); deserializedResult.Price.Should().Be(content.Price); }
// GET api/<controller> /// <summary> /// 线下客户端获取微信登录二维码 /// </summary> /// <returns></returns> public JsonResult <string> Get(string lockCode) { JsonResult <string> result = new JsonResult <string>(); result.code = 0; result.msg = "OK"; string uuid = Utils.GetWeChatUUID(); string long_url = WeChateSiteHelper.getCRContent(uuid); string cqContent = WeChatAccessTokenAPI.GetShortURL(long_url); if (string.IsNullOrEmpty(cqContent)) { cqContent = long_url; } string fileName = string.Format("{0}.png", uuid); string filePath = FileHelper.GetPicFilePath(fileName); if (QrCodeHelper.CreateImgCode(cqContent, filePath)) { result.code = 1; result.Result = FileHelper.GetPicFileURL(fileName); result.ResultMsg = uuid; ThreadPool.QueueUserWorkItem(new WaitCallback(p => { //图片记录进缓存,定期清理 string key = CacheKey.GetQrCodeKey(DateTime.Now); RedisBase.List_Add <string>(key, filePath); RedisBase.List_SetExpire(key, DateTime.Now.AddDays(2)); //记录日志 WeChatLogin login = new WeChatLogin(); login.State = 0; login.UUID = uuid; login.LoginData = DateTime.Now.ToString("yyyy-MM-dd"); login.CreateTime = DateTime.Now; login.LockCode = lockCode; SaveWeChatLogin(login); }), null); } return(result); }
private async void ConnectAsHost(string username) { await WebSocketClient.Instance.ConnectToServerAsync(); WebSocketClient.Instance.RegisterForMessage <LoginResponse>(HandleLoginResponse); WebSocketClient.Instance.RegisterForMessage <PlayerJoinedResponse>(HandlePlayerJoined); WebSocketClient.Instance.RegisterForMessage <TimerResponse>(HandleTimerResponse); await WebSocketClient.Instance.SendMessageAsync(new LoginMessage() { @event = "login", username = username }); GameLogic.Instance.Self = new Player() { PlayerName = username }; QrCodeHelper.CreateQrCode(username); }
public void UT_QrCodeTest() { Random rand = new Random(); int accountId = rand.Next(); int codeId = rand.Next(); var url = UrlHelper.GetUrl(accountId, codeId); byte[] data; const int count = 5; for (int i = 0; i < count; i++) { foreach (var file in new DirectoryInfo("Images").GetFiles("image_*.jpg")) { using (Bitmap bmp = (Bitmap)Bitmap.FromFile(file.FullName)) { int x, y, width, height; do { x = rand.Next() % (bmp.Width * 3 / 4); y = rand.Next() % (bmp.Height * 3 / 4); width = rand.Next() % bmp.Width / 4; //height = rand.Next() % bmp.Height / 4; height = width; }while (x + width >= bmp.Width || y + height >= bmp.Height || width < 80 || width > 400); var temp = QrCodeHelper.Draw(url, bmp, new Rectangle(x, y, width, height)); Bitmap clip = new Bitmap(width, height); using (Graphics g = Graphics.FromImage(clip)) { g.DrawImage(temp, new Rectangle(0, 0, width, height), new Rectangle(x, y, width, height), GraphicsUnit.Pixel); } data = QrCodeHelper.ImageToByteArray(clip); File.WriteAllBytes("temp.png", data); string barcodeText = QrCodeHelper.Decode(data); Assert.AreEqual(url, barcodeText); } } } }
/// <summary> /// 获取问卷你调查地址二维码 /// </summary> /// <param name="surveyId"></param> /// <returns></returns> public ResultVO GetSurveyQrCode(string staticUrl) { ResultVO result = new ResultVO() { Result = 0 }; try { var tmpBitmap = QrCodeHelper.GeneratorQrImage(staticUrl); var tmpBytes = ConvertHelper.BitmapToBytes(tmpBitmap, System.Drawing.Imaging.ImageFormat.Gif); var Base64Str = Convert.ToBase64String(tmpBytes); result.Data = Base64Str; result.Result = 1; } catch (Exception ex) { result.ErrorMsg = ex.Message; } return(result); }
public async Task <IHttpActionResult> BindingWeChartCQ() { JsonResult <string> result = new JsonResult <string>(); result.code = 0; result.msg = "OK"; await Task.Run(() => { string uuid = Utils.GetWeChatUUID(); string long_url = WeChateSiteHelper.getCRContent(uuid); string cqContent = WeChatAccessTokenAPI.GetShortURL(long_url); if (string.IsNullOrEmpty(cqContent)) { cqContent = long_url; } string fileName = string.Format("{0}.png", uuid); string filePath = FileHelper.GetPicFilePath(fileName); if (QrCodeHelper.CreateImgCode(cqContent, filePath)) { result.code = 1; result.Result = FileHelper.GetPicFileURL(fileName); result.ResultMsg = uuid; //图片记录进缓存,定期清理 string key = CacheKey.GetQrCodeKey(DateTime.Now); RedisBase.List_Add <string>(key, filePath); RedisBase.List_SetExpire(key, DateTime.Now.AddDays(2)); ApiUserManager userManager = new ApiUserManager(ActionContext); string bindkey = string.Format("bind_{0}", uuid); RedisBase.Item_Set(bindkey, userManager.User); RedisBase.ExpireEntryAt(bindkey, DateTime.Now.AddHours(1)); } }); return(Ok(result)); }
public async Task <IHttpActionResult> EvaluationResultShare(string id) { JsonResult <string> result = new JsonResult <string>(); result.code = 1; result.msg = "OK"; await Task.Run(() => { string filename = string.Format("ER{0}.png", id); string filepath = Path.Combine(SystemSet.ResourcesPath, SystemSet.QrCodePic, filename); if (!File.Exists(filepath)) { string dir = Path.GetDirectoryName(filepath); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } string qrcode = ShareQrCodeContent.EvaluationResultShareQrCodeContent(id); QrCodeHelper.CreateImgCode(qrcode, filepath); } result.Result = string.Format("{0}/{1}/{2}", SystemSet.WebResourcesSite, SystemSet.QrCodePic, filename); }); return(Ok(result)); }