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 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)); }