public void CreateWxaQrCodeTest() { var dt1 = DateTime.Now; using (var ms = new MemoryStream()) { var result = WxAppApi.CreateWxQrCode(base._appId, ms, "pages/websocket", 100); Assert.AreEqual(ReturnCode.请求成功, result.errcode); ms.Seek(0, SeekOrigin.Begin); //储存图片 var filePath = "../../Config/qr.jpg"; File.Delete(filePath); using (var fs = new FileStream(filePath, FileMode.CreateNew)) { ms.CopyTo(fs); fs.Flush(); } Assert.IsTrue(File.Exists(filePath)); } var dt2 = DateTime.Now; Console.WriteLine("执行时间:{0}ms", (dt2 - dt1).TotalMilliseconds); }
public IActionResult ImgSecCheck(string filePath) { CommonResult result = new CommonResult(); try { var fileDic = new Dictionary <string, string>(); WxJsonResult res = WxAppApi.ImgSecCheck(WxOpenAppId, filePath); if (res.errcode == ReturnCode.请求成功) { result.ErrCode = ErrCode.successCode; result.Success = true; result.ResData = res; } else { result.ErrCode = ErrCode.failCode; result.ErrMsg = "图片含有违法违规内容,请更换图片"; result.ResData = res; } } catch (Exception ex) { Log4NetHelper.Error("代码生成异常", ex); result.ErrMsg = "代码生成异常:" + ex.Message; result.ErrCode = ErrCode.failCode; } return(ToJsonContent(result)); }
public void CreateWxaQrCodeAsyncTest() { var dt1 = DateTime.Now; var filePath = "../../Config/qr-async.jpg"; Task.Factory.StartNew(async() => { var ms = new MemoryStream(); var result = await WxAppApi.CreateWxQrCodeAsync(base._appId, ms, "pages/websocket", 100); Assert.AreEqual(ReturnCode.请求成功, result.errcode); ms.Seek(0, SeekOrigin.Begin); //储存图片 File.Delete(filePath); using (var fs = new FileStream(filePath, FileMode.CreateNew)) { await ms.CopyToAsync(fs); await fs.FlushAsync(); } Assert.IsTrue(File.Exists(filePath)); }); var dt2 = DateTime.Now; while (!File.Exists(filePath)) { } var dt3 = DateTime.Now; Console.WriteLine("执行时间:{0}ms", (dt2 - dt1).TotalMilliseconds); Console.WriteLine("等待时间:{0}ms", (dt3 - dt2).TotalMilliseconds); }
public void CreateWxaQrCodeTest2() { var dt1 = DateTime.Now; var filePath = "../../Config/qr2.jpg"; var result = WxAppApi.CreateWxQrCode(base._appId, filePath, "pages/websocket", 100); var dt2 = DateTime.Now; Console.WriteLine("执行时间:{0}ms", (dt2 - dt1).TotalMilliseconds); }
public void Template(string messageId, string appId, string openId, string templateId, string url, Dictionary <string, WxWebSendTemplateRequest.DataItem> data, string formId, PerformContext context) { var messageStatus = new MessageStatus(_redis, messageId); messageStatus.Sended(openId); context.WriteLine("向用户「{0}」@「{1}」发送模版消息「{2}」...", openId, appId, templateId); var accessToken = _redis.StringGet(CacheKey.UserAccessTokenPrefix + appId); if (accessToken.HasValue) { if (string.IsNullOrEmpty(formId)) { var resp = WxWebApi.SendTemplate(accessToken, openId, templateId, url, data); if (resp.ErrCode == 0) { messageStatus.SetTemplateMap(resp.MsgId.ToString()); context.WriteLine("消息发送成功...[MsgId: {0}]", resp.MsgId); } else { messageStatus.SendError(openId); context.WriteLine("消息发送失败:{0}...", resp.ErrMsg); throw new ServiceException(resp.ErrCode, resp.ErrMsg); } } else { var tmpData = new Dictionary <string, WxAppSendTemplateRequest.DataItem>(); foreach (var item in data) { tmpData.Add(item.Key, new WxAppSendTemplateRequest.DataItem { Value = item.Value.Value }); } var resp = WxAppApi.SendTemplate(accessToken, openId, templateId, url, formId, tmpData); if (resp.ErrCode == 0) { messageStatus.Success(openId); context.WriteLine("消息发送成功..."); } else { messageStatus.SendError(openId); context.WriteLine("消息发送失败:{0}...", resp.ErrMsg); throw new ServiceException(resp.ErrCode, resp.ErrMsg); } } } else { messageStatus.SendError(openId); context.WriteLine("消息发送失败:无法获取AccessToken..."); throw new ServiceException(-1, "消息发送失败:无法获取AccessToken..."); } }
public async Task <IActionResult> ContentWxAppletQrCode([FromBody] ContentPlayBillModel info) { CommonResult result = new CommonResult(); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); try { if (info == null) { return(ToJsonContent(result)); } string page = info.Page; //此接口不可以带参数,如果需要加参数,必须加到scene中 string scene = info.Scene;; //id=xxxxxx,scene最多允许32个字符 int width = string.IsNullOrEmpty(info.Width.ToString()) ? 480 : info.Width.ToInt(); //图片名称 string picname = "ref" + width + GuidUtils.CreateNo() + ".png"; var _tempfilepath = "/upload/contentqrcode/"; var uploadPath = _filePath + _tempfilepath; if (!Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } string qrcodePicPath = uploadPath + picname;//小程序二维码图片 MemoryStream ms = new MemoryStream(); if (!System.IO.File.Exists(qrcodePicPath)) { var resultImg = await WxAppApi.GetWxaCodeUnlimitAsync(WxOpenAppId, qrcodePicPath, scene, page, width, false, null, true); if (resultImg.errcode == ReturnCode.请求成功) { result.Success = true; result.ErrCode = ErrCode.successCode; result.ResData = _tempfilepath + picname; } else { result.ErrCode = resultImg.errcode.ToString(); result.ErrMsg = resultImg.errmsg; } } else { result.ErrCode = ErrCode.successCode; result.ErrMsg = _tempfilepath + picname; } } catch (Exception ex) { Log4NetHelper.Error("代码生成异常", ex); result.ErrMsg = "代码生成异常:" + ex.Message; result.ErrCode = ErrCode.failCode; } return(ToJsonContent(result)); }
public async Task <IActionResult> DownloadMchQRCode() { string activityNo = this.GetActivityNo(); var(mchList, total) = await _operatApplication.MchList(activityNo, "", 1, 1000); if (total <= 0) { return(BadRequest("未找到商户!")); } string dateName = DateTime.Now.ToString("yyyyMMddHHmmss"); string filePath = $"{_hostingEnvironment.WebRootPath}/Image/Wish/{dateName}/"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } foreach (var data in mchList) { string path = $@"pages/conversion/index?mchNo={data.mchNo}"; await WxAppApi.GetWxaCodeAsync(_wxOpenAppId, string.Concat(filePath, data.mchName, ".jpeg"), path); } string zipPath = $"/File/Wish/"; string zipPathName = $"{zipPath}{dateName}.zip"; string zipPathDir = _hostingEnvironment.WebRootPath + zipPath; if (!Directory.Exists(zipPathDir)) { Directory.CreateDirectory(zipPathDir); } try { ZipFile.CreateFromDirectory(filePath, $"{_hostingEnvironment.WebRootPath}{zipPathName}"); } catch (Exception ex) { Console.WriteLine(ex.Message); return(BadRequest("压缩错误 !")); } if (Directory.Exists(filePath)) { Directory.Delete(filePath, true); } return(File(zipPathName, "application/zip", $"商户核销码-{dateName}.zip")); }
public ActionResult DownloadWxaCodeUnlimit(int shopId, int conglomerationActivityId) { var token = ShopConglomerationOrderOptions.GetAuthorizerAccessToken(db, shopId); var dirPath = hostingEnvironment.ContentRootPath + "\\wwwroot\\WxopenCode\\"; var path = Path.Combine(dirPath, $"{shopId}_{conglomerationActivityId}.jpg"); if (!Directory.Exists(dirPath)) { Directory.CreateDirectory(dirPath); } if (!System.IO.File.Exists(path)) { var jasonresult = WxAppApi.GetWxaCodeUnlimit(token, path, $"{conglomerationActivityId}", "pages/home/OrderDetailsinfo", 210); } return(File($"\\WxopenCode\\{shopId}_{conglomerationActivityId}.jpg", "image/png", "qr-async.jpg")); }
public async Task <IActionResult> ContentWxAppletQrCodeRes([FromQuery] ContentPlayBillModel info) { CommonResult result = new CommonResult(); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); MemoryStream ms = new MemoryStream(); try { if (info == null) { return(ToJsonContent(result)); } string page = info.Page; //此接口不可以带参数,如果需要加参数,必须加到scene中 string scene = info.Scene;; //id=xxxxxx,scene最多允许32个字符 int width = string.IsNullOrEmpty(info.Width.ToString()) ? 480 : info.Width.ToInt(); var resultImg = await WxAppApi.GetWxaCodeUnlimitAsync(WxOpenAppId, ms, scene, page, width); ms.Position = 0; if (resultImg.errcode == ReturnCode.请求成功) { var imgBase64 = Convert.ToBase64String(ms.GetBuffer()); result.Success = true; result.ErrCode = ErrCode.successCode; result.ResData = imgBase64; } else { result.ErrCode = resultImg.errcode.ToString(); result.ErrMsg = resultImg.errmsg; } } catch (Exception ex) { Log4NetHelper.Error("代码生成异常", ex); result.ErrMsg = "代码生成异常:" + ex.Message; result.ErrCode = ErrCode.failCode; } finally{ ms.Dispose(); } return(ToJsonContent(result)); }
public override Task <GetOpenIdByCodeResponse> GetOpenId(GetOpenIdByCodeRequest request, ServerCallContext context) { var resp = new GetOpenIdByCodeResponse(); var data = WxAppApi.GetSessionKey(_componentAppId, _componentAccessToken, request.AppId, request.Code); if (data.ErrCode == 0) { resp.OpenId = data.OpenId; resp.SecretKey = data.SessionKey; } else { resp.Error = new Error { ErrCode = data.ErrCode, ErrMsg = data.ErrMsg }; } return(Task.FromResult(resp)); }
public void CreateWxaQrCodeAsyncTest2() { var dt1 = DateTime.Now; var filePath = "../../Config/qr-async2.jpg"; Task.Factory.StartNew(async() => { var result = await WxAppApi.CreateWxQrCodeAsync(base._appId, filePath, "pages/websocket", 100); Assert.AreEqual(ReturnCode.请求成功, result.errcode); Assert.IsTrue(File.Exists(filePath)); }); var dt2 = DateTime.Now; while (!File.Exists(filePath)) { } var dt3 = DateTime.Now; Console.WriteLine("执行时间:{0}ms", (dt2 - dt1).TotalMilliseconds); Console.WriteLine("等待时间:{0}ms", (dt3 - dt2).TotalMilliseconds); }
public async Task <IActionResult> GetQRCode(string path) { //var memberId = this.GetMemberId(); ////Console.WriteLine("memberId=={1} path1:{0}", path, memberId); //var stream = new MemoryStream(); //path = HttpUtility.UrlDecode(path); ////Console.WriteLine("memberId=={1} path2:{0}", path, memberId); //await WxAppApi.GetWxaCodeAsync(_wxOpenAppId, stream, path); ////必须将流的当前位置置0,否则将引发异常 ////如果不设置为0,则流的当前位置在流的末端,然后读流就会从末端开始读取,就会引发无效操作异常System.InvalidOperationException ////System.InvalidOperationException: Response Content-Length mismatch: too few bytes written (0 of xxxx) //stream.Position = 0; //return new FileStreamResult(stream, "image/gif"); path = HttpUtility.UrlDecode(path); using (var ms = new MemoryStream()) { await WxAppApi.GetWxaCodeAsync(_wxOpenAppId, ms, path); return(File(ms.GetBuffer(), "image/jpeg")); } }
public async Task <IActionResult> GetQrCode(string sessionId, string useBase64, string codeType = "1") { var sessionBag = SessionContainer.GetSession(sessionId); if (sessionBag == null) { return(Json(new { success = false, msg = "请先登录!" })); } MemoryStream ms = new MemoryStream(); var openId = sessionBag.OpenId; var page = "pages/QrCode/QrCode"; //此接口不可以带参数,如果需要加参数,必须加到scene中 var scene = $"OpenIdSuffix:{openId.Substring(openId.Length - 10, 10)}#{codeType}"; //储存OpenId后缀,以及codeType。scene最多允许32个字符 LineColor lineColor = null; //线条颜色 if (codeType == "2") { lineColor = new LineColor(221, 51, 238); } var result = await WxAppApi.GetWxaCodeUnlimitAsync(WxOpenAppId, ms, scene, page, lineColor : lineColor); ms.Position = 0; if (!useBase64.IsNullOrEmpty()) { //转base64 var imgBase64 = Convert.ToBase64String(ms.GetBuffer()); return(Json(new { success = true, msg = imgBase64, page = page })); } else { //返回文件流 return(File(ms, "image/jpeg")); } }
public IActionResult CheckMsgSecCheck(CheckMsgModel checkMsgModel) { CommonResult result = new CommonResult(); try { if (checkMsgModel != null) { WxJsonResult res = WxAppApi.MsgSecCheck(WxOpenAppId, checkMsgModel.ContenText); if (res.errcode == ReturnCode.请求成功) { result.ErrCode = ErrCode.successCode; result.Success = true; result.ResData = res; } else { result.ErrCode = ErrCode.failCode; result.ErrMsg = "内容含有违法违规内容"; result.ResData = res; } } else { result.ErrCode = ErrCode.failCode; result.ErrMsg = "内容为空"; } } catch (Exception ex) { Log4NetHelper.Error("代码生成异常", ex); result.ErrMsg = "代码生成异常:" + ex.Message; result.ErrCode = ErrCode.failCode; } return(ToJsonContent(result)); }
public async Task <IActionResult> ContentPlayBillQrCode(ContentPlayBillModel info) { CommonResult result = new CommonResult(); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); MemoryStream ms = new MemoryStream(); try { if (info == null) { return(ToJsonContent(result)); } string page = info.Page; //此接口不可以带参数,如果需要加参数,必须加到scene中 string scene = info.Scene;; //id=xxxxxx,scene最多允许32个字符 //图片名称 string picname = "ref_" + GuidUtils.CreateNo() + ".jpg"; var _tempfilepath = "/upload/" + scene + "/contentqrcode/"; var uploadPath = _filePath + _tempfilepath; if (!Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } string qrcodePicPath = uploadPath + picname;//小程序二维码图片 var resultImg = await WxAppApi.GetWxaCodeUnlimitAsync(WxOpenAppId, qrcodePicPath, scene, page, 280); if (resultImg.errcode == ReturnCode.请求成功) { string picnameh = "c_" + GuidUtils.CreateNo() + ".jpg"; var sor = _filePath + "/images/"; string qrcodebg = "share_content_bg.jpg"; Bitmap cardbmp = new Bitmap(460, 736); Graphics g = Graphics.FromImage(cardbmp); g.SmoothingMode = SmoothingMode.HighQuality;; //抗锯齿 g.CompositingQuality = CompositingQuality.HighQuality; g.InterpolationMode = InterpolationMode.High; g.Clear(System.Drawing.Color.White); //白色填充 Bitmap bgimg = new Bitmap(460, 736); //如果背景图片存在, bgimg = (Bitmap)Image.FromFile(qrcodebg); //如果存在,读取背景图片 g.DrawImage(bgimg, 0, 0, 460, 736); //合成二维码 Bitmap productImg = new Bitmap(128, 128); productImg = (Bitmap)Image.FromFile(qrcodePicPath); g.DrawImage(productImg, 276, 580, 128, 128); //合成文字 Font nickName = new Font("微软雅黑", 22); Font adtxt = new Font("微软雅黑", 18); StringFormat stringFormat = new StringFormat(StringFormatFlags.DisplayFormatControl); Brush fontBrush = SystemBrushes.ControlText; stringFormat.Alignment = StringAlignment.Center; stringFormat.LineAlignment = StringAlignment.Center; RectangleF rectangleF = new RectangleF(40, 500, 380, 80); g.DrawString(info.Title, adtxt, fontBrush, rectangleF, stringFormat); cardbmp.Save(uploadPath + picnameh, ImageFormat.Jpeg); cardbmp.Dispose(); ms.Dispose(); result.ResData = _tempfilepath + picnameh; } else { result.ErrCode = resultImg.errcode.ToString(); result.ErrMsg = resultImg.errmsg; } } catch (Exception ex) { Log4NetHelper.Error("代码生成异常", ex); result.ErrMsg = "代码生成异常:" + ex.Message; result.ErrCode = ErrCode.failCode; } finally { ms.Dispose(); } return(ToJsonContent(result)); }
public async Task <Result> QRCode() { var user = await _customerManager.GetUserAsync(); var appId = WechatService.WxOpenAppId; var scene = $"id={user.Id}"; var page = "pages/index/index"; try { var myShareCodePath = Path.Combine("images", "sharecodes", user.Id + ".png"); var physicalPath = Path.Combine(_enviromenet.WebRootPath, myShareCodePath); var httpPath = Request.GetHostUrl() + "/" + myShareCodePath.Replace(@"\", "/"); if (System.IO.File.Exists(physicalPath)) { return(Result.Ok(httpPath)); } Image backgroundImg = null; string sharePath = Path.Combine(_enviromenet.WebRootPath, "images/20210107152422.png"); // var qrCodeImgDemo = Path.Combine(_enviromenet.WebRootPath, "images/qrcode_example.png"); if (System.IO.File.Exists(sharePath)) { backgroundImg = Image.Load(sharePath); } using (var stream = new MemoryStream()) { var wxResult = await WxAppApi.GetWxaCodeUnlimitAsync(appId, stream, scene, page); if (wxResult.errcode == 0 && stream.Length > 1024) { Image qrCodeImg = Image.Load <Rgba32>(stream.GetBuffer()); if (!string.IsNullOrEmpty(user.AvatarUrl)) { using (var httpClient = _httpFactory.CreateClient()) { var response = await httpClient.GetAsync(user.AvatarUrl); if (response.IsSuccessStatusCode) { var avatarStream = await response.Content.ReadAsStreamAsync(); var avatarPoint = 120; var avatarSize = 190; var avatarImg = Image.Load <Rgba32>(avatarStream).Clone(e => e.ConvertToAvatar(new Size(avatarSize, avatarSize), avatarSize / 2)); qrCodeImg.Mutate(e => { e.DrawImage(avatarImg, new Point(avatarPoint, avatarPoint), 1); }); } } } var qrSize = 211; var qrPoint = new Point(270, 620); qrCodeImg = qrCodeImg.Clone(e => e.Resize(qrSize, qrSize)); backgroundImg.Mutate(e => { e.DrawImage(qrCodeImg, qrPoint, 1); }); using (var ms = new MemoryStream()) { backgroundImg.Save(physicalPath, new PngEncoder()); // backgroundImg.SaveAsPng(ms); // string base64String = $"data:image/png;base64,{Convert.ToBase64String(ms.ToArray())}"; // return Result.Ok(base64String); } return(Result.Ok(httpPath)); } } } catch (Exception ex) { return(Result.Fail(ResultCodes.SysError, ex.Message)); } return(Result.Fail(ResultCodes.RequestParamError, "请求生成小程序码失败")); }
/// <summary> /// session_key 合法性校验 /// https://mp.weixin.qq.com/debug/wxagame/dev/tutorial/http-signature.html /// </summary> /// <param name="openId">用户唯一标识符</param> /// <param name="sessionKey">用户登录态签名</param> /// <param name="buffer">托管数据,类型为字符串,长度不超过1000字节(官方文档没有提供说明,可留空)</param> /// <returns></returns> public object CheckSession(string openId, string sessionKey, string buffer = null) { var result = WxAppApi.CheckSession(WxOpenId, openId, sessionKey, buffer); return(result.errmsg); }
public override Task <GetTemplateResponse> GetTemplate(GetInfoRequest request, ServerCallContext context) { var resp = new GetTemplateResponse(); var accessToken = _redis.StringGet(CacheKey.UserAccessTokenPrefix + request.AppId); if (accessToken.HasValue) { var isWxApp = _redis.KeyExists(CacheKey.UserIsWxAppPrefix + request.AppId); if (isWxApp) { var data = WxAppApi.GetTemplateList(accessToken); if (data.ErrCode != 0) { resp.Error = new Error { ErrCode = data.ErrCode, ErrMsg = data.ErrMsg }; } else { foreach (var item in data.TemplateList) { resp.TemplateList.Add(new GetTemplateResponse.Types.ListItem { TemplateId = item.TemplateId, Title = item.Title, Content = item.Content, Example = item.Example }); } } } else { var data = WxWebApi.GetTemplateList(accessToken); if (data.ErrCode != 0) { resp.Error = new Error { ErrCode = data.ErrCode, ErrMsg = data.ErrMsg }; } else { foreach (var item in data.TemplateList) { resp.TemplateList.Add(new GetTemplateResponse.Types.ListItem { TemplateId = item.TemplateId, Title = item.Title, PrimaryIndustry = item.PrimaryIndustry, DeputyIndustry = item.DeputyIndustry, Content = item.Content, Example = item.Example }); } } } } else { resp.Error = new Error { ErrCode = 99999, ErrMsg = "AccessToken Missing" }; } return(Task.FromResult(resp)); }
public async Task <IActionResult> GetReferralQrCode() { CommonResult result = new CommonResult(); try { MemoryStream ms = new MemoryStream(); string page = "pages/index/index"; //此接口不可以带参数,如果需要加参数,必须加到scene中 string scene = "Ref=" + CurrentUser.UserId; //储存OpenId后缀,以及codeType。scene最多允许32个字符 //图片名称 string picname = "ref_" + GuidUtils.CreateNo() + ".jpg"; var _tempfilepath = "/upload/" + CurrentUser.UserId + "/qrcode/"; var uploadPath = _filePath + _tempfilepath; if (!Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } string qrcodePicPath = uploadPath + picname;//小程序二维码图片 var resultImg = await WxAppApi.GetWxaCodeUnlimitAsync(WxOpenAppId, qrcodePicPath, scene, page, 280); if (resultImg.errcode == ReturnCode.请求成功) { string picnameh = "refs_" + CurrentUser.UserId + ".jpg"; var sor = _filePath + "/images/"; string qrcodebg = "share_bg2.jpg"; Bitmap cardbmp = new Bitmap(1080, 1926); Graphics g = Graphics.FromImage(cardbmp); g.SmoothingMode = SmoothingMode.HighQuality;; //抗锯齿 g.CompositingQuality = CompositingQuality.HighQuality; g.InterpolationMode = InterpolationMode.High; g.Clear(System.Drawing.Color.White); //白色填充 Bitmap bgimg = new Bitmap(1080, 1926); //如果背景图片存在, bgimg = (Bitmap)System.Drawing.Image.FromFile(sor + qrcodebg); //如果存在,读取背景图片 g.DrawImage(bgimg, 0, 0, 1080, 1926); //合成二维码 Bitmap productImg = new Bitmap(280, 280); productImg = (Bitmap)System.Drawing.Image.FromFile(qrcodePicPath); g.DrawImage(productImg, 713, 1570, 280, 280); //合成头像 Bitmap headerimg = new Bitmap(110, 110); if (CurrentUser.HeadIcon.Contains("wx.qlogo.cn")) { headerimg = ImgHelper.GetNetImg(CurrentUser.HeadIcon); } else { headerimg = ImgHelper.GetNetImg(CurrentUser.HeadIcon); //headerimg = (Bitmap)System.Drawing.Image.FromFile(_filePath + CurrentUser.HeadIcon); } headerimg = ImgHelper.CutEllipse(headerimg, new Rectangle(0, 0, 110, 110), new Size(110, 110)); g.DrawImage(headerimg, 100, 1505, 110, 110); //合成文字 Font nickName = new Font("微软雅黑", 22); Font adtxt = new Font("微软雅黑", 26); StringFormat StringFormat = new StringFormat(StringFormatFlags.DisplayFormatControl); g.DrawString(CurrentUser.NickName, nickName, new SolidBrush(System.Drawing.Color.LightGray), 100, 1630, StringFormat); g.DrawString("推荐你一个超棒的汽车工程师圈子”", adtxt, new SolidBrush(System.Drawing.Color.Black), 100, 1680, StringFormat); cardbmp.Save(uploadPath + picnameh, ImageFormat.Jpeg); cardbmp.Dispose(); result.ResData = _tempfilepath + picnameh; } else { result.ErrCode = resultImg.errcode.ToString(); result.ErrMsg = resultImg.errmsg; } } catch (Exception ex) { Log4NetHelper.Error("代码生成异常", ex); result.ErrMsg = "代码生成异常:" + ex.Message; result.ErrCode = ErrCode.failCode; } return(ToJsonContent(result)); }