/// <summary> /// 获取用于换取二维码(临时二维码和长久二维码)的Ticket /// </summary> /// <param name="senceId">场景值ID</param> /// <param name="type">值为:long 时:代表长久性二维码 值为short时:代表临时二维码</param> /// <returns></returns> public string GeterweimaTicket(int senceId, string type = "short") { string Ticket = ""; CreateQrCodeResult re = new CreateQrCodeResult(); try { if (type == "short")//临时二维码 { re = QrCodeApi.Create(IsExistAccess_Token2(), 604800, senceId); } else { re = QrCodeApi.Create(IsExistAccess_Token2(), 0, senceId); } Ticket = re.ticket; } catch { if (type == "short")//临时二维码 { Ticket = CreateTicket(IsExistAccess_Token2()); } else { Ticket = CreateLongTicket(IsExistAccess_Token2()); } } return(Ticket); }
/// <summary> /// 获取渠道的二维码 /// </summary> /// <param name="channelName">渠道实体</param> /// <returns></returns> private void GetQrcode(ChannelEntity entity) { //获取微信公众平台接口访问凭据 string accessToken = AccessTokenContainer.TryGetToken(ConfigurationManager.AppSettings["appID"], ConfigurationManager.AppSettings["appsecret"]); //找出一个未被使用的场景值ID,确保不同渠道使用不同的场景值ID int scenid = GetNotUsedSmallSceneId(); if (scenid <= 0 || scenid > 100000) { throw new Exception("抱歉,您的二维码已经用完,请删除部分后重新添加"); } CreateQrCodeResult createQrCodeResult = QrCode.Create(accessToken, 0, scenid); if (!string.IsNullOrEmpty(createQrCodeResult.ticket)) { using (MemoryStream stream = new MemoryStream()) { //根据ticket获取二维码 QrCode.ShowQrCode(createQrCodeResult.ticket, stream); //将获取到的二维码图片转换为Base64String格式 byte[] imageBytes = stream.ToArray(); string base64Image = System.Convert.ToBase64String(imageBytes); //由于SqlServerCompact数据库限制最长字符4000,本测试项目将二维码保存到磁盘,正式项目中可直接保存到数据库 string imageFile = "QrcodeImage" + scenid.ToString() + ".img"; File.WriteAllText(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/") + imageFile, base64Image); entity.Qrcode = imageFile; entity.SceneId = scenid; } } else { throw new Exception("抱歉!获取二维码失败"); } }
public async Task <CreateQrCodeResult> CreateJsonQrCodeAsync(string jsonContent) { // Create the data var data = await qrCodeDataService.GenerateJsonQrCodeDataAsync(jsonContent); // Create the image var bmp = await qrCodeRenderingService.RenderQrCodeAsBitmapAsync(data); // Create a name for the file var file = $"{Guid.NewGuid()}.png"; // Save the file to the system await imageFileService.WriteImageFileAsync(file, bmp, qrCodeRenderingService.GetImageCodecInfo(), qrCodeRenderingService.GetEncoderParameters()); // Add to the database to control access var created = new CreatedQrCode { Created = DateTime.Now, Filename = file, CreatedBy = apiKeyProvider.ApiKey }; var result = await qrCodeRepository.CreateQrCodeAsync(created); await qrCodeRepository.SaveChangesAsync(); return(result == null ? CreateQrCodeResult.Failed("Unable to save result") : CreateQrCodeResult.Success(result)); }
/// <summary> /// 微信二维码 /// </summary> public ActionResult WxQRCode() { if (WorkContext.UserLevel <= 0) { return(PromptView("请先提升您的等级")); } string pth1 = "~/mobile/Qcode/" + WorkContext.Openid.ToString() + ".jpeg"; string pth2 = "~/mobile/Qcode/" + WorkContext.Openid.ToString() + ".jpg"; //LogHelper.WriteLog("二维码:" + pth1); LogHelper.WriteLog("二维码:" + pth2); //if (File.Exists(pth1)||File.Exists(pth2)) //{ // File.Delete(pth1); File.Delete(pth2); // LogHelper.WriteLog("二维码222222"); //} CreateQrCodeResult re = new CreateQrCodeResult(); re = QrCodeApi.Create(WeiXinHelp.IsExistAccess_Token2(), 604000, Convert.ToInt32(WorkContext.Uid)); string tickets = re.ticket; //string quserno = WorkContext.Userno.ToString(); WeiXinHelp.GetTicketImage(tickets, WorkContext.Openid.ToString(), @"\mobile\Qcode"); string picPth = @"~/mobile/Qcode/" + WorkContext.Openid.ToString() + ".jpeg"; WxQRCodeModel model = new WxQRCodeModel(); model.picPth = ""; if (!System.IO.File.Exists(picPth)) { // LogHelper.WriteLog("二维码JPG"); { model.picPth = @"/mobile/Qcode/" + WorkContext.Openid.ToString() + ".jpg"; } } WebClient mywebclient = new WebClient(); // @" string savepath = Server.MapPath("~/mobile/Aavatar/") + WorkContext.Openid + ".jpg"; // //LogHelper.WriteLog(savepath); //try //{ if (!System.IO.File.Exists(savepath)) { mywebclient.DownloadFile(WorkContext.Avatar, savepath); } //下载生成的二维码图片 //} //catch (Exception ex) //{ // // ex.ToString(); // // BrnMall.Core.Common.LogHelper.WriteLog("错误了" + savepath); //} Core.ImageHelp.DrawImage("", "", (float)1.0, "", "", "", WorkContext.NickName, WorkContext.Openid); model.picPth = @"/mobile/Qcode/new/" + WorkContext.Openid.ToString() + ".jpg"; return(View(model)); }
public ActionResult ApplyWithDraw() { SiteSettingsInfo siteSettings = ServiceHelper.Create <ISiteSettingService>().GetSiteSettings(); if (string.IsNullOrWhiteSpace(siteSettings.WeixinAppId) || string.IsNullOrWhiteSpace(siteSettings.WeixinAppSecret)) { throw new HimallException("Can not Set WeiXin AppId"); } string str = AccessTokenContainer.TryGetToken(siteSettings.WeixinAppId, siteSettings.WeixinAppSecret, true); SceneModel sceneModel = new SceneModel(QR_SCENE_Type.WithDraw) { Object = base.CurrentUser.Id.ToString() }; int num = (new SceneHelper()).SetModel(sceneModel, 600); CreateQrCodeResult createQrCodeResult = QrCodeApi.Create(str, 300, num, 10000); ViewBag.ticket = createQrCodeResult.ticket; ViewBag.Sceneid = num; IMemberCapitalService memberCapitalService = ServiceHelper.Create <IMemberCapitalService>(); CapitalInfo capitalInfo = memberCapitalService.GetCapitalInfo(base.CurrentUser.Id); if (capitalInfo == null) { ViewBag.ApplyWithMoney = 0; } else { dynamic viewBag = base.ViewBag; decimal?balance = capitalInfo.Balance; ViewBag.ApplyWithMoney = balance.Value; } string membersId = this.CurrentUser.UserName; IEnumerable <WithDrawInfo> WithDraws = ServiceHelper.Create <IWithDrawService>().GetWithDrawByMembersId(membersId);//因为UserName值唯一,所以没有登录账号ID去获取信息 String[] Array = new String[WithDraws.Count()]; int i = 0; foreach (var item in WithDraws) { Array[i] = item.WithdrawType + "【" + item.AccountNumber + "," + item.Name + "】"; i++; } ViewBag.List = Array; ViewBag.Num = Array.Length; base.ViewBag.IsSetPwd = (string.IsNullOrWhiteSpace(base.CurrentUser.PayPwd) ? false : true); return(View()); }
private string GetRegQrCode(Guid guid) { var sceneId = int.Parse(DateTime.Now.ToString("MMddHHmmss")); var senparcWeixinConfig = SenparcDI.GetService <IOptions <SenparcWeixinSetting> >().Value; var qrCodeRegCache = SenparcDI.GetService <QrCodeRegCache>(); while (qrCodeRegCache.MessageCollection.ContainsKey(sceneId.ToString())) { sceneId++; } CreateQrCodeResult qrCodeResult = QrCodeApi.Create(senparcWeixinConfig.WeixinAppId, 600, sceneId, QrCode_ActionName.QR_SCENE, "reg_code"); var qrCodeRegData = new QrCodeRegData(sceneId, qrCodeResult.expire_seconds, qrCodeResult.ticket, guid, QrCodeRegDataType.Reg); qrCodeRegCache.Insert(qrCodeRegData, qrCodeRegData.Key); return(qrCodeResult.url); }
public async Task <Qrcode> CreateQrcodeAsync(UserIdentifier userIdentifier) { string appId = await SettingManager.GetSettingValueForTenantAsync(WechatSettings.General.AppId, userIdentifier.TenantId.Value); string appSecret = await SettingManager.GetSettingValueForTenantAsync(WechatSettings.General.Secret, userIdentifier.TenantId.Value); Qrcode maxSceneIdQrcode = qrcodeRepository.GetAll().OrderByDescending(model => model.SceneId).FirstOrDefault(); int sceneId = maxSceneIdQrcode == null?1: maxSceneIdQrcode.SceneId + 1; Qrcode qrcode = new Qrcode() { ExpireSeconds = 604800, UserId = userIdentifier.UserId }; //大于10万,生成临时二维码 if (sceneId > 100000) { qrcode.Type = QrCode_ActionName.QR_LIMIT_SCENE; } else { qrcode.SceneId = sceneId; qrcode.Type = QrCode_ActionName.QR_SCENE; } string accessToken = AccessTokenContainer.TryGetAccessToken(appId, appSecret); CreateQrCodeResult createQrCodeResult = QrCodeApi.Create( accessToken, qrcode.ExpireSeconds, qrcode.SceneId, qrcode.Type); qrcode.Ticket = createQrCodeResult.ticket; qrcode.ExpireSeconds = createQrCodeResult.expire_seconds; qrcode.Url = createQrCodeResult.url; string qrcodePreUrl = String.Format(qrcodePreUrlBaseFormat, qrcode.Ticket); qrcode.Path = GetQrcodeFolderPathOfUser(userIdentifier.UserId) + "/" + qrcode.SceneId + ".png"; Image.GetAndSaveImage(qrcodePreUrl, HttpContext.Current.Server.MapPath(qrcode.Path)); qrcodeRepository.Insert(qrcode); return(qrcode); }
public ActionResult Index() { var guid = Guid.NewGuid().ToString("n"); ViewData["Guid"] = guid; var configHelper = new ConfigHelper(); int qrCodeId = 0; CreateQrCodeResult qrResult = null; try { //chm二维码 qrCodeId = configHelper.GetQrCodeId(); qrResult = MP.AdvancedAPIs.QrCodeApi.Create(appId, 10000, qrCodeId, QrCode_ActionName.QR_SCENE); var qrCodeUrl = MP.AdvancedAPIs.QrCodeApi.GetShowQrCodeUrl(qrResult.ticket); ViewData["QrCodeUrl"] = qrCodeUrl; } catch (Exception e) { WeixinTrace.SendCustomLog("Document发生appsecret错误!", e.ToString()); var accessTokenBags = AccessTokenContainer.GetAllItems(); WeixinTrace.SendCustomLog("当前AccessToken信息", accessTokenBags.ToJson()); } finally { ConfigHelper.CodeCollection[guid] = new CodeRecord() { Key = guid, QrCodeId = qrCodeId, QrCodeTicket = qrResult };//添加对应关系 //下载版本 var config = configHelper.GetConfig(); ViewData["Versions"] = config.Versions; ViewData["WebVersions"] = config.WebVersions; ViewData["DownloadCount"] = config.DownloadCount.ToString("##,###"); } return(View()); }
public ActionResult MpQrCodeEditProvide() { Ocean.Entity.MpQrScene mp = new Entity.MpQrScene(); TryUpdateModel <MpQrScene>(mp); if (mp.Id.ToString().StartsWith("0000")) { string token = GetAccessToken(); int iTemp = MpQrSceneService.GetMaxSceneId(mp.ActionName) + 1; try { if (mp.ActionName == 0) { mp.TimeoutTicks = 1800; mp.SceneId = iTemp; CreateQrCodeResult result = QrCode.Create(token, 1800, iTemp); //QrCode.ShowQrCode(result.ticket, new MemoryStream(), WebHelper.MapPaths("~/images/Qrimg/Qr_" + iTemp.ToString() + ".jpg")); //mp.ImgUrl = GlobalConfig.GetConfig()["ResourceDomain"] + "/Qrimg/Qr_" + iTemp.ToString() + ".jpg"; mp.ImgUrl = QrCode.ShowQrCode(result.ticket); } else { mp.TimeoutTicks = 0; mp.SceneId = iTemp; CreateQrCodeResult result = QrCode.Create(token, 0, iTemp); //QrCode.ShowQrCode(result.ticket, new MemoryStream(), WebHelper.MapPaths("~/images/Qrimg/Qr_" + iTemp.ToString() + ".jpg")); //mp.ImgUrl = GlobalConfig.GetConfig()["ResourceDomain"] + "/Qrimg/Qr_" + iTemp.ToString() + ".jpg"; mp.ImgUrl = QrCode.ShowQrCode(result.ticket); } MpQrSceneService.Insert(mp); return(JsonMessage(true, "生成二维码成功")); } catch (Exception e) { Log4NetImpl.Write("MpQrCodeEditProvide失败:" + e.Message); return(JsonMessage(false, "生成二维码失败")); } } else { } return(JsonMessage(false, "生成二维码失败")); }
public ActionResult ApplyWithDraw() { SiteSettingsInfo siteSettings = ServiceHelper.Create <ISiteSettingService>().GetSiteSettings(); if (string.IsNullOrWhiteSpace(siteSettings.WeixinAppId) || string.IsNullOrWhiteSpace(siteSettings.WeixinAppSecret)) { throw new HimallException("未配置公众号参数"); } //string str = AccessTokenContainer.TryGetToken(siteSettings.WeixinAppId, siteSettings.WeixinAppSecret, false); string str = CommonApi.GetToken(siteSettings.WeixinAppId, siteSettings.WeixinAppSecret).access_token; // SceneModel sceneModel = new SceneModel(QR_SCENE_Type.WithDraw) { Object = base.CurrentUser.Id.ToString() }; int num = (new SceneHelper()).SetModel(sceneModel, 600); //CreateQrCodeResult createQrCodeResult = Senparc.Weixin.MP.AdvancedAPIs.QrCodeApi.Create(str, 300, num, 10000); CreateQrCodeResult createQrCodeResult = Senparc.Weixin.MP.AdvancedAPIs.QrCodeApi.Create(str, 300, num, Senparc.Weixin.MP.QrCode_ActionName.QR_SCENE); ViewBag.ticket = createQrCodeResult.ticket; ViewBag.Sceneid = num; IMemberCapitalService memberCapitalService = ServiceHelper.Create <IMemberCapitalService>(); CapitalInfo capitalInfo = memberCapitalService.GetCapitalInfo(base.CurrentUser.Id); if (capitalInfo == null) { ViewBag.ApplyWithMoney = 0; } else { dynamic viewBag = base.ViewBag; decimal?balance = capitalInfo.Balance; viewBag.ApplyWithMoney = balance.Value; } base.ViewBag.IsSetPwd = (string.IsNullOrWhiteSpace(base.CurrentUser.PayPwd) ? false : true); return(View()); }
/// <summary> /// 获取带参二维码 /// </summary> /// <returns></returns> private static CreateQrCodeResult GetQrCode(string token, string eventKey, int isLimit, int expire_seconds) { CreateQrCodeResult qcCodeResult = null; var url = QrCodeUrl; var handler = new HttpClientHandler() { AutomaticDecompression = System.Net.DecompressionMethods.None }; using (HttpClient httpclient = new HttpClient(handler)) { httpclient.BaseAddress = new Uri(url); var content = new FormUrlEncodedContent(new Dictionary <string, string>() { { "token", token }, { "eventKey", eventKey }, { "isLimit", isLimit.ToString() }, { "expire_seconds", expire_seconds.ToString() } }); var response = httpclient.PostAsync(url, content); string responseString = response.Result.Content.ReadAsStringAsync().Result; qcCodeResult = JsonConvert.DeserializeObject <CreateQrCodeResult>(responseString); } return(qcCodeResult); }