更新记录

1.0.0(2026-04-11) 下载此版本

初次提交


平台兼容性

uni-app x(4.65)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 5.0 12 -

laoqianjunzi-alipay

laoqianjunzi-alipay 是一个面向 uni-app x / uni-app 的支付宝授权登录插件,统一暴露授权接口,并在 app-androidapp-iosapp-harmonymp-weixinweb 五个平台目录分别提供实现或编译兜底。

这次接口已经进一步抹平到五端一致:调用侧不需要再区分平台目录,也不需要为不支持的平台单独写分支,只要统一读取能力信息并调用同一个授权函数即可。

功能概览

  • App Android:支持支付宝授权、电子发票、代扣三种业务类型
  • App iOS:支持支付宝授权、电子发票、代扣三种业务类型
  • App Harmony:支持第三方授权,其他业务类型返回明确错误
  • Web:提供占位实现,保证项目跨端编译
  • 微信小程序:提供占位实现,保证项目跨端编译

安装后目录约定

插件主入口位于 uni_modules/laoqianjunzi-alipay,对外类型声明位于 uni_modules/laoqianjunzi-alipay/utssdk/interface.uts,不同平台的实现分别位于:

  • uni_modules/laoqianjunzi-alipay/utssdk/app-android/index.uts
  • uni_modules/laoqianjunzi-alipay/utssdk/app-ios/index.uts
  • uni_modules/laoqianjunzi-alipay/utssdk/app-harmony/index.uts
  • uni_modules/laoqianjunzi-alipay/utssdk/mp-weixin/index.uts
  • uni_modules/laoqianjunzi-alipay/utssdk/web/index.uts

接口说明

获取客户端实例

import { getLaoqianjunziAlipayClient } from '@/uni_modules/laoqianjunzi-alipay'

const alipayClient = getLaoqianjunziAlipayClient()

推荐使用的统一函数

import {
  authorizeWithLaoqianjunziAlipay,
  getLaoqianjunziAlipayCapability
} from '@/uni_modules/laoqianjunzi-alipay'

const capability = getLaoqianjunziAlipayCapability()

能力对象结构:

type LaoqianjunziAlipayCapability = {
  platform: string
  canAuthorize: boolean
  supportsInvoice: boolean
  supportsDeduct: boolean
  note: string | null
}

推荐在调用前统一判断:

  • canAuthorize = true 时直接发起授权
  • canAuthorize = false 时按 note 提示用户,或切换到服务端 / H5 授权方案

authorize(options) 参数

type LaoqianjunziAlipayAuthorizeOptions = {
  scheme: string
  payload: string
  businessKind: 0 | 1 | 2 | null
  success: ((result: { authCode: string; state: string | null }) => void) | null
  fail: ((error: IUniError) => void) | null
  complete: ((result: any) => void) | null
}

字段说明:

  • scheme:支付宝回跳到当前应用时使用的 URL Scheme
  • payload:传给支付宝 SDK 的业务字符串,授权场景通常为 publicAppAuthorize.htm 链接
  • businessKind0 电子发票、1 第三方授权、2 代扣;不关心时可传 1null
  • success:获取到 authCode 时回调
  • fail:授权失败回调,统一返回 IUniError
  • complete:流程结束时回调,成功与失败都会进入

返回结果

成功结果:

type LaoqianjunziAlipayAuthorizeResult = {
  authCode: string
  state: string | null
}

失败结果常见错误码:

错误码 含义
101 未检测到支付宝客户端
102 支付宝授权返回结果无效
103 业务类型不合法
104 授权地址格式不正确
105 授权请求触发过于频繁
106 无法跳转到支付宝授权页
107 授权参数中缺少 app_id
108 应用回跳配置不完整
999 授权过程发生未知错误
1000 当前平台只提供占位实现或该业务未开放

使用示例

import {
  authorizeWithLaoqianjunziAlipay,
  getLaoqianjunziAlipayCapability,
  type LaoqianjunziAlipayAuthorizeOptions
} from '@/uni_modules/laoqianjunzi-alipay'

const capability = getLaoqianjunziAlipayCapability()

const request: LaoqianjunziAlipayAuthorizeOptions = {
  scheme: 'ali_your_app_scheme',
  payload: 'https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=你的应用ID&scope=auth_user&state=order_1001',
  businessKind: 1,
  success: (result) => {
    console.log('支付宝授权成功', result.authCode, result.state)
  },
  fail: (error) => {
    console.error('支付宝授权失败', error.errCode, error.errMsg)
  },
  complete: null
}

if (capability.canAuthorize) {
  authorizeWithLaoqianjunziAlipay(request)
} else {
  console.warn('当前平台不支持直接授权', capability.note)
}

如果你更偏好对象风格,仍然可以继续使用 getLaoqianjunziAlipayClient().authorize(...),它与 authorizeWithLaoqianjunziAlipay(...) 的行为保持一致。

平台配置

Android

  1. 确认应用已集成插件并使用自定义基座或自定义云打包结果运行
  2. 打开 uni_modules/laoqianjunzi-alipay/utssdk/app-android/AndroidManifest.xml
  3. <data android:scheme="ali_your_app_scheme" /> 替换成你的实际 scheme
  4. 在支付宝开放平台中配置同一套应用包名、签名与 scheme

iOS

  1. 打开 uni_modules/laoqianjunzi-alipay/utssdk/app-ios/Info.plist
  2. ali_your_app_scheme 替换为你的实际回跳 scheme
  3. 保证开放平台中的配置与 Xcode 打包配置一致

Harmony

  1. 打开项目的 harmony-configs/entry/src/main/module.json5
  2. querySchemes 中加入 apmqpdispatch
  3. 确认工程具备网络权限
  4. Harmony 目前只开放第三方授权能力,其他业务类型会直接返回错误码 1000

Web / 微信小程序

这两个平台仅提供编译占位实现,不会真正拉起支付宝客户端。调用侧无需额外做平台分支,只需要通过 getLaoqianjunziAlipayCapability() 判断能力。若业务需要在这两个端完成登录,建议改为:

  • 由后端生成授权地址后跳转到中间页
  • 或者直接在 H5 页面中走支付宝网页授权

推荐授权流程

  1. 前端调用 authorize 获取 authCode
  2. authCode 发送到你的服务端
  3. 服务端调用支付宝开放平台换取令牌和用户信息
  4. 服务端返回你的业务登录态给前端

注意事项

  • App 端建议使用唯一 scheme,通常可采用 ali_ 前缀加业务标识
  • payload 需要是支付宝可识别的业务串,授权场景优先使用官方授权地址
  • 若出现 101,先检查设备是否安装支付宝客户端
  • 若出现 108,重点核对 scheme、包名、Bundle ID、开放平台回跳配置是否一致
  • Web 与微信小程序不会执行原生授权,仅用于跨端编译兜底

隐私、权限声明

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

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

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

许可协议

MIT协议

暂无用户评论。