コード例 #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 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));
        }