一:目标
1.了解微信平台产品的开发
2.理解微信产品架构,为以后自己设计架构项目提供参考,如公众号平台的安全机制设计项目安全API
二:微信流行应用
微信开放平台(open.weixin.qq.com,注意open.qq.com是腾讯开放平台)、公众号(订阅号、服务号、企业号<改名为企业微信>)、微信支付、小程序、腾讯云解决方案(人脸核身、优图天眼、位置服务、AR云服务、音视频服务、大数据)
1.公众号开发:
公众号自身功能开发:如扫码、位置服务导航到门店、扫码自动连接门店WIFI、客服、卡券等
微商城:基于微信公众号的一种传媒方式中的一种商业运用,其简便等优点,为商家提供一个平台,在这个更简便的、方便的平台里进行更为现代的电子商务,如购物、点餐等,先关注公众号,公众号菜单内导航到微商城首页,首次登录需授权,有授权就可以使用微信支付结算。
微信小店:认证的公众号可以申请使用微信内嵌的一套提供免费的商城服务。认证公众号是要收钱的。官方描述:微信小店是基于微信公众平台打造的原生电商模式,包括添加商品、商品管理、订单管理、货架管理、维权等功能,开发者可使用接口批量添加商品,快速开店。必须开通微信支付,这个也是要收钱的。
H5商城:基于手机端的H5页呈现的一种更快捷访问的电子商务,可以不用关注微信公从号,微信扫码授权即可自动导航到H5商城首页,由于进行了微信授权就意味着可以使用微信支付功能结算。
2.微信支付
支持多种不同应用程序的微信支付,由原来的公众号体系内独立出来商户。
所以这个商户需要独立去申请开通和认证。
3.小程序(后续章节详细阐述)
三:重点概念
1.appid:application identification(应用唯一标识:应用平台下确定某个具体应用实体)
理解:应用平台如公众号(类)、应用实体如您申请的那个公众号(实例)、appid(栈指针)
微信支付、小程序都有自己的appid
扩展:现在有很多应用平台,申请成功都会这个appid来标识你申请的应用唯一标识。
2.secret:应用密钥
应用平台在处理某些安全业务(如获取access_token,安全验证)时,需要这个secret来进行加密和解密
公众号secret是这样描述的:开发者密码是校验公众号开发者身份的密码,具有极高的安全性。切记勿把密码直接交给第三方开发者或直接存储在代码中。如需第三方代开发公众号,请使用授权方式接入。
3.消息加解密密钥(EncodingAESKey)
消息加解密密钥将用于消息体加解密过程
如公众号与关注的用户之间进行消息发送时,需要这个密钥进行加解密
4.公众号服务器配置
即设置公众号交互的开发者后台服务器地址,通过公众号后台设置的token,传递到开发者后台服务器地址,按照微信的加密验证机制来确定设置的开发者后台服务器地址是正确的。
扩展:微信支付和小程序都有自己交互后台的安全设置。
5.网页授权web authorization
如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。获取openid的首要条件。
OpenId、UnionId、Session_key参见第十一节
6.access_token:访问令牌
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。
注意:网页授权access_token和普通access_token的有一定的区别,
普通access_token获取:https请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?
grant_type=client_credential&appid=APPID&secret=APPSECRET
普通access_token参考
网页access_token参考
7.微信支付
公众号支付、app支付、H5支付、
扫码支付(用户扫二维码,支付金额动态计算,用户不能更改,如PC网站支付等场景)、
刷卡支付(商户扫用户码)、
微信买单(用户扫商户码,扫描后没有带支付金额的,需用户自己输入,系统信息通知商户到账通知)
服务商与子商户(子商户与普通商户功能基本上是一样的,唯一区别就是支付流程上有些不同。子账户需要通过服务商中转,同时需要添加Sub_APPID,才能支付成功。
1)微信普通商户,需要公众号认证才能开通。而特约商户不需要公众号即可由服务商开通,但是如果想用公众号支付,仍然需要绑定已经认证的微信公众号(服务号)。
2)虽然特约商户号,可以不认证服务号就能开通(节约300元/年),但是不绑定服务号,只能使用微信扫码支付,适合线下店铺使用。如果有线上业务建议使用普通商户。
3)大部分第三方平台或微信应用都不支持特约商户的模式(Sub_APPID),所以建议如果有网站业务需要微信收款,还是使用普通微信商户吧。
8.OpenId、UnionId、Session_key
OpenId:是一个以用户为中心的数字身份识别框架,它具有开放、分散性。OpenID 的创建基于这样一个概念:我们可以通过 URI (又叫 URL 或网站地址)来认证一个网站的唯一身份,同理,我们也可以通过这种方式来作为用户的身份认证。
9.怎么获取openid?
公众平台思路:get web authorization code(parameter:redirectURL)->get openId by web auth. code
详情参见第十一节.