目录
前言
从14年年末开始接触微信支付,15年接触支付宝支付。到现在还是在做支付这块,但是关于这方面的我总是没有整理过太多,只是在云笔记上面有特殊需要注意的点,现在陆陆续续会把这些整理出来,方便以后查找。
大家可能疑问,微信就没有应用授权流程,支付宝为什么有应用授权这块呢?
其实微信使用的是服务商—商户的模式,不需要授权,只需要添加子商户或者签约特约商户就可以了。
而支付宝使用的是ISV模式,通过第三方应用授权帮助商户支付宝账号进行操作。
【微信支付需要填写子商户号进行支付,支付宝支付需要第三方授权的token进行支付。】
以上的说法是针对于微信服务商和支付宝ISV账号,如果是商户自行开发则不需要上述所说。
以下是支付宝的第三方应用授权的内容
描述
通过第三方应用授权,ISV/开发者可以在取得商户授权后,ISV/开发者可以帮助商户完成相应的业务逻辑(如代替商户发起当面付的收单请求等)。
前提
如果需要支付功能,ISV得签约当面付功能
步骤
第一步:设置回调地址
开发者中心>应用列表>应用信息>开发设置>授权回调地址
如下述所说,此处设置的http路径可能在两处需要用到
第一:获取第三方授权token
第二:获取userID
所以此处的逻辑大家可以想想如何实现。
第二步:拼接URL
https://openauth.alipay.com/oauth2/appToAppAuth.htm?app_id={0}&redirect_uri={1}
1)app_id填写ISV的APPID
2)redirect_uri 填写回调地址即第一步的配置回调信息(可以添加参数如id=1等信息作为自己标识)
第三步:根据设置的回调地址获取app_auth_code
支付宝在回调页面请求中会带上当次授权的授权码 app_auth_code 和开发者的 app_id
如:
添加之后
https://openauth.alipay.com/oauth2/appToAppAuth.htm?app_id=123456&redirect_uri=http://baidu.com/AliPay/GetApp_auth_code?ID=1&app_auth_code=123
第四步:获取token
根据app_auth_code换取app_auth_token
调用接口alipay.open.auth.token.app获取令牌
获取令牌最简单的方法是使用支付宝的SDK,最好是有源码的,这样添加新功能比较好扩展。
由于支付宝文档的网址总是变来变去,建议可以直接搜【第三方应用授权】类似的关键字,本文也会进行对应的网址更改。
第三方授权网址:https://opendocs.alipay.com/open/20160728150111277227/intro
获取第三方应用授权(alipay.open.auth.token.app):https://opendocs.alipay.com/apis/api_9/alipay.open.auth.token.app
额外补充
回调地址除了用于第三方授权之外,还用于获取用户唯一标识。
我们在统一下单唤起支付宝支付的时候需要用到userID进行支付等功能,但是获取userID也需要通过授权回调地址进行获取。(ps:此处获取userID单纯的只是获取支付宝用户标识,不涉及到上述[第三方应用授权]的任何信息。虽然第三方应用授权也能得到userID,但主要用于授权,大家不要搞混了)
so授权回调地址的作用
第一:获取第三方授权的令牌等信息
第二:获取用户的userid等信息
获取H5/生活号的userID(alipay.system.oauth.token):https://opendocs.alipay.com/open/284/h5