/// <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); }
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 })); }
public ActionResult ApplyWithDraw() { var siteSetting = SiteSettingApplication.SiteSettings; if (string.IsNullOrWhiteSpace(siteSetting.WeixinAppId) || string.IsNullOrWhiteSpace(siteSetting.WeixinAppSecret)) { throw new MallException("未配置公众号参数"); } var token = AccessTokenContainer.TryGetAccessToken(siteSetting.WeixinAppId, siteSetting.WeixinAppSecret); SceneModel scene = new SceneModel(QR_SCENE_Type.WithDraw) { Object = CurrentUser.Id.ToString() }; SceneHelper helper = new SceneHelper(); var sceneid = helper.SetModel(scene); var ticket = QrCodeApi.Create(token, 300, sceneid, Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_SCENE, null); ViewBag.ticket = ticket.ticket; ViewBag.Sceneid = sceneid; var balance = MemberCapitalApplication.GetBalanceByUserId(CurrentUser.Id); ViewBag.ApplyWithMoney = balance; var member = _iMemberService.GetMember(CurrentUser.Id);//CurrentUser对象有缓存,取不到最新数据 ViewBag.IsSetPwd = string.IsNullOrWhiteSpace(member.PayPwd) ? false : true; ViewBag.WithDrawMinimum = siteSetting.WithDrawMinimum; ViewBag.WithDrawMaximum = siteSetting.WithDrawMaximum; ViewBag.Keyword = string.IsNullOrWhiteSpace(SiteSettings.SearchKeyword) ? SiteSettings.Keyword : SiteSettings.SearchKeyword; ViewBag.Keywords = SiteSettings.HotKeyWords; return(View()); }
/// <summary> /// 获取带有参数的场景关注的二维码的URL; /// http://www.cnblogs.com/txw1958/p/weixin-qrcode-with-parameters.html /// 说明: 本地不下载图片,因为此图片为临时链接, /// 所以,在 APP端下载图片并叠加图片; /// </summary> /// <param name="sceneId">场景Id</param> /// <returns></returns> public string GetErcodeWithEntryParameter(int sceneId) { var result = QrCodeApi.Create(Config.AppId, 300, sceneId, QrCode_ActionName.QR_SCENE); var ticket = result.ticket; return("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + HttpUtility.UrlEncode(ticket)); }
/// <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> /// 申请带参二维码(临时) /// </summary> /// <param name="stationId"></param> /// <param name="doctorId"></param> /// <param name="rxDoctorId"></param> /// <returns></returns> public async Task <string> CreateQRCodeUrl(int stationId, int doctorId, int rxDoctorId) { var ticks = DateTime.Now.Ticks.ToString(); var sceneId = int.Parse(ticks.Substring(ticks.Length - 7, 7)); var qrResult = await QrCodeApi.CreateAsync(_wxParams.AppId, 60 * 60 * 24, sceneId, QrCode_ActionName.QR_STR_SCENE, $"RX,{stationId},{doctorId},{rxDoctorId}"); return(qrResult.url); }
/// <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)); }
/// <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); }
public ActionResult NotAttention(long id) { BonusModel bonusModel = new BonusModel(_bonusService.Get(id)); string str = AccessTokenContainer.TryGetToken(_siteSetting.WeixinAppId, _siteSetting.WeixinAppSecret, false); SceneHelper sceneHelper = new SceneHelper(); int num = sceneHelper.SetModel(new SceneModel(QR_SCENE_Type.Bonus, bonusModel), 600); string str1 = QrCodeApi.Create(str, 86400, num, 10000).ticket; ViewBag.ticket = str1; return(View("~/Areas/Mobile/Templates/Default/Views/Bonus/NotAttention.cshtml", bonusModel)); }
/// <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 ActionResult BindQRCodeSence() { var memberId = GetMemberId(); var member = wechatCoreDb.QueryMemberWechat() .Where(m => !m.IsDel) .Where(m => m.MemberId == memberId) .FirstOrDefault(); if (member != null) { throw new Exception("已经绑定微信"); } var code = Common.CommonUtil.CreateNoncestr(15); WechatQRScene model = new WechatQRScene() { Category = "BindMember", 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.AddToMemberWeChatBindTask(new MemberWeChatBindTask() { AddIp = GetIp(), AddTime = DateTime.Now, Code = model.SceneId.ToString(), MemberId = GetMemberId(), OpenId = "", Status = MemberWeChatBindTaskStatus.未使用 }); wechatCoreDb.SaveChanges(); using (var stream = new MemoryStream()) { QrCodeApi.ShowQrCode(model.QrCodeTicket, stream); byte[] data = stream.ToArray(); return(File(data, "image/jpeg")); } }
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); } }
/// <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 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)); }
public ActionResult CreateQrCode(int isRefresh = 0) { try { string userMsg = Common.UserHelper.Instance.getCookie(); string[] userArray = userMsg.Split('|'); string userStr = userArray[0] + "P|" + userArray[4]; //string userStr = "5P|oCbECv1pwMNyAodYQtRJVvJf_Zsg"; string fullPath = Server.MapPath("\\images\\full\\") + string.Format("full-{0}.jpg", userArray[4]); FileInfo fileInfo = new FileInfo(fullPath); if ((!fileInfo.Exists) || (isRefresh == 1)) { //var result = QrCodeApi.Create(Common.CommonConst.AppID, 100, 999999, QrCode_ActionName.QR_SCENE, "邀请"); var result = QrCodeApi.Create(Common.CommonConst.AppID, 100, 1000, QrCode_ActionName.QR_LIMIT_STR_SCENE, userStr); var headFileName = Server.MapPath("\\images\\header\\") + string.Format("head-{0}.jpg", DateTime.Now.ToString("yyyy-MM-dd HH_mm_ss")); using (FileStream fsHeader = new FileStream(headFileName, FileMode.OpenOrCreate)) { var user = Senparc.Weixin.MP.AdvancedAPIs.UserApi.Info(Common.CommonConst.AppID, userArray[4]); Senparc.Weixin.HttpUtility.Get.Download(user.headimgurl, fsHeader); } var dirPath = Server.MapPath("\\images"); var fileName = Server.MapPath("\\images\\qrcode\\") + string.Format("qrcode-{0}.jpg", DateTime.Now.ToString("yyyy-MM-dd HH_mm_ss")); using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate)) { QrCodeApi.ShowQrCode(result.ticket, fs);//下载二维码 } // 模板路径 string sourcePath = dirPath + "\\template\\haibao.jpg"; // 二维码路径 string twoDimensionCode = fileName; string headPath = headFileName; fileInfo.Delete(); int seq = 0; int.TryParse(userArray[0], out seq); string reqNum = (seq + 2000).ToString(); Logger.Warn("seq:" + reqNum); // 生成个人海报 //ImageHelper.GeneratePoster(sourcePath, twoDimensionCode, fullPath, headPath); ImageHelper.GeneratePoster(sourcePath, twoDimensionCode, fullPath, headPath, reqNum); } return(Content(fullPath)); } catch (Exception e) { return(Content(e.Message)); } }
public void CreateQrCode(Wx_App app, string activityIds) { activityIds.Split <long>().Each(activityId => { var activity = Get(activityId); if (activity != null) { var result = QrCodeApi.Create(app.AppId, 2592000, 1, QrCode_ActionName.QR_LIMIT_STR_SCENE, $"{activityId}"); activity.QrCode = result.url; activity.DUpdate = DateTime.Now; UpdateQrCode(activity); } }); }
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()); }
//未关注 public ActionResult NotAttention(long id) { BonusModel model = new BonusModel(this._iBonusService.Get(id)); var settings = SiteSettingApplication.SiteSettings; //TODO:改成统一的方式取 Token var token = AccessTokenContainer.TryGetAccessToken(settings.WeixinAppId, settings.WeixinAppSecret); SceneHelper helper = new SceneHelper(); SceneModel scene = new SceneModel(QR_SCENE_Type.Bonus, model); int sceneId = helper.SetModel(scene); var ticket = QrCodeApi.Create(token, 86400, sceneId, QrCode_ActionName.QR_LIMIT_SCENE, null, 10000).ticket; ViewBag.ticket = ticket; return(View("~/Areas/Mobile/Templates/Default/Views/Bonus/NotAttention.cshtml", model)); }
/// <summary> /// 申请带参二维码 /// </summary> /// <param name="mpid"></param> /// <param name="eventKey"></param> /// <param name="channelType"></param> /// <param name="expireSeconds"></param> /// <returns></returns> public async Task <CreateQrCodeResult> GetQrCode(int mpid, string eventKey, string channelType, int expireSeconds = 0) { var account = await _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int> { Id = mpid }); var access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret); try { if (channelType == Senparc.Weixin.MP.QrCode_ActionName.QR_STR_SCENE.ToString()) { return(await QrCodeApi.CreateAsync(access_token, expireSeconds, 0, Senparc.Weixin.MP.QrCode_ActionName.QR_STR_SCENE, eventKey)); } else if (channelType == Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_STR_SCENE.ToString()) { return(await QrCodeApi.CreateAsync(access_token, expireSeconds, 0, Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_STR_SCENE, eventKey)); } else { return(null); } } catch { access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true); try { if (channelType == Senparc.Weixin.MP.QrCode_ActionName.QR_STR_SCENE.ToString()) { return(await QrCodeApi.CreateAsync(access_token, expireSeconds, 0, Senparc.Weixin.MP.QrCode_ActionName.QR_STR_SCENE, eventKey)); } else if (channelType == Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_STR_SCENE.ToString()) { return(await QrCodeApi.CreateAsync(access_token, expireSeconds, 0, Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_STR_SCENE, eventKey)); } else { return(null); } } catch (Exception ex) { throw new UserFriendlyException(ex.Message); } } }
public void CreateAsyncTest() { var openId = base._testOpenId; base.TestAyncMethod(1, openId, () => { var result = QrCodeApi.CreateAsync(base._appId, 100, 999999, QrCode_ActionName.QR_SCENE, "QrTest").Result; //Assert.AreEqual(ReturnCode.请求成功,result.errcode); Console.WriteLine("Result(T-{0}):{1}", Thread.CurrentThread.GetHashCode(), result.ToString()); //发送消息通知生成状态 var testData = new //TestTemplateData() { first = new TemplateDataItem(string.Format("【测试-{0}】QrCode单元测试完成一个线程。", SystemTime.Now.ToString("T"))), keyword1 = new TemplateDataItem(openId), keyword2 = new TemplateDataItem("QrCode测试"), keyword3 = new TemplateDataItem(SystemTime.Now.Ticks.ToString("O")), remark = new TemplateDataItem("结果:" + result.errcode.ToString()) }; var tmResult = TemplateApi.SendTemplateMessageAsync(base._appId, openId, "cCh2CTTJIbVZkcycDF08n96FP-oBwyMVrro8C2nfVo4", (result.url) , testData).Result; if (result.errcode == ReturnCode.请求成功) { //下载并获得二维码 try { var fileName = Path.Combine(System.Environment.CurrentDirectory, "..\\", string.Format("qrcode-{0}.jpg", SystemTime.Now.ToString("yyyy-MM-dd HH_mm_ss"))); using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate)) { QrCodeApi.ShowQrCode(result.ticket, fs);//下载二维码 } //下载之后,文件储存在\src\Senparc.Weixin.MP\Senparc.Weixin.MP.Test\bin目录下, //打开.jpg文件之后,使用微信扫一扫查看效果。 } catch { } } base.AsyncThreadsCollection.Remove(Thread.CurrentThread);//必须要加 }); }
public ActionResult Add(long id = 0) { int sceneid = 0; string ticketstr = ""; var settings = SiteSettingApplication.SiteSettings; try { if (!string.IsNullOrWhiteSpace(settings.WeixinAppId) && !string.IsNullOrWhiteSpace(settings.WeixinAppSecret)) { string token = AccessTokenContainer.TryGetAccessToken(settings.WeixinAppId, settings.WeixinAppSecret); if (string.IsNullOrWhiteSpace(token)) { token = AccessTokenContainer.TryGetAccessToken(settings.WeixinAppId, settings.WeixinAppSecret, true); } SceneModel scene = new SceneModel(QR_SCENE_Type.ShopShipper) { //Object = CurrentUser.Id.ToString() }; SceneHelper helper = new SceneHelper(); sceneid = helper.SetModel(scene); var ticket = QrCodeApi.Create(token, 300, sceneid, QrCode_ActionName.QR_LIMIT_SCENE, null, 10000); ticketstr = ticket.ticket; } } catch { Log.Error("设置退货地址出错:微信配置错误,无法获取到微信凭证"); } ViewBag.ticket = ticketstr; ViewBag.Sceneid = sceneid; ShopShipper data = new ShopShipper { ShopId = CurShopId }; if (id > 0) { data = ShopShippersApplication.GetShopShipper(CurShopId, id); if (data == null) { throw new MallException("错误的参数"); } } return(View(data)); }
public ActionResult CanReceiveNotAttention(long id, string openId = "", decimal price = 0) { ViewBag.Price = price; BonusModel model = new BonusModel(this._iBonusService.Get(id)); //TODO:改成统一的方式取 Token var settings = SiteSettingApplication.SiteSettings; var token = AccessTokenContainer.TryGetAccessToken(settings.WeixinAppId, settings.WeixinAppSecret); SceneHelper helper = new SceneHelper(); var qrTicket = QrCodeApi.Create(token, 86400, 123456789, QrCode_ActionName.QR_LIMIT_SCENE, null).ticket; ViewBag.ticket = WXApiApplication.GetTicket(settings.WeixinAppId, settings.WeixinAppSecret); model.ImagePath = MallIO.GetFilePath(model.ImagePath); ViewBag.OpenId = openId; ViewBag.QRTicket = qrTicket; return(View(model)); }
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(long id) { WeiActivityModel activityModelByBigWheel = WeiActivityApplication.GetActivityModelByBigWheel(id); activityModelByBigWheel.userId = this.curUserId; int availableIntegrals = this._iMemberIntegralService.GetMemberIntegral(this.curUserId).AvailableIntegrals; activityModelByBigWheel.participationCount = this.GetParticipationCount(activityModelByBigWheel); this.consumePoint = activityModelByBigWheel.consumePoint; ((dynamic)base.ViewBag).Integrals = availableIntegrals; try { string ticket = QrCodeApi.Create(AccessTokenContainer.TryGetToken(this._siteSetting.WeixinAppId, this._siteSetting.WeixinAppSecret, false), 0x15180, 0x7661b3, 0x2710).ticket; ((dynamic)base.ViewBag).QRTicket = ticket; } catch { } return(base.View(activityModelByBigWheel)); }
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); } }
public JsonResult getWinxin(string pluginId, string destination) { long uid = ShopApplication.GetShopManagers(CurrentSellerManager.ShopId); var siteSetting = SiteSettingApplication.SiteSettings; //微信二维码 if (string.IsNullOrWhiteSpace(siteSetting.WeixinAppId) || string.IsNullOrWhiteSpace(siteSetting.WeixinAppSecret)) { throw new MallException("未配置公众号参数"); } var token = AccessTokenContainer.TryGetAccessToken(siteSetting.WeixinAppId, siteSetting.WeixinAppSecret); SceneModel scene = new SceneModel(QR_SCENE_Type.Binding) { Object = uid.ToString() }; SceneHelper helper = new SceneHelper(); var sceneid = helper.SetModel(scene); var ticket = QrCodeApi.Create(token, 300, sceneid, Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_SCENE, null); return(Json(new { success = true, msg = "成功", ticket = ticket.ticket, Sceneid = sceneid })); }
private void ResponseXML(WxXmlModel wxXmlModel) { var QrCodeApi = new QrCodeApi(); var XML = ""; switch (wxXmlModel.MsgType) { case "text": //文本回复 XML = ResponseMessage.GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, wxXmlModel.Content); break; case "event": switch (wxXmlModel.Event) { case "subscribe": if (string.IsNullOrEmpty(wxXmlModel.EventKey)) { XML = ResponseMessage.GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, "关注成功"); } else { XML = ResponseMessage.GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, wxXmlModel.EventKey); } break; case "SCAN": XML = ResponseMessage.ScanQrcode(wxXmlModel.FromUserName, wxXmlModel.ToUserName, wxXmlModel.EventKey); //扫描已关注二维码已关注,直接推送事件 break; } break; default: //默认回复 break; } HttpContext.Current.Response.Write(XML); HttpContext.Current.Response.End(); }
public ActionResult Index(long id) { //TODO:改成统一的方式取 Token var settings = SiteSettingApplication.SiteSettings; if (settings.IsOpenH5) { var token = AccessTokenContainer.TryGetAccessToken(settings.WeixinAppId, settings.WeixinAppSecret); SceneHelper helper = new SceneHelper(); var qrTicket = QrCodeApi.Create(token, 86400, 7758258, Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_SCENE, null).ticket; ViewBag.QRTicket = qrTicket; } WeiActivityModel activityModel = WeiActivityApplication.GetActivityModel(id); activityModel.userId = curUserId; activityModel.winModel = AddWinInfo(activityModel); activityModel.winModel.integrals = MemberIntegralApplication.GetAvailableIntegral(curUserId); activityModel.participationCount = GetParticipationCount(activityModel); consumePoint = activityModel.consumePoint; return(View(activityModel)); }