public ActionResult AddQrCode(QrCodeView model) { var config = WeChatCommonService.GetWeChatConfigByID(model.AppId); var sceneId = ((IQrCodeService)_BaseService).GenerateSceneId(); var result = QrCodeApi.Create(config.WeixinAppId, config.WeixinCorpSecret, 0, sceneId); if (result.errcode == Weixin.ReturnCode.请求成功) { var url = QrCodeApi.GetShowQrCodeUrl(result.ticket); string ourPath = "/content/OrCodeMP" + result.url.Substring(result.url.IndexOf("/q/")) + ".jpg"; string savePath = Server.MapPath(ourPath); if (!System.IO.File.Exists(savePath))//判断文件是否存在 { string saveFolderPath = savePath.Replace(savePath.Split('\\').Last(), ""); if (!Directory.Exists(saveFolderPath)) //判断文件夹是否存在 { Directory.CreateDirectory(saveFolderPath); //不存在则创建文件夹 } var mClient = new WebClient(); mClient.DownloadFile(url, savePath); } model.Url = ourPath; model.SceneId = sceneId; ((IQrCodeService)_BaseService).AddOrCode(model, User.Identity.Name); } return(Json(new { result = 200 })); }
/// <summary> /// 根据用户openId 创建或者更新新的二维码 /// </summary> /// <param name="openId"></param> /// <param name="appid"></param> /// <param name="activityName"></param> /// <param name="activityid"></param> /// <returns></returns> public ActionResult CreateOrUpdateQrCodeByOpenId(string openId, string wechatappid, string activityName, string activityid, string isUpdate) { if (!VerifyParam("openId,wechatappid,activityName,activityid,isUpdate")) { return(ErrMsg()); } int newAppid = System.Convert.ToInt32(wechatappid); int newactivityId = System.Convert.ToInt32(activityid); try { var config = WeChatCommonService.GetWeChatConfigByID(newAppid); var user = _WechatMPUserService.Repository.Entities.Where(u => u.OpenId.Equals(openId, StringComparison.CurrentCultureIgnoreCase) && u.AccountManageId == config.AccountManageId && u.IsCanceled == false).FirstOrDefault(); var qrcode = _QrCodeService.Repository.Entities.Where(q => q.RelatedUserId == user.Id); QrCodeMPItem newqr = new QrCodeMPItem(); if (qrcode.Any()) { newqr = qrcode.FirstOrDefault(); UpdateQRCode(newqr, newAppid, isUpdate); } else { newqr.AppId = newAppid; newqr.Description = activityName; newqr.CreatedDate = DateTime.Now; newqr.Deleted = false; newqr.CreatedUserID = User.Identity.Name; newqr.UpdatedDate = DateTime.Now; newqr.UpdatedUserID = User.Identity.Name; newqr.RelatedUserId = user.Id; _QrCodeService.Repository.Insert(newqr); ///添加临时二维码时 先插入数据获取当前记录id ///目前商定 所有活动用二维码 由10位数字组成 前三位代表活动id,后7位代表活动用二维码id。 /// newqr.SceneId = newactivityId * 10000000 + newqr.Id; //var config = WeChatCommonService.GetWeChatConfigByID(newAppid); ///临时用二维码 过期时间为2592000秒 30天 ///x向腾讯申请二维码 并获取二维码url var result = QrCodeApi.Create(config.WeixinAppId, config.WeixinCorpSecret, 2592000, (int)newqr.SceneId); if (result.errcode == Weixin.ReturnCode.请求成功) { var qrurl = QrCodeApi.GetShowQrCodeUrl(result.ticket); var userinfo = Innocellence.Weixin.MP.AdvancedAPIs.UserApi.Info(config.WeixinCorpId, config.WeixinCorpSecret, openId); string userHeadUrl = userinfo.headimgurl; newqr.Url = CombineQrCodeAndHeadImg(userHeadUrl, qrurl); } ///重新更新当前model _QrCodeService.Repository.Update(newqr); } return(Json(new { QrcodeUrl = newqr.Url, SceneId = newqr.SceneId, Status = 200, UpdatedDate = newqr.UpdatedDate }, JsonRequestBehavior.AllowGet)); } catch (Exception e) { _Logger.Error(e); } return(Json(new { Status = 400 }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 传入场景Id后,获取场景Id的二维码图片地址的Url; /// 用户扫描后将关注公众号,且将传递场景Id参数; /// </summary> /// <param name="sceneStr">场景字符串</param> /// <param name="expireSeconds">二维码过期时间,默认5分钟;</param> public string GetQrCodeUrl(string sceneStr, int expireSeconds = 300) { var result = QrCodeApi.Create(AccessToken, expireSeconds, 0, QrCode_ActionName.QR_STR_SCENE, sceneStr); if (result.errcode == Senparc.Weixin.ReturnCode.请求成功) { return(QrCodeApi.GetShowQrCodeUrl(result.ticket)); } return(null); }
/// <summary> /// 使用异步Action测试异步临时二维码接口 /// </summary> /// <returns></returns> public async Task <RedirectResult> QrCodeTest() { var ticks = DateTime.Now.Ticks.ToString(); var sceneId = int.Parse(ticks.Substring(ticks.Length - 7, 7)); var qrResult = await QrCodeApi.CreateAsync(appId, 100, sceneId, QrCode_ActionName.QR_SCENE, "QrTest"); var qrCodeUrl = QrCodeApi.GetShowQrCodeUrl(qrResult.ticket); return(Redirect(qrCodeUrl)); }
public Task <ActionResult> QrCodeTest() { return(Task.Factory.StartNew <ActionResult>(() => { var ticks = DateTime.Now.Ticks.ToString(); var sceneId = int.Parse(ticks.Substring(ticks.Length - 7, 7)); var qrResult = QrCodeApi.CreateAsync(appId, 100, sceneId, QrCode_ActionName.QR_SCENE, "QrTest").Result; var qrCodeUrl = QrCodeApi.GetShowQrCodeUrl(qrResult.ticket); return Redirect(qrCodeUrl); }).ContinueWith <ActionResult>(task => task.Result)); }
/// <summary> /// 创建分享二维码 /// </summary> /// <param name="openId"></param> /// <returns></returns> public string CreateShareQrCode(string openId) { var accessToken = AccessToken(); if (string.IsNullOrEmpty(accessToken)) { return(null); } var qrResult = QrCodeApi.Create(accessToken, 10000, 111, QrCode_ActionName.QR_LIMIT_STR_SCENE, openId); var qrCodeUrl = QrCodeApi.GetShowQrCodeUrl(qrResult.ticket); return(qrCodeUrl); }
public static string WXCreateQrCode(string url) { var qr = QrCodeApi.Create(MPBasicSetting.AppID, 0, (int)CustomerAgent.LIN, QrCode_ActionName.QR_LIMIT_SCENE); if (qr.errcode == ReturnCode.请求成功) { return(QrCodeApi.GetShowQrCodeUrl(qr.ticket)); } else { return(null); } }
public APIResult <string> GetLoginQRCodeUrl([FromBody] GetLoginQRCodeUrlArgsModel args) { if (string.IsNullOrEmpty(args.ClientId)) { throw new ArgumentNullException("clientId"); } WechatQRScene model = new WechatQRScene() { Category = "Login", Status = WechatQRSceneStatus.未处理, QrCodeTicket = "" }; wechatCoreDb.AddToWechatQRScene(model); wechatCoreDb.SaveChanges(); var b = model.Id / 4294967295; model.SceneId = (int)(model.Id - 4294967295 * b); var accessToken = GetAccessToken(); var qrResult = QrCodeApi.Create(accessToken, 60 * 5, model.SceneId, QrCode_ActionName.QR_SCENE); model.QrCodeTicket = qrResult.ticket; wechatCoreDb.AddToMemberWeChatLoginTask(new MemberWeChatLoginTask() { AddIp = GetIp(), AddTime = DateTime.Now, Code = model.SceneId.ToString(), OpenId = "", ClientId = args.ClientId, Status = MemberWeChatLoginTaskStatus.扫二维码进行中 }); wechatCoreDb.SaveChanges(); var url = QrCodeApi.GetShowQrCodeUrl(model.QrCodeTicket); return(Success <string>(url)); }
public void UpdateQRCode(QrCodeMPItem thisqr, int newappid, string isUpdate) { if (thisqr.UpdatedDate.Value.AddMonths(1) < DateTime.Now || isUpdate.Equals("true")) { var config = WeChatCommonService.GetWeChatConfigByID(newappid); var result = QrCodeApi.Create(config.WeixinAppId, config.WeixinCorpSecret, 2592000, (int)thisqr.SceneId); if (result.errcode == Weixin.ReturnCode.请求成功) { var user = _WechatMPUserService.Repository.Entities.Where(u => u.Id == thisqr.RelatedUserId); if (user.Any()) { var userinfo = Innocellence.Weixin.MP.AdvancedAPIs.UserApi.Info(config.WeixinCorpId, config.WeixinCorpSecret, user.FirstOrDefault().OpenId); string userHeadUrl = userinfo.headimgurl; var qrurl = QrCodeApi.GetShowQrCodeUrl(result.ticket); thisqr.Url = CombineQrCodeAndHeadImg(userHeadUrl, qrurl); thisqr.UpdatedDate = DateTime.Now; } } ///重新更新当前model _QrCodeService.Repository.Update(thisqr); } }
/// <summary> /// 保存二维码图片 /// </summary> /// <param name="mpid"></param> /// <param name="name"></param> /// <param name="eventKey"></param> /// <param name="channelType"></param> /// <param name="expireSeconds"></param> /// <returns></returns> public async Task <QrCodeResult> SaveQrCode(int mpid, string name, string eventKey, string channelType, int expireSeconds = 0) { QrCodeResult resultModel = null; var result = await GetQrCode(mpid, eventKey, channelType, expireSeconds); if (result != null) { resultModel = new QrCodeResult(); resultModel.Ticket = result.ticket; using (MemoryStream stream = new MemoryStream()) { //await QrCodeApi.ShowQrCodeAsync(result.ticket, stream); resultModel.Url = QrCodeApi.GetShowQrCodeUrl(result.ticket); //long length = stream.Length; //if(length>0) //{ // using (System.Drawing.Image img = System.Drawing.Bitmap.FromStream(stream)) // { // var fileName = string.Format("{0}_{1}.jpg", name, eventKey); // var tempProfilePicturePath = Path.Combine(_appFolders.QrCodeDownloadFolder, fileName); // resultModel.FilePath = tempProfilePicturePath; // img.Save(tempProfilePicturePath); // } //} //else //{ // throw new UserFriendlyException("对不起,二维码流为空"); //} } } return(resultModel); }
public void CreateHaiBao(string fromUser, string toUser, string temppath) { OfficialAccount_BLL obll = new OfficialAccount_BLL(); //OfficialAccount model = obll.Get(a => a.OriginalID == toUser); OfficialAccount model = obll.Get(a => a.OriginalID == "gh_9229f06559cd"); if (!AccessTokenContainer.CheckRegistered(model.AppID)) //检查是否已经注册 { AccessTokenContainer.Register(model.AppID, model.AppSecret); //如果没有注册则进行注册 } try { Account_QRCode_Template aqt = new Account_QRCode_Template_BLL().GetList(a => a.AccountID == model.AccountID) .OrderByDescending(a => a.CreateTime) .FirstOrDefault(); QRCode_Template temp = new QRCode_Template_BLL().Get(a => a.TemplateID == aqt.TemplateID); DateTime now = DateTime.Now.AddMinutes(-2); WS.Utility.FileHelper.DeleteFilesBeforeTime(temppath, now); WebClient wc = new WebClient(); ICredentials cred; cred = new NetworkCredential("user-22", "user-22"); WebProxy wp = new WebProxy("http://172.18.226.109:808/", true, null, cred); wc.Proxy = wp; //下载原图 //string yuanfilename = Guid.NewGuid().ToString() + ".png"; string yuanlocalfilename = temppath + Guid.NewGuid().ToString() + ".jpg"; //wc.DownloadFile(ConfigurationManager.AppSettings["QiNiuDomain"] + model.QRCodeBgImg, yuanlocalfilename); wc.DownloadFile("http://qiniu.weixin.hairuiit.com/" + aqt.QRCodeBgImg, yuanlocalfilename); Senparc.Weixin.MP.AdvancedAPIs.User.UserInfoJson uij = Senparc.Weixin.MP.AdvancedAPIs.UserApi.Info(model.AppID, fromUser); //加入昵称 string savename1 = temppath + Guid.NewGuid().ToString() + ".jpg"; ImageHelper.Add_FontMark(yuanlocalfilename, savename1, uij.nickname, temp.NickName_FontFamily, (int)temp.NickName_FontSize, Color.Black, (int)temp.NickName_FontX, (int)temp.NickName_FontY); //下载头像 string touxiang = temppath + Guid.NewGuid().ToString() + ".png"; wc.DownloadFile(uij.headimgurl, touxiang); //下载二维码 // Senparc.Weixin.MP.AdvancedAPIs.QrCode.CreateQrCodeResult createQrCodeResult =QrCodeApi.CreateByStr(model.AppID, fromUser); Senparc.Weixin.MP.AdvancedAPIs.QrCode.CreateQrCodeResult createQrCodeResult = QrCodeApi.Create(model.AppID, 0, 0, Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_STR_SCENE, fromUser); string localcodefile = temppath + Guid.NewGuid().ToString() + ".png"; wc.DownloadFile(QrCodeApi.GetShowQrCodeUrl(createQrCodeResult.ticket), localcodefile); wc.Dispose(); ///加头像 string savename2 = temppath + Guid.NewGuid().ToString() + ".jpg"; ImageHelper.Add_ImageMark(savename1, touxiang, savename2, (int)temp.HeadImg_X, (int)temp.HeadImg_Y, (int)temp.HeadImg_Width, (int)temp.HeadImg_Height); string savename3 = temppath + Guid.NewGuid().ToString() + ".jpg"; ImageHelper.Add_ImageMark(savename2, localcodefile, savename3, (int)temp.QRCode_X, (int)temp.QRCode_Y, (int)temp.QRCode_Width, (int)temp.QRCode_Height); Senparc.Weixin.MP.AdvancedAPIs.Media.UploadTemporaryMediaResult media = Senparc.Weixin.MP.AdvancedAPIs.MediaApi.UploadTemporaryMedia(model.AppID, Senparc.Weixin.MP.UploadMediaFileType.image, savename3); Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendText(model.AppID, fromUser, "专属海报已经接收成功,请保存到手机相册,分享海报兑换奖品哦!"); Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendImage(model.AppID, fromUser, media.media_id); Thread.Sleep(6000); WS.Utility.FileHelper.Delete(yuanlocalfilename); WS.Utility.FileHelper.Delete(savename1); WS.Utility.FileHelper.Delete(savename2); WS.Utility.FileHelper.Delete(savename3); WS.Utility.FileHelper.Delete(touxiang); WS.Utility.FileHelper.Delete(localcodefile); //var responseMessage = this.CreateResponseMessage<ResponseMessageText>(); //responseMessage.Content = "生成成功"; //return responseMessage; //return null; } catch (Exception ex) { //LogHelper.ErrorInfo(ex); //Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendText(model.AppID, requestMessage.FromUserName, // ex.Message.ToString()); Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendText(model.AppID, fromUser, ex.ToString()); } }