浏览器调用支付宝授权用户信息

当想获取用户的支付宝数据时,一定要授权支付获取数据,但支付宝授权用户默认只针对支付宝内链接,所以我的思路是:调起支付宝后,支付宝自动打开内连接授权地址,授权成功后自动返回上一页。

这里面有几个问题:

1、微信内置浏览器不能打开支付宝提供的任何链接,所以已经被pass掉了,我做的是判断一下是否是微信浏览器,如果是微信浏览器的话,就提示用户并让用户把打开支付宝并自动内联授权地址的地址复制到手机浏览器打开。

2、部分浏览器因为权限的问题,也打不开调用支付宝的地址,我们把这种默认为非权限浏览器

3、浏览器无法判断用户是否安装支付,如果不安装支付宝也得提示用户安装支付宝,所以我们除了微信浏览器点授权支付宝的时候默认都是弹出未安装支付宝的提示,如果安装了支付宝的话就会自动跳转到支付宝并跳转到授权页面。

4、用户授权成功支付宝后无法自动跳回浏览器,这个我们没有解决,只是在授权成功的页面时提示了一下用户,让用户自行返回浏览器操作。

5、用户自行返回浏览器后提示未安装支付的提示还会存在,我用的H5的方法,检测到用户从其他页面返回的时候关闭提示框

document.addEventListener("visibilitychange", function() {
       //关闭提示框
});

6、浏览器打开支付宝APP并跳转到指定页面的方法:

let locationHref = `alipays://platformapi/startapp?appId=20000067&url=
https%3a%2f%2fopenauth.alipay.com%2foauth2%2fpublicAppAuthorize.htm%3f
app_id%3d201611%26scope%3dauth_user%26redirect_uri%3d${redirectUrl}`

解释一下这几块地方:

alipays://platformapi/startapp//打开支付宝
appId=20000067 //这个我也不确定是什么,因为支付宝的文档上没写,但测得如果改成其他的就打不开支付宝浏览器,所以我认为这个应该是执行的操作

url= //这个地方就是打开授权的页面,支付宝有个指定的授权API,里面有个redirect_uri是支付宝校验成功之后的回调地址,这个地址是我们的,
在这个地址后面会带一个code,code是用户的唯一标识,传给后台,让后台调用支付宝API就可以了。
至于url授权页面的开头https://openauth.alipay.com/oauth2/publicAppAuthorize.htm是支付宝提供的
这里还有一个注意的地方,url=后面的地址必须decode,而redirect_uri必须decode两遍,为什么是两遍,
是因为作为回调地址decode一遍,作为url里面的参数还要 decode一遍


7、注意,如果提示redirect_url没有认证还是没有权限的话,需要在支付宝开放平台的里面加上安全域名,不然支付宝不认

8、支付宝开放文档:https://docs.open.alipay.com/289/105656

9、如果在授权页面里面需要调用支付宝的一些方法,可以使用http://myjsapi.alipay.com/jsapi/,这个是H5JSAPI,但只能在支付宝的内置浏览器用。


猜你喜欢

转载自blog.csdn.net/lizhen_software/article/details/80044178