微信公众平台接入经验分享,纯干货

这篇文章是千米网移动团队半年多时间使用微信平台开发多租户微店系统相关经验的分享与记录,涉及微信JSSDK,消息推送,微店支付等方面,微信开发的坑实在太多了,早期的时候官方文档也有不少问题,网上相关的资料很多都比较旧。 文章后面还会持续更新修正, 希望能对想了解使用微信平台的小伙伴们有些帮助,能够少走些弯路,少踩些坑。

为何要关注微信

  • 巨大流量入口
  • 相对于App,用户使用成本低

微信公众号

服务号与订阅号的区别

服务号:

服务号主要面向企业,为用户提供服务。 申请需要提供相应的公司材料,以及验证费用。
服务号每个月仅能群发一条消息。
服务号默认有自定义菜单功能,可以申请微信认证,微信认证通过后,自动获得高级接口权限,例如语音识别、用户信息获取、客服接口等。

订阅号:

订阅号主要面向媒体和个人,为用户提供资讯和信息。
订阅号每天能够群发一条消息。

订阅号默认没有自定义菜单功能。对于政府、媒体、明星等非企业类型的订阅号可申请微信认证,微信认证通过后,可获得自定义菜单权限。

企业与个人的订阅号不能申请微信认证。

无法使用微信支付,即使在订阅号中打开另外一个公众号的微信支付也不行,会提示无法跨号支付。

个人账号类型的订阅号没有网页授权获取用户基本信息权限,即无法获取微信用户的信息。(现在政府机构账号类是可以支持的)

公众号登录后相关的选项的介绍

两个token的区别

在微信公众号的接入中,会涉及到两个token,需要区分清楚,授权机制也是有所不同的。

公众号access_token

access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。 管理公众号所使用到的接口才会用到该token。请求地址和网页授权地址也是不同的。
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
官方文档具体说明

网页授权用户access_token

如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。
获取用户信息的接口都是需要用户的token。
官方文档具体说明

OpenID是什么

实际上是加密后的微信号,每个用户对每个公众号的OpenID是唯一的。用户对不同的公众号下存在不同的OpenID。
在微信公众号管理用户接口中,获取用户信息都会用到OpenID。并且在发起微信支付的时候,也需要用到OpenID。

页面授权接入

用户在微信访问授权网页时候,会允许被获取个人信息。总体流程:

  1. 引导用户进入授权页面同意授权,获取code
  2. 通过code换取网页授权access_token(与微信公众号中的access_token不同)
  3. 如果需要,开发者可以刷新网页授权access_token,避免过期
  4. 通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

其中,在引导用户授权返回code后,直接由第三方的服务器通过code去请求用户access_token和相关用户信息

授权回调域名

在公众号开发管理中网页授权获取用户基本信息设置授权域名,此域名下的网页将获得微信授权。 但是,此域名对应的子域名是没有不具有微信授权的。即,m.qianmi.com如果被设置后,只有m.qianmi.com/.../xxx.html的页面有权限,1000.qianmi.com是没有权限的。

两种授权级别

  • 静默授权,只能获取用户access_token和OpenID,不会有单独的页面提示用户是否授权。
  • 非静默授权,还能获取用户其他基本信息,会有个单独的页面提示用户是否授权。

微信支付授权接入(H5网页)支付

已认证通过的微信公众号在开通微信支付功能后具有的功能。
在微信支付选项->开发配置下可以设置支付授权目录,一般是你的后台接口的URL
需要注意的是,虽然这里可以设置三个授权目录,但是由于网页授权地址只能有一个,所以,H5网页支付实际上只能设置一个支付目录。

开发流程

微信收货地址

在微信中的H5,可以通过JSAPi获取到,授权用户的收货地址。在第一次获取授权地址的时候, 会有授权的提示是否同意使用你的地址。参数调用方式同微信支付基本相同。官方文档

需要注意的是,JS调用上使用的时间戳必须是字符串,虽然在iphone上是数字也没问题,但是在安卓上是会引起权限错误的提示

微信JSSDK

微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。

具体开发步骤这里就不重复阐述了,官方文档

这里需要提到的是,JSSDK依旧需要个后台,作为签名算法服务(jsapi_ticket)。
前端在调用jssdk前需要通过wx.config配置权限,一般做法可以通过请求后台,直接生成config内容。
还有一点,部分主动执行的接口,需要放在wx.ready里。

公众号事件推送

在开发者中心这一栏里,有个服务器配置,用户发给公众号的消息以及开发者需要的事件推送,将被微信转发到该URL中。 比如,用户关注公众号,用户发送消息给公众号,都可以获得通知,并且可以给一个回复信息。

  • URL(服务器地址): 接受转发消息的地址
  • Token令牌: 随意的字符串,你就是写个token也是可以的
  • EncodingAESKey: 可以随即生成,接受转发的服务需要有这个KEY
    第一次提交的时候,会进行验证

调试的问题

调试是微信H5开发的一个痛点,没有合适的调试工具,一般只能alert。目前得出两种比较靠谱的方式:

  • Weinre 远程调试,不过只能看到console,无法断点调试。
  • chrome webview调试,只能在模拟器上运行微信,然后通过chrome
    inspect后调试,可以断点,可普通网页开发一样。 不过需要注意的是,只能在ARM上运行微信,这意味着模拟器不能用genymotion了,android自带的模拟器非常的慢。

微信开放平台

从上面可以看到公众号配置一些开发的东西是十分复杂,不方便的。那么微信开放平台实际上就提供了一键配置的服务。

公众号管理者只需要被引导到指定页面后,授权给开发者在微信开放平台上的应用,就可以什么都不用操作。

微信开放平台上的应用可以把公众号相关配置全部通过api接口来设置完成。

版权声明:本文为博主原创文章,转载请保留出处http://blog.csdn.net/offbye

时间: 2025-01-07 04:14:24

微信公众平台接入经验分享,纯干货的相关文章

微信公众平台接入Java实例,结合BAE

关于注册公众账号这块不详细介绍 注册完成,审核认证完,就可以开始玩了 1.如何成为开发者? 需要填写接口配置信息,需要自己的服务器资源,一般自己没有服务器,所以可以采用云服务器,例如BAE,SAE,阿里云服务器.这里用BAE 2.打开百度开放云平台官网,注册,登陆,点击开发者服务管理 2.1.点击"创建工程" 填写工程相关信息,应用名称自定义,类型选择java-tomcat,域名唯一,代码管理工具选择svn     到这里,bae应用创建完了. 3.现在来实现TOKEN验证的代码部分

微信公众平台接入第三方接口

前一段时间为本站注册了微信公众平台,同时将消息处理机制接入本站. 方法: 1.在微信公众平台后台绑定接口,如http://www.baidufe.com/data/weixin 这里需要注意的是,人家网站上写的网站接入,可千万别只填写一个自己的域名,这样是不可能成功的,必须得有一个实实在在的接口才行. 2.在baidufe提供这个data/weixin接口,接受微信公众平台的验证 主要就是获取到微信发送过来的参数,然后加密一下再返回给它验证,匹配上就表示验证通过. 3.验证通过后,再修改data

微信公众平台接入图灵机器人

这是我已经接入好的,见图: 第一步:微信公众平台申请: 第二步:图灵机器人官网申请key;完了后按照http://www.tuling123.com/openapi/cloud/api.jsp?section=3参照这个在微信公众平台的开发者模式填写即可以. 快来试试我的吧.

微信公众平台开发(107) 分享到朋友圈和发送给好友

关键字:微信公众平台 JSSDK 发送给朋友 分享到朋友圈 onMenuShareTimeline onMenuShareAppMessage 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-js-sharetimeline.html 在这篇微信公众平台开发教程中,我们将介绍如何在网页中实现发送给朋友和分享到朋友圈时内容参数自定义的功能. 本文分为以下二个部分: 生成JS-SDK权限验证签名 实现发送给朋友和分享到朋友圈时内容参数自定义 一

java微信公众平台开发教程分享

微信公众平台深度开发JAVA版第一季 下载地址:链接:http://pan.baidu.com/s/1sCXI2 密码:6x90 课程讲师:翟东平 课程分类:Java适合人群:高级课时数量:24(41节)课时更新程度:完毕服务类型:C类(普通服务类课程)用到技术:微信公众平台,微信,java涉及项目:超市促销活动,微信限时秒杀活动第一季01_开篇 第一季02_程序员眼中的微信公众平台 第一季03_账号申请 第一季04_群发.自动回复 第一季05_环境搭建1 第一季06_环境搭建2 第一季07_开

C#微信公众平台接入示例代码

http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html 这是微信公众平台提供的接入指南.官网只提供了php的示例代码,这里我提供一份C#的接入示例代码,只需要修改web.config中对应的配置[token]就可以使用了 值得注意的是,你需要申请一个域名,把这个网站发布出去,绑定你申请的域名,然后把对应的信息填写到 选择安全模式,因为代码里边已经进行了加密处理,url里填写之前申请到的域名,encodingAES

[原创] ASP.NET WEBAPI 接入微信公众平台 总结,Token验证失败解决办法

首先,请允许我说一句:shit! 因为这个问题不难,但是网上有关 ASP.NET WEBAPI的资料太少.都是PHP等等的. 我也是在看了某位大神的博客后有启发,一点点研究出来的. 来看正题! 1.微信公众平台的接入方法,无非4个参数(signature, timestamp, nonce, echostr)加1个Token(两边对应) 2.Token, timestamp, nonce字典排序后,按照字符串“SHA1”加密.得出一串字符串 tmpStr(转化为小写) 3.然后比对 tmpStr

C#微信公众号接口开发之从零开发(一) 接入微信公众平台

微信公众平台接入:其实很简单,把两个参数(地址和token)填入微信公众平台后台,暂时选择明文模式 ,其中token自己定义.微信服务器会根据后台填写的地址访问,并且带上对于的参数 如 url+&signature=0dab3e6f983b6bdccfdbe3ceca01526f1522748a&timestamp=1436257899&nonce=1868246535&echostr=echostr 根据参数用微信文档中指定的方法加密检验是否来自微信然后返回随机数echo

c#接入微信公众平台

微信公众平台接入方式(asp.net) 第一步:使用vs2012等等建一个web站点 1.1 建立完成后,新建一个接入的页面,以aspx为例 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.Security; using System.Web.UI; using Syst