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 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 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);//必须要加 }); }