1.一、前言
2.由于微信小程序的规则限制,在小程序内部是无法直接识别二维码的,这样对于想通过微信小程序给微信公众号引流的想法大抵都被扼杀了,偶然间发现微信官方小程序“微保”竟然做到了,而他们竟是通过小程序客服消息这种曲线救国的方式实现的。
3.于是好好研究了一番总算也把功能实现了,遂整理思绪记录一下实现过程和方法,为有想通过微信小程序给公众号引流想法的开发者提供借鉴(相信有此想法的还是大有人在的哈哈~)。
4.二、如何实现二维码识别?
5.“微保”小程序的实现步骤如下:1、用户在小程序中点击去关注的按钮跳转到客服消息聊天页面。
6.2、输入“666”自动回复微信公众号关注的链接,点击链接进入微信公众号二维码页面。
7.3、用户长按识别二维码直接跳转公众号关注页面,直接关注即可。
8.虽然规则限制不允许小程序给公众号引流,并做了很多技术手段上的规避,但通过这种方式能够实现也算是开了一扇小窗。
9.三、代码实现
10.1、小程序端代码实现
buttonclass"pay-button"open-type'contact'show-message-card'true'send-message-img'/images/icon_input.png'微信付款/button11.你这不是说小程序给公众号引流么?怎么扯到了微信付款,额.....我这里做的正是在小程序中识别微信收款码的功能,不过原理都是一样的,只要实现了在小程序内识别二维码的功能,你将这个微信收款码换成公众号二维码不就成了么!!好,言归正传。
12.代码释义:open-type'contact'指定按钮类型为唤起客服消息的按钮。
13.show-message-card是否显示会话内消息卡片,设置此参数为true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息。
14.send-message-title官方文档解释为会话内消息卡片标题,我试过了并没有用,还有一点“微保”小程序点击按钮可自动输入并发送“666”,研究了半天我这边并不能如愿实现此功能,如有知道如何实现的还请告知一二,万分感谢~。
15.send-message-img指定会话内消息卡片图片即会话窗口右下角自动展示的图片。如下图:
16.2、后端代码实现我这里后端代码使用C#实现的,如有需要其他语言的实现代码还请自行百度。
17.1)、接口认证对接微信客服消息前需要在微信公众平台配置消息推送Token以及我们自己的API地址并验证成功才行,这一步操作颇费了些功夫。
18.消息推送配置
19.认证代码如下:
///summary///微信消息推送配置认证////summary///paramname"echostr"随机字符串/param///paramname"signature"微信签名/param///paramname"timestamp"时间戳/param///paramname"nonce"随机数/param///returns/returns[HttpGet]publicHttpResponseMessageweixinchat(stringechostr,stringsignature,stringtimestamp,stringnonce){try{stringtoken"xxxxx";//写自己配置的tokenif(!CheckSignature(token,signature,timestamp,nonce))echostr"验证不正确";HttpResponseMessageresponseMessagenewHttpResponseMessage{ContentnewStringContent(echostr,Encoding.GetEncoding("UTF-8"),"text/plain")};returnresponseMessage;}catch(Exceptionex){throwex;}}20.2)、接收消息内容并回复当用户在客服会话发送消息、或由某些特定的用户操作引发事件推送时,微信服务器会将消息或事件的数据包发送到开发者填写的URL,各消息类型的推送JSON、XML数据包结构如下:
21.文本消息
22.用户在客服会话中发送文本消息时将产生如下数据包:JSON格式
{"ToUserName":"toUser","FromUserName":"fromUser","CreateTime":1482048670,"MsgType":"text","Content":"thisisatest","MsgId":1234567890123456}23.XML格式
xmlToUserName![CDATA[toUser]]/ToUserNameFromUserName![CDATA[fromUser]]/FromUserNameCreateTime1482048670/CreateTimeMsgType![CDATA[text]]/MsgTypeContent![CDATA[thisisatest]]/ContentMsgId1234567890123456/MsgId/xml24.参数说明
25.图片消息
26.用户在客服会话中发送图片消息时将产生如下数据包:
27.JSON格式
{"ToUserName":"toUser","FromUserName":"fromUser","CreateTime":1482048670,"MsgType":"image","PicUrl":"thisisaurl","MediaId":"media_id","MsgId":1234567890123456}28.XML格式
xmlToUserName![CDATA[toUser]]/ToUserNameFromUserName![CDATA[fromUser]]/FromUserNameCreateTime1482048670/CreateTimeMsgType![CDATA[image]]/MsgTypePicUrl![CDATA[thisisaurl]]/PicUrlMediaId![CDATA[media_id]]/MediaIdMsgId1234567890123456/MsgId/xml29.还有小程序卡片消息、进入会话事件等这里就不一一列举了,大家自己看官方文档接收消息和事件。
30.消息回复代码实现
///summary///接收用户消息并处理////summary///returns/returns[HttpPost]publicHttpResponseMessageweixinchat(){varcontentRequest.Content.ReadAsStringAsync().Result;wxMessageModelmsgModelJsonConvert.DeserializeObjectwxMessageModel(content);LogUtil.WriteLog("接收的客服消息:"+msgModel.Content);if(IsNumber(msgModel.Content)){TradeOrderModeltmodelnewTradeOrderBLL().getModelByOrderNo(msgModel.Content);stringreceivecode"";stringusername"";if(tmodel.retype1){usernametmodel.reusername;receivecodenewUserBLL().GetModel(tmodel.reuserid).receivecode;}else{usernametmodel.orderusername;receivecodenewUserBLL().GetModel(tmodel.orderuserid).receivecode;}stringpayImage"https://xxxx.com/"+receivecode;WxMessageUtil.SendMessage(msgModel.FromUserName,payImage,tmodel.totalmoney,username);}HttpResponseMessageresponseMessagenewHttpResponseMessage();returnresponseMessage;}///summary///接收到的消息模型////summarypublicclasswxMessageModel{publicstringFromUserName{get;set;}publicstringMsgType{get;set;}publicstringContent{get;set;}}///summary///WxMessageUtil发送消息////summary///paramname"touser"/parampublicstaticboolSendMessage(stringtouser,stringpayimg,decimalmoney,stringreciveuser){try{stringaccessTokenWeixinUtil.GetAccessToken();stringSendMessageApiConfigurationManager.AppSettings["SendMessageApi"];stringpostUrlSendMessageApi+"?access_token"+accessToken;JObjectdatanewJObject();data.Add("touser",touser);data.Add("msgtype","link");data.Add("link",JObject.FromObject(new{title"微信支付",description"点击链接进入扫码付款r金额:¥"+money+"r收款人:"+reciveuser,urlpayimg,thumb_urlpayimg}));LogUtil.WriteLog("客服消息发送用户:"+touser+"内容:"+payimg);stringpostDatadata.ToString();varresWeixinUtil.PostResponse(postUrl,postData);RetMessageretJsonConvert.DeserializeObjectRetMessage(res);LogUtil.WriteLog("客服消息发送结果:"+ret.errmsg);returnret.errmsg"ok";}catch(Exceptionex){throwex;}}31.代码中涉及的两个Util类WeixinUtil,WxMessageUtil链接:https://pan.baidu.com/s/1cJ-s48LGIrDvufCJXr38rw密码:7pyc取用自便。
32.最终实现效果如下:
33.参考资料:小程序官方文档微信小程序-消息推送服务器认证C#
在微信小程序中识别付款二维码-小程序商城收款后钱在哪-微信小程序需要备案吗
浏览量:6532
时间:
来源:v-if
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。
最新资讯
-

即速应用,赋能企业玩转微信小程序智慧经营
作为国内领军的智慧商业经营服务商,即速应用始终秉承“让每个企业都拥有自己的智慧店铺”的愿景,持续赋能更多企业玩转智慧经营。即速应用旗下拥有“小程序搭建工具-即速应用”、“私域流量专家-即客云”等产品,帮助商家打通互联网全生态营销闭环。 -

即客云2.0重磅更新,让微信小程序运营更简单!
即客云作为一款基于企业微信的第三方工具,现从多维度提供超过30种功能,自上线以来,已服务多家企业,受到一致好评。近期,我们根据客户反馈和市场调研正式推出升级版 即客云2.0!更新了私域运营SOP,群日历功能,批量拓客,客户雷达,消息推送,个人欢迎语,帮助企业更好运用企业微信;同时提升了社群运营工作标准化,提升运营效率,帮助企业实现客户增长,玩转私域流量。 -

零代码 + AI 双轮驱动|即速应用解锁人工智能小程序开发新范式
无需代码、无需 AI 算法功底,普通人也能快速搭建智能小程序。即速应用将人工智能与零代码开发深度融合,推出 AI 智能生成能力,用户通过自然语言描述需求,AI 自动生成小程序页面、功能模块与后台配置,覆盖商城、预约、同城、社区团购等全场景。平台内置 AI 智能推荐、智能客服、用户画像分析等能力,一键对接微信生态,打通视频号、企业微信、短信跳转,帮企业快速落地 AI 应用,抢占智慧经营先机,让每家企业都拥有 AI 驱动的智慧店铺。










