更新记录

1.0.1(2024-01-22) 下载此版本

把scope、init改为前端手动传入,因为没有测试环境,如有问题请下面评论下。

1.0.0(2023-08-03) 下载此版本

iOS和Android原生授权获取auth_code实现


平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 适用版本区间:9 - 16

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


本插件使用的是支付宝极简授权,兼容Android与iOS。

用前说明,因为目前没有测试环境,现在把scope、init改为前端手动传入,如有问题下方提问。

使用步骤:

一、勾选支付宝并配置UrlSchemes、minSdkVersion

  1. manifest.json --> App模块配置 --> Payment 勾选支付宝。
  2. manifest.json --> App常用其他配置 --> 分别配置Android和iOS UrlSchemes。
  3. Android端需要在UrlSchemes下方的minSdkVersion配置为 21。

二、导入插件

manifest.json --> App原生插件配置 --> 云端插件 中勾选本插件。

三、重新打包自定义基座

以上步骤完了之后重新打包Android和iOS自定义基座运行,当原生文件有变动的时候都需要重新打自定基座或者正式包,而uniapp的manifest.json文件对应修改的是Android的AndroidManifest.xml和iOS中info.plist等原生文件,或是其他原生文件,所以当你改过uniapp的manifest.json文件一定要重新打包基座才能生效,最好是卸载APP,并删除unpackage/debug/..下的Android和iOS debug包并重新打自定义基座运行,不排除可能会有缓存,之前有遇到过。

四、js端调用


const AlipayAuth = uni.requireNativePlugin("DHQ-AlipayAuth")

//支付宝官方SDK参考链接:https://opendocs.alipay.com/open/218/wy75xo?pathHash=03eeb9c7
//传入参数后拼接的而成的链接参考:https://authweb.alipay.com/auth?auth_type=PURE_OAUTH_SDK&app_id=2016051801417322&scope=auth_user&state=init

    AlipayAuth.login({
          appId: '200000000000004',  //你在支付宝平台申请的App ID
          scheme: 'alixpayhbilderhello',  // 需要传到支付宝SDK的scheme,注意需要在manifest.json-->App其他常用配置-->UrlSchemes中配置Android和iOS的
          scope: 'auth_user', //默认为auth_user,需要实名认证的把auth_user替换
          init: 'init' //init字段名应该是state才对,忘记改回来了,不过不影响,这里init字段传入后对应是state的值,可根据支付宝的要求自己修改,默认则传入”init”

        },
        (res) => {
            console.log('原生授权返回res', res)
            //客户端成功获取授权临时票据(code),向业务服务器发起登录请求。
            let code = res.auth_code
    })

返回事例


{"scope":"auth_user","result_code":"SUCCESS","state":"init","app_id":"2xxxxxxxxxxxx4","auth_code":"xxxxxxxxxxxxxxxxx"}

scheme 介绍:

稍微解释下这个参数,这个参数你可以理解为第三方应用用来找到你的app用的,也是解决回跳你的APP的一个参数,当你把这个参数传到支付宝的SDK后,就相当于你告诉了支付宝要通过这个scheme返回你的应用,因为从第三方回跳你的应用的时候,属于是第三方打开你的应用。scheme可以随意设置,不要重名即可。

例如:你的app的scheme设置为bbb,你手机支付宝APP想打开你的应用,需要在你已安装的手机应用里,找到带有bbb标志的scheme,也可以理解为你设置了一个bbb地址,别人就可以通过这个bbb地址来方便找到你一个意思。

支付宝网页版授权回调地址介绍:

支付宝的网页版重定向授权页面redirect_uri里面(即:支付宝开放平台->开发配置->授权回调地址),在这个页面里面做回跳的时候,也是需要在这个redirect_uri页面中填写你在应用设置的bbb这个scheme,并且还要把支付宝授权后的东西解析分离出来,然后回跳的时候带上授权后并解析出来的auth_code等参数带回你的app。

其实网页版授权你可以理解为支付宝留了个webview,让你填上这个webview uri链接,而这个uri就是这个redirect_uri页面,然后在这个页面里面做打开其他app操作。这个redirect_uri该怎么做,网上搜uniapp支付宝授权登录是有的,完成后,放到自己公网可访问的服务器下,就算是完成了。我就是因为觉得这些操作很麻烦,加上公司领导觉得还是调用原生的SDK体验好一些,所以就弄了这个插件。 这个链接下https://blog.csdn.net/qq_39236283/article/details/125968384有说明redirect_uri页面的制作步骤。

  • 使用声明:本插件仅用于uni支付宝快速极简授权开发,不得使用本插件用于其他营业、转售目的,转发需注明出处。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android: android.permission.INTERNET android.permission.ACCESS_NETWORK_STATE android.permission.ACCESS_WIFI_STATE iOS: 需要访问网络权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

本插件不会收集个人信息,关于支付宝极简版,详情可查支付宝开发者开放平台:https://opendocs.alipay.com/open/218/sxc60m?pathHash=49b31754#SDK%E9%9B%86%E6%88%90

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

本插件使用的是支付宝极简授权,兼容Android与iOS。

用前说明,因为目前没有测试环境,现在把scope、init改为前端手动传入,如有问题下方提问。

使用步骤:

一、勾选支付宝并配置UrlSchemes、minSdkVersion

  1. manifest.json --> App模块配置 --> Payment 勾选支付宝。
  2. manifest.json --> App常用其他配置 --> 分别配置Android和iOS UrlSchemes。
  3. Android端需要在UrlSchemes下方的minSdkVersion配置为 21。

二、导入插件

manifest.json --> App原生插件配置 --> 云端插件 中勾选本插件。

三、重新打包自定义基座

以上步骤完了之后重新打包Android和iOS自定义基座运行,当原生文件有变动的时候都需要重新打自定基座或者正式包,而uniapp的manifest.json文件对应修改的是Android的AndroidManifest.xml和iOS中info.plist等原生文件,或是其他原生文件,所以当你改过uniapp的manifest.json文件一定要重新打包基座才能生效,最好是卸载APP,并删除unpackage/debug/..下的Android和iOS debug包并重新打自定义基座运行,不排除可能会有缓存,之前有遇到过。

四、js端调用


const AlipayAuth = uni.requireNativePlugin("DHQ-AlipayAuth")

//支付宝官方SDK参考链接:https://opendocs.alipay.com/open/218/wy75xo?pathHash=03eeb9c7
//传入参数后拼接的而成的链接参考:https://authweb.alipay.com/auth?auth_type=PURE_OAUTH_SDK&app_id=2016051801417322&scope=auth_user&state=init

    AlipayAuth.login({
          appId: '200000000000004',  //你在支付宝平台申请的App ID
          scheme: 'alixpayhbilderhello',  // 需要传到支付宝SDK的scheme,注意需要在manifest.json-->App其他常用配置-->UrlSchemes中配置Android和iOS的
          scope: 'auth_user', //默认为auth_user
          init: 'init’ //默认传入init

        },
        (res) => {
            console.log('原生授权返回res', res)
            //客户端成功获取授权临时票据(code),向业务服务器发起登录请求。
            let code = res.auth_code
    })

返回事例


{"scope":"auth_user","result_code":"SUCCESS","state":"init","app_id":"2xxxxxxxxxxxx4","auth_code":"xxxxxxxxxxxxxxxxx"}

scheme 介绍:

稍微解释下这个参数,这个参数你可以理解为第三方应用用来找到你的app用的,也是解决回跳你的APP的一个参数,当你把这个参数传到支付宝的SDK后,就相当于你告诉了支付宝要通过这个scheme返回你的应用,因为从第三方回跳你的应用的时候,属于是第三方打开你的应用。scheme可以随意设置,不要重名即可。

例如:你的app的scheme设置为bbb,你手机支付宝APP想打开你的应用,需要在你已安装的手机应用里,找到带有bbb标志的scheme,也可以理解为你设置了一个bbb地址,别人就可以通过这个bbb地址来方便找到你一个意思。

支付宝网页版授权回调地址介绍:

支付宝的网页版重定向授权页面redirect_uri里面(即:支付宝开放平台->开发配置->授权回调地址),在这个页面里面做回跳的时候,也是需要在这个redirect_uri页面中填写你在应用设置的bbb这个scheme,并且还要把支付宝授权后的东西解析分离出来,然后回跳的时候带上授权后并解析出来的auth_code等参数带回你的app。

其实网页版授权你可以理解为支付宝留了个webview,让你填上这个webview uri链接,而这个uri就是这个redirect_uri页面,然后在这个页面里面做打开其他app操作。这个redirect_uri该怎么做,网上搜uniapp支付宝授权登录是有的,完成后,放到自己公网可访问的服务器下,就算是完成了。我就是因为觉得这些操作很麻烦,加上公司领导觉得还是调用原生的SDK体验好一些,所以就弄了这个插件。 这个链接下https://blog.csdn.net/qq_39236283/article/details/125968384有说明redirect_uri页面的制作步骤。

  • 使用声明:本插件仅用于uni支付宝快速极简授权开发,不得使用本插件用于其他营业、转售目的,转发需注明出处。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问