微信开发之带参数的二维码 - 胡双挺
微信二维码
用的c#开源框架Senparc.Weixin
二维码图片下载功能实现如下:
// CreateQrCodeResult qrCodeResult = QrCodeApi.Create(AppId, 2, i, 604800);//(expireSeconds>0) 临时二维码(expireSeconds=0)永久二维码 var accessToken = AccessTokenContainer.TryGetToken(WebConfigurationManager.AppSettings["WeixinAppId"], WebConfigurationManager.AppSettings["WeixinSecret"]); CreateQrCodeResult qrCodeResult = QrCodeApi.CreateByStr(accessToken, i.ToString());// 永久二维码调用此方法 MemoryStream memStream = new MemoryStream(); QrCodeApi.ShowQrCode(qrCodeResult.ticket, memStream); long leng = memStream.Length; System.Drawing.Image img = System.Drawing.Bitmap.FromStream(memStream); url = QrCodeApi.GetShowQrCodeUrl(qrCodeResult.ticket);
带参数的二维码值获取事件如下 订阅事件与扫描事件:
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //通过扫描关注 var responseMessage = CreateResponseMessage<ResponseMessageText>(); MYT_RequestMessage rm = new MYT_RequestMessage() { CreateTime = requestMessage.CreateTime, FromUserName = requestMessage.FromUserName, MsgId = requestMessage.MsgId, MsgType = requestMessage.MsgType.ToString(), ToUserName = requestMessage.ToUserName, Latitude = 0, Longitude = 0, Precision = 0 }; var weixin = new IyouBox.Service.WeiXin.WeiXinQrCode(); AdvancedAPIs.User.UserInfoJson userInfo = new AdvancedAPIs.User.UserInfoJson(); Log4NetHelper.WriteCustomLog("通过扫描关注。" + requestMessage.EventKey); if (!string.IsNullOrEmpty(requestMessage.EventKey)) { if (weixin.IsQrInfoExit(requestMessage.FromUserName)) { userInfo = UserApi.Info(appId, rm.FromUserName); weixin.SaveQrInfo(rm, requestMessage.EventKey, userInfo.unionid); } } responseMessage.Content = "通过扫描关注。参数的值为" + requestMessage.EventKey + "UnionId" + userInfo.unionid; return responseMessage; }
public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage) { var responseMessage = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage); Log4NetHelper.WriteCustomLog("订阅(关注)事件" + requestMessage.EventKey); MYT_RequestMessage rm = new MYT_RequestMessage() { CreateTime = requestMessage.CreateTime, FromUserName = requestMessage.FromUserName, MsgId = requestMessage.MsgId, MsgType = requestMessage.MsgType.ToString(), ToUserName = requestMessage.ToUserName, Latitude = 0, Longitude = 0, Precision = 0 }; var weixin = new IyouBox.Service.WeiXin.WeiXinQrCode(); AdvancedAPIs.User.UserInfoJson userInfo = new AdvancedAPIs.User.UserInfoJson(); if (!string.IsNullOrEmpty(requestMessage.EventKey)) { if (weixin.IsQrInfoExit(requestMessage.FromUserName)) { userInfo = UserApi.Info(appId, rm.FromUserName); weixin.SaveQrInfo(rm, requestMessage.EventKey, userInfo.unionid); } } responseMessage.Content = GetWelcomeInfo() + "关注事件过来的请求参数值为:" + requestMessage.EventKey + "UnionId" + userInfo.unionid; return responseMessage; }
以上就是带参数的二维码功能的实现