h5移动端支付宝授权登录之请在支付宝客户端打开链接的解决方案
错误描述
授权提示 请在支付宝客户端打开链接。
• 如果是在PC端访问授权链接是不会报错的,会直接唤起登录授权页面,如下图。
• 在支付宝端内集成H5,如生活号。
• 将授权链接转换为二维码,使用支付宝钱包的 扫一扫 功能打开进行授权。
• 建议商户使用 alipays 协议中的跳转短链接
实现主动跳转支付宝内打开页面。如果浏览器不兼容,会导致无法跳转,因此有时会出现有的
浏览器可以跳转,有的无法跳转。
拼接规则:
alipays://platformapi/startapp?appId=20000067&url=URLencode后的授权链接
示例:
alipays://platformapi/startapp?appId=20000067&url=https%3A%2F%2Fopenauth.alipay.com%2Foauth2%2FpublicAppAuthorize.htm%3Fapp_id%3D2014****00013222%26scope%3Dauth_user%26redirect_uri%3Dhttps%253A%252F%252Fwww.baidu.com%26state%3D2019072510411112323
今天有个业务需求:在移动端绑定支付宝账号,查看了支付宝的官方文档,提供了PC登录和APP登录的API
PC拼接授权页面url
url拼接规则:
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=商户的APPID&scope=auth_user&redirect_uri=ENCODED_URL&state=init
先尝试了使用上面PC的链接访问,移动端直接提示请在 “支付宝客户端打开链接”
经过搜索,以及支付宝技术的支持,找到了解决方案:
调用支付宝APP协议:
alipays://platformapi/startapp?appId=20000067&url=【上面PC拼接链接的 url encode】
对它做encode, 最后生成如:
alipays://platformapi/startapp?appId=20000067&url=https%3A%2F%2Fopenauth.alipay.com%2Foauth2%2FpublicAppAuthorize.htm%3Fapp_id%3D2018100861620581%26scope%3Dauth_user%26redirect_uri%3Dhttps%253A%252F%252Fwww.xxx.com
授权提示 请在支付宝客户端打开链接。
问题原因
• 该报错一般是在手机H5页面报错,是由于在支付宝钱包端外(如在手机浏览器或者在自己app客户端内置浏览器H5页面)访问授权链接导致。报错原因:支付宝的授权链接都必须在支付宝客户端内打开访问展示授权页面进行授权,不能在外部的H5页面打开。• 如果是在PC端访问授权链接是不会报错的,会直接唤起登录授权页面,如下图。

解决方案
• 建议更换为在支付宝钱包端内打开• 在支付宝端内集成H5,如生活号。
• 将授权链接转换为二维码,使用支付宝钱包的 扫一扫 功能打开进行授权。
• 建议商户使用 alipays 协议中的跳转短链接
实现主动跳转支付宝内打开页面。如果浏览器不兼容,会导致无法跳转,因此有时会出现有的
浏览器可以跳转,有的无法跳转。
拼接规则:
alipays://platformapi/startapp?appId=20000067&url=URLencode后的授权链接
示例:
alipays://platformapi/startapp?appId=20000067&url=https%3A%2F%2Fopenauth.alipay.com%2Foauth2%2FpublicAppAuthorize.htm%3Fapp_id%3D2014****00013222%26scope%3Dauth_user%26redirect_uri%3Dhttps%253A%252F%252Fwww.baidu.com%26state%3D2019072510411112323
今天有个业务需求:在移动端绑定支付宝账号,查看了支付宝的官方文档,提供了PC登录和APP登录的API
PC拼接授权页面url
url拼接规则:
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=商户的APPID&scope=auth_user&redirect_uri=ENCODED_URL&state=init
先尝试了使用上面PC的链接访问,移动端直接提示请在 “支付宝客户端打开链接”
经过搜索,以及支付宝技术的支持,找到了解决方案:
调用支付宝APP协议:
alipays://platformapi/startapp?appId=20000067&url=【上面PC拼接链接的 url encode】
对它做encode, 最后生成如:
alipays://platformapi/startapp?appId=20000067&url=https%3A%2F%2Fopenauth.alipay.com%2Foauth2%2FpublicAppAuthorize.htm%3Fapp_id%3D2018100861620581%26scope%3Dauth_user%26redirect_uri%3Dhttps%253A%252F%252Fwww.xxx.com