Пример #1
0
        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"));
            }
        }
Пример #2
0
        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));
            }
        }
Пример #3
0
        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);//必须要加
            });
        }