微信小程序> 在微信小程序中识别付款二维码-小程序商城收款后钱在哪-微信小程序需要备案吗

在微信小程序中识别付款二维码-小程序商城收款后钱在哪-微信小程序需要备案吗

浏览量:6532 时间: 来源:v-if
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#

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎