微信与阿里云第三方服务的一些概念流程梳理
微信平台
首先,微信有三大平台:微信公众平台(提供公众号、小程序等服务,主要面向编辑人员)、微信开放平台(网页、移动、小程序等第三方服务的管理平台以及微信开发文档,主要面向开发者)、微信商户平台(入驻成为微信商家,接入微信支付服务)。此外,还有一个微信服务平台,供服务商使用。
官方文档有如下描述:
微信开放平台-第三方平台(简称第三方平台),由微信团队面向所有通过开发者资质认证的第三方开发者提供提供的官方平台。也就是说,第一步要有一个开发者资质的认证,认证申请最好是以公司的身份,需要缴纳300元费用
在得到公众号或小程序管理员授权后,基于该平台,第三方服务商可以可以通过调用官方接口能力,为商家提供公众号代运营、小程序代注册、代开发等服务以及提供公众号和小程序相关的行业方案、活动营销、插件能力等全方位服务。也就是说,第二步需要在微信公众平台拥有账号,并开通了小程序或公众号等服务,所谓要烧饭先淘米,在开通服务前先得准备好要被开通服务的东西。
下面,认识几个基本概念:
- 几个ID
在这里进一步解释一下:AppID
就是服务应用的身份证号,每一个服务应用(小程序,公众号,移动端,WEB端)的AppID
都是独一无二的。同理,openid
是用户在每一个服务应用里面的身份证号,换句话说,一个微信用户在不同的服务应用下的openid
也是独一无二的,由此,openid
并不是一个全局变量,这意味着不是说用户注册了微信号,成为了微信公司的合法用户,就在所有的微信公司的服务应用下同时生成了一个id
,而是用户在每一个服务应用中将自己的身份信息授权了,才会生成一个和服务平台挂钩的openid
。为方便一家公司旗下有许多的服务应用统一分别管理应用,一个开放平台下绑定的所有服务应用之间,同一个用户就有一个unionid
,即微信用户在该开放平台旗下所有产品的身份号。举个例子:用户甲在该平台下小程序A的openid
为X,在该平台下小程序B的openid
为Y,而该用户的unionid
均为Z。
商家和服务商的开放平台账号
这里理解一个概念:“直连模式”和“服务商模式”
直连模式:商户自行开发系统对接微信支付进行交易,钱直接结算到商户的结算账户上,此类商户称为“直连商户”
服务商模式:有些商户不具备开发能力,它就选择已经入住微信支付的“服务商”来支撑其业务。此类商户为“间连商户”。
由此,入驻成为服务商,可为不具备开发能力的商家进行技术研发
- 绑定和授权
“绑定”指的是将商家将其公众号或者小程序帐号绑定到商家的开放平台下,“授权”是指商家将其公众号或者小程序扫码授权给服务商的第三方平台帐号。这里,我理解为商家将自己的公众平台上的应用“绑定”到商家自己的开放平台,服务应用可与帐号下的移动应用、网站应用、公众号及其他小程序之间通过unionID
机制统一用户账号。
“授权”指的是商家没有开发能力,就授权给第三方服务商,让他们来承包开发工作。
- 几个Token
如果贵公司是自己开发,会用到access_token
,若依赖外包平台开发,则需要component_access_token
和authorizer_access_token
来拿到商家的权限,代替商家打通第三方接口
微信登陆
微信OAuth2.0
授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0
的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token
),通过access_token
可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。 微信OAuth2.0
授权登录目前支持authorization_code
模式,适用于拥有server
端的应用授权。
其中authorization_code
模式指的是使用方应用先申请一个授权码,然后再用该码获取令牌
拓展:OAuth2.0
获取access_token
有四种方式:
隐式授权模式(Implicit Grant)
用户会重定向到认证服务器,输入账户密码授权成功返回应用页面用返回的Token访问资源服务器。适用于没有后台管理只能通过第三方认证的应用
- 授权码授权模式(Authorization code Grant)
市面上最主流的验证方式。用户访问应用后会重定向认证服务器授权,返回code带上client_id给应用服务器,应用服务器拿code,client_id查询到的client_secret到认证服务器换取access_token和refresh_token以访问资源服务器。应用服务器拿不到用户的账户密码,且有限制的访问第三方平台的资源,安全性高
- 密码模式(Resource Owner Password Credentials Grant)
用户访问应用页面输入第三方平台需要的账户密码信息,应用服务器拿着信息去请求认证服务器,授权通过后返回Token,应用服务器凭借Token访问静态资源。这种局限性极高,例如应用平台和第三方平台是亲兄弟,例如微信和QQ
- 客户端凭证模式(Client Credentials Grant)
用户通过应用端自定义的验证方式授权获得Token,即可无阻碍的访问静态资源服务器。这种方式安全性极低,一般提供给完全信任的服务器端服务,整个过程没有用户参与
微信支付
为了支付的安全性,首先要通过复杂的手续,进行资料审核和协议签署
API v3
总结一下,RESTFUL接口风格,采用JSON前后端数据交互,基于非对称的SHA256-RSA的数字签名算法,使用AES-256-GCM对回调关键信息加密保护,提高了安全性。此外,仅需携带证书序列号,简化了操作
一些常见的key
- 直连模式:
- 服务商模式:
多出来一些附属的key
,供服务开发商调用权限,进行外包开发
支付产品
- 付款码支付: 线下场景,商家用设备扫描用户二维码收款
- Native原生支付:即常说的扫码支付,常用于PC端网站,手机扫码支付
- JSAPI网页支付:即日常所说的公众号支付,可在微信公众号、朋友圈、聊天会话中点击页面链接,或者用微信“扫一扫”扫描页面地址二维码在微信中打开商户HTML5页面,在页面内下单完成支付
- APP支付:APP支付是指商户已有的APP,通过对接微信支付API及SDK,实现从商户APP发起交易后跳转到微信APP,用户完成支付后跳回商户APP的场景
- 小程序支付:小程序支付是指在商户既有的小程序内通过对接微信支付API,实现用户在小程序内完成交易的场景
阿里云平台
开通SMS
短信服务,首先附上官方的流程图:
第一步就是在阿里云拥有身份:注册账号,实名认证…
实名认证最好通过企业认证的形式,否则在短信服务上会受到极大的歧视,有图为证:
认识几个名词:
- 短信签名:短信签名是根据用户身份创建的符合自身属性的签名,一般建议设置为账号主体所在机构的全称或简称。例如:麦趣测评
- 短信模板:短信模板,即具体发送的短信内容,由变量和模板内容构成。您可以通过变量实现短信内容的定制化。
- 短信通知(0.045元/条) 例如:尊敬的麦趣用户,您已经成功开通会员服务!
- 验证码(0.045元/条)例如:您的验证码为:123456,该验证码5分钟内有效,请勿泄露于他人
- 推广短信(0.055元/条) 例如:麦趣测评福利来啦!….
控制方法:
- 控制台使用 :短信服务控制台支持创建短信内容,发送短信,统计并展示业务数据如发送量、发送记录、费用以及日志分析,设置消息回执接收方式、联系人等
API
/SDK
使用:[API概览文档](API概览 (aliyun.com))使用阿里云OpenAPI
开发者门户或阿里云SDK
完成常见操作,例如添加短信签名、添加短信模板、发送短信服务和查询短信发送详情等,将指定信息发送至国内或境外手机号码
说明:我们在申请签名和模板审核通过后,可在控制台进行测试,也可通过阿里云提供的API
/SDK
进行测试,获得返回状态码等。控制台的优点在于可以更好的查看可视化的全方位的数据,如日志,发送量,发送记录等等,而API
/SDK
能更好让后端人员进行个性化的开发使用