更新记录
1.0.0(2026-10-29)
- 新增支付宝官方完整 SDK 授权登录与 App 支付统一接入,提供服务端签名参数调用和授权码交付。
- 新增 SDK 成功、取消、业务失败及结果未知的统一结果与错误码,支付结果继续由服务端核验。
- 新增原生互斥、等待超时及重复和迟到回执保护,success/fail/complete 至多触发一次。
- 新增能力检测、SDK 配置版本及安装状态查询、有界脱敏诊断和原生阶段快照。
- 新增 uni-app Vue2/Vue3 与 uni-app x 示例,包含完整日志复制、固定快照分段和手动复制回退。
- 新增基础功能配置、高级用法、完整调用流程及分宿主、分平台的兼容性说明。
- 新增 Android 固定 Maven 依赖、iOS 桥接源码及固定 CocoaPods 配置;iOS 原生编译与设备业务待验证。
- 新增插件版本、更新日期和诊断标记一致性校验,区分插件源码标记与应用实际构建信息。
平台兼容性
uni-app(5.26)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | - | × | - | - | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(5.26)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | √ | - | × | × |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| × | × | × | √ |
lizhao-alipay-kit 支付宝授权登录与支付
介绍
为 uni-app 和 uni-app x 移动 App 提供支付宝官方完整 SDK 的授权登录、App 支付和脱敏诊断。Android 的 uni-app x 已完成无需账号和真实付款的真机验收;uni-app Android 完整宿主和 iOS 仍待验证,范围见“注意事项”。当前尚未发布到插件市场。
功能特色
| 能力 | 用途 |
|---|---|
| 授权登录 | authorizeAlipay 接收服务端签名授权串,严格检查 SDK 状态、授权业务结果和非空授权码,仅向 success 交付 authCode。 |
| App 支付 | payWithAlipay 接收服务端订单串,区分 SDK 成功、取消、失败和结果未知;所有成功仍需服务端核验。 |
| 会话与超时 | 授权与支付共用原生互斥,拒绝并发,不自动排队或重复扣款。本地超时后原生仍忙碌时继续保护,迟到结果不重复触发页面终态。 |
| 能力和诊断 | getAlipayCapabilitiesSync 检查 SDK、安装状态和原生忙碌;getAlipayDiagnosticsSync 取得有界脱敏快照,clearAlipayDiagnostics 仅清诊断。 |
| 完整日志复制 | 双宿主示例底部提供一键复制完整报告、固定快照分段和复制失败手动回退。授权串、订单串、授权码和签名不写入报告。 |
适合哪些场景
| 场景 | 推荐能力 | 使用边界 |
|---|---|---|
| 支付宝账号关联或登录 | authorizeAlipay |
后端提供签名授权串并换码建立业务会话 |
| App 业务订单支付 | payWithAlipay |
后端签名订单、核验通知与查单,客户端回执不直接入账 |
| 授权或支付问题排查 | getAlipayDiagnosticsSync 与示例完整报告 |
报告脱敏;未知结果由服务端核实 |
适用于自有 Android/iOS App 的支付宝账号关联、服务端换码登录、实物或允许外部支付的业务订单。客户端只负责调用 SDK,业务后端负责应用资格、签名、授权事务、用户会话、查单、通知验签与幂等入账。
不提供退款、代扣、扫码收款、发票、独立 Web 登录或小程序支付。Harmony、Web 和小程序返回明确不支持。iOS 的支付业务还须遵守其发行渠道规则,插件不会将外部支付改为苹果内购。
下载与导入
| 宿主 | 示例代码位置 |
|---|---|
| uni-app | uni_modules/lizhao-alipay-kit/example/uniapp/index.vue |
| uni-app x | uni_modules/lizhao-alipay-kit/example/uniappx/index.uvue |
从基础到进阶:按业务模块使用
基础功能配置示例
接入准备
登录与支付统一由本插件提供。authorizeAlipay 使用后端签名的 authInfo,payWithAlipay 使用后端签名的 orderString;两项功能共用同一个官方完整 SDK 和原生互斥会话。插件没有额外的初始化 API,完成原生集成后直接调用;应用私钥和签名逻辑保留在服务端。
| 准备项 | 填写或操作 |
|---|---|
| 开发环境 | HBuilderX、uni-app / uni-app x 使用 5.33 或兼容的后续版本;实际平台验收范围见“注意事项” |
| 支付宝应用 | 在开放平台登记自己的应用、Android 包名/签名及 iOS Bundle ID,开通需要的 App 授权或支付能力 |
| 授权参数 | 将服务端返回的完整 authInfo 原样填入“授权登录”,不要改为极简 OAuth URL |
| 支付参数 | 将服务端返回的完整 orderString 原样填入“App 支付”;金额和业务订单由服务端确定 |
| iOS 回跳 | 注册应用独占的 scheme,页面填同一值且不带 ://;Android 留空 |
| 原生基座 | 首次集成后原生联编或重打含本插件和官方 SDK 的自定义基座,再打开示例 |
导入并保留整个 uni_modules/lizhao-alipay-kit/,所有业务 API 从 @/uni_modules/lizhao-alipay-kit 根入口引入。当前尚未发布到插件市场。
| 文件 | 用途 |
|---|---|
uni_modules/lizhao-alipay-kit/example/uniapp/index.vue |
Vue2/Vue3 选项式 API 完整诊断示例 |
uni_modules/lizhao-alipay-kit/example/uniappx/index.uvue |
UTS 与原生 Flex 布局完整诊断示例 |
uni_modules/lizhao-alipay-kit/example/report.uts |
报告身份、环境、脱敏与固定快照分段 |
uni_modules/lizhao-alipay-kit/static/report.js |
从报告源码生成的 uni-app 页面辅助脚本 |
在自己的 pages.json 注册示例。以下是 uni-app x 单页示例配置;合入已有项目时保留其他路由:
{
"pages": [{
"path": "uni_modules/lizhao-alipay-kit/example/uniappx/index",
"style": { "navigationBarTitleText": "支付宝登录与支付" }
}]
}
uni-app 对应配置为:
{
"pages": [{
"path": "uni_modules/lizhao-alipay-kit/example/uniapp/index",
"style": { "navigationBarTitleText": "支付宝登录与支付" }
}]
}
原生依赖与应用配置
依赖已经随插件配置,通常不需要修改,也无需手动拷贝 SDK 二进制。Android 的 uni_modules/lizhao-alipay-kit/utssdk/app-android/config.json:
{
"minSdkVersion": 21,
"dependencies": ["com.alipay.sdk:alipaysdk-android:15.8.42"]
}
iOS 的 uni_modules/lizhao-alipay-kit/utssdk/app-ios/config.json:
{
"deploymentTarget": "12.0",
"dependencies-pods": [{ "name": "AlipaySDK-iOS", "version": "15.8.30" }],
"dependencies-pod-resources": "app"
}
插件的 uni_modules/lizhao-alipay-kit/utssdk/app-ios/Info.plist 已声明支付宝查询 scheme。应用自己的回跳 scheme 需在项目根目录 Info.plist 中创建或合并配置;这个应用配置文件由接入者准备,不随插件预置。下面 merchantdemoali 是待替换的示例值,须换成应用独占的已注册值,并在调用中传入同一个值:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key><string>Editor</string>
<key>CFBundleURLName</key><string>scheme</string>
<key>CFBundleURLSchemes</key>
<array><string>merchantdemoali</string></array>
</dict>
</array>
</dict>
</plist>
uni-app 也可在 manifest.json 可视化界面设置 iOS URL scheme,避免与上述原生配置重复或冲突。配置变更后重新原生构建,插件会检查实际注册值。首版采用 URL scheme 回跳,不提供 Universal Link 接入;回跳 Hook 在 UTS 层自动注册,无需修改 AppDelegate。
最小核心调用
下面两个函数可放入 uni-app x 页面的 script setup lang="uts",用于 Android;实参须来自自己的后端。省略 appScheme 时默认空串,省略 timeoutMs 时默认等待 180000 毫秒。iOS 必须使用下一节带 appScheme 的调用,uni-app 页面语法见完整示例。
import { authorizeAlipay, payWithAlipay } from '@/uni_modules/lizhao-alipay-kit'
function authorizeWithServerInfo(authInfo: string): void {
authorizeAlipay({
authInfo,
success: result => {
// 在自己的已鉴权业务请求中提交 result.authCode,不记录或复制该值。
uni.showToast({ title: '取得授权码,等待后端确认', icon: 'none' })
},
fail: error => { uni.showToast({ title: error.errMsg, icon: 'none' }) },
complete: result => { console.log('授权结束', result.requestId, result.errCode) }
})
}
function payWithServerOrder(orderString: string): void {
payWithAlipay({
orderString,
success: () => { uni.showToast({ title: 'SDK 返回成功,请后端查单', icon: 'none' }) },
fail: error => { uni.showToast({ title: error.outcomeUnknown ? '结果未知,请先查单' : error.errMsg, icon: 'none' }) },
complete: result => { console.log('支付结束', result.requestId, result.errCode) }
})
}
高级示例
模块一:显式配置和 uni-app x 强类型调用
完整可运行页面位于 uni_modules/lizhao-alipay-kit/example/uniappx/index.uvue。以下函数展示全部可选回调与显式配置,参数来自后端签名串,不在客户端创建私钥或重新编码整个字符串。例中改用等待 30000 毫秒;这只缩短本地等待,不取消外部操作。调用 startAuthorization(authInfo, appScheme) 或 startPayment(orderString, appScheme) 时,Android 的 appScheme 传空串,iOS 传已注册的值,例如与前述 plist 匹配的 merchantdemoali。
import { authorizeAlipay, payWithAlipay, AlipayAuthorizeOptions, AlipayPayOptions } from '@/uni_modules/lizhao-alipay-kit'
function startAuthorization(authInfo: string, appScheme: string): void {
const options: AlipayAuthorizeOptions = {
authInfo, appScheme, timeoutMs: 30000,
success: result => {
// 将result.authCode交自己的后端换码和建立会话;不要写入诊断或本地持久化。
uni.showToast({ title: '取得授权码,等待后端确认', icon: 'none' })
},
fail: error => { uni.showToast({ title: error.errMsg, icon: 'none' }) },
complete: result => { console.log('授权结束', result.requestId, result.errCode) }
}
authorizeAlipay(options)
}
function startPayment(orderString: string, appScheme: string): void {
const options: AlipayPayOptions = {
orderString, appScheme, timeoutMs: 30000,
success: () => { uni.showToast({ title: 'SDK 返回成功,请后端查单', icon: 'none' }) },
fail: error => { uni.showToast({ title: error.outcomeUnknown ? '结果未知,请先查单' : error.errMsg, icon: 'none' }) },
complete: result => { console.log('支付结束', result.requestId, result.errCode) }
}
payWithAlipay(options)
}
iOS 可在实际调用中固定使用已经注册的应用 scheme;下面的示例值仍须替换成自己的注册值:
import { authorizeAlipay, AlipayAuthorizeOptions } from '@/uni_modules/lizhao-alipay-kit'
function authorizeOnIOS(authInfo: string): void {
const options: AlipayAuthorizeOptions = {
authInfo, appScheme: 'merchantdemoali', timeoutMs: 30000,
success: result => { uni.showToast({ title: '取得授权码,请后端确认', icon: 'none' }) },
fail: error => { uni.showToast({ title: error.errMsg, icon: 'none' }) },
complete: result => { console.log('授权结束', result.requestId, result.errCode) }
}
authorizeAlipay(options)
}
模块二:服务端、恢复与重试
authInfo 使用官方完整版 App 授权协议,orderString 使用 alipay.trade.app.pay 签名参数。两者均由后端生成并原样传递,不把极简 OAuth URL、支付二维码或未签名 JSON 交给本 API。
后端用 authCode 调用换码接口,校验应用与待登录事务后再建立业务会话。支付通知须验签并校验 app_id、商户、业务订单号、金额和交易状态,再幂等入账;SDK 返回值和客户端传来的“成功”不能直接作为入账依据。可参考支付宝官方服务端 SDK。
后端为授权尝试与订单保留可追溯的事务关联。回执中存在业务ID时插件会额外核对;部分官方授权回执不带target_id,不能强制要求它回传。未知或超时先查单,明确取消后也由后端决定是否创建新尝试,不直接重放旧订单串。
进程结束后旧页面回调无法恢复。本插件不持久化授权码或完整回跳;重启应用时由业务后端查单/恢复登录事务。返回前台本身不代表取消;本地等待超时也不代表外部操作已取消。清日志不会解锁仍在运行的 SDK。
模块三:获取和复制诊断
import { getAlipayCapabilitiesSync, getAlipayDiagnosticsSync, clearAlipayDiagnostics } from '@/uni_modules/lizhao-alipay-kit'
const capability = getAlipayCapabilitiesSync()
const snapshot = getAlipayDiagnosticsSync()
console.log('是否原生忙碌', capability.nativeBusy, '日志条数', snapshot.logs.length)
clearAlipayDiagnostics()
交付示例的一键复制包含白名单环境、插件/SDK快照及本次会话日志,不只复制屏幕上最后8行。分段基于固定报告,只有实际复制成功才前进;失败显示真实错误并提供手动选择文本。环境不可取得时报告 unknown,构建 HX 来自运行时提供的 uniCompileVersion,不用维护者电脑版本替代安装包的实际构建来源。
版本来自本次构建的插件配置,诊断标记由版本和更新日期生成;它们不等于应用实际编译时间。示例环境区分运行时读取和构建来源,无法取得的字段保持 unknown。
完整示例
两种宿主的完整诊断页如下,保留环境检查、真实授权/支付入口、底部日志、一键复制、固定快照分段及手动回退。先检查环境,再填写签名参数,发起一种操作,查看成功/失败/完成摘要,最后按需复制报告。
| 宿主 | 完整页面路径 |
|---|---|
| uni-app Vue2/Vue3 | uni_modules/lizhao-alipay-kit/example/uniapp/index.vue |
| uni-app x | uni_modules/lizhao-alipay-kit/example/uniappx/index.uvue |
下面是便于移入业务页的连贯核心流程;签名串由自己的后端提供。空值或无效签名只能验证失败路径。success 表示 SDK 回执成功,完成业务登录或入账仍需后端处理。页面卸载只清理输入和页面回调状态,不会撤销已发起的支付宝操作。需要完整诊断与复制时,直接使用上表交付页面。
uni-app:选项式页面
<template>
<view>
<input v-model="scheme" placeholder="iOS 注册的 Scheme" />
<textarea :maxlength="262144" v-model="authInfo" placeholder="服务端签名 authInfo" />
<button :disabled="busy" @click="authorize">支付宝授权</button>
<textarea :maxlength="262144" v-model="orderString" placeholder="服务端签名 orderString" />
<button :disabled="busy" @click="pay">打开支付宝收银台</button>
<button @click="refreshBusy">检查原生状态</button>
<text>{{ message }}</text>
</view>
</template>
<script>
import { authorizeAlipay, payWithAlipay, getAlipayCapabilitiesSync } from '@/uni_modules/lizhao-alipay-kit'
export default {
data() { return { scheme: '', authInfo: '', orderString: '', busy: false, disposed: false, message: '等待操作' } },
methods: {
refreshBusy() { if (!this.disposed) this.busy = getAlipayCapabilitiesSync().nativeBusy },
authorize() {
if (this.busy || this.disposed) return
this.busy = true
authorizeAlipay({ authInfo: this.authInfo, appScheme: this.scheme, timeoutMs: 180000,
success: result => {
if (this.disposed) return
this.message = '已取得授权码,请交业务后端换码'
// 在自己的已鉴权业务请求中交付result.authCode;不要console.log该字段。
},
fail: error => { if (this.disposed) return; this.message = error.errCode + ' ' + error.errMsg },
complete: () => { if (this.disposed) return; this.busy = getAlipayCapabilitiesSync().nativeBusy }
})
},
pay() {
if (this.busy || this.disposed) return
this.busy = true
payWithAlipay({ orderString: this.orderString, appScheme: this.scheme, timeoutMs: 180000,
success: () => { if (this.disposed) return; this.message = 'SDK 返回成功,请业务后端核实订单' },
fail: error => { if (this.disposed) return; this.message = error.errMsg + (error.outcomeUnknown ? ';先查单勿重付' : '') },
complete: () => { if (this.disposed) return; this.busy = getAlipayCapabilitiesSync().nativeBusy }
})
}
},
onShow() { this.busy = getAlipayCapabilitiesSync().nativeBusy },
onUnload() { this.disposed = true; this.scheme = ''; this.authInfo = ''; this.orderString = '' }
}
</script>
uni-app x:强类型页面
<template>
<scroll-view class="page" direction="vertical">
<view class="content">
<input v-model="scheme" placeholder="iOS 已注册的 Scheme;Android 留空" />
<textarea v-model="authInfo" :maxlength="262144" placeholder="服务端签名 authInfo" />
<button :disabled="busy" @click="authorize">支付宝授权</button>
<textarea v-model="orderString" :maxlength="262144" placeholder="服务端签名 orderString" />
<button :disabled="busy" @click="pay">打开支付宝收银台</button>
<button @click="refreshBusy">检查原生状态</button>
<text>{{ message }}</text>
</view>
</scroll-view>
</template>
<script setup lang="uts">
import { ref } from 'vue'
import { onShow, onUnload } from '@dcloudio/uni-app'
import { authorizeAlipay, payWithAlipay, getAlipayCapabilitiesSync,
AlipayAuthorizeOptions, AlipayPayOptions, AlipaySuccess, AlipayFail, AlipayComplete
} from '@/uni_modules/lizhao-alipay-kit'
const scheme = ref('')
const authInfo = ref('')
const orderString = ref('')
const busy = ref(false)
const message = ref('等待操作')
const disposed = ref(false)
function refreshBusy(): void {
if (!disposed.value) busy.value = getAlipayCapabilitiesSync().nativeBusy
}
function succeeded(result: AlipaySuccess): void {
if (disposed.value) return
message.value = result.operation == 'pay' ? 'SDK 返回成功,请后端核实订单' : '取得授权码,请交后端换码'
// 授权时将 result.authCode 交自己的后端,不打印、显示或持久化授权码。
}
function failed(error: AlipayFail): void {
if (disposed.value) return
message.value = error.errCode.toString() + ' ' + error.errMsg + (error.outcomeUnknown ? ';先查单勿重付' : '')
}
function completed(result: AlipayComplete): void {
if (disposed.value) return
refreshBusy()
console.log('操作完成', result.requestId, result.errCode)
}
function authorize(): void {
if (busy.value || disposed.value) return
busy.value = true
const options: AlipayAuthorizeOptions = {
authInfo: authInfo.value, appScheme: scheme.value, timeoutMs: 180000,
success: succeeded, fail: failed, complete: completed
}
authorizeAlipay(options)
}
function pay(): void {
if (busy.value || disposed.value) return
busy.value = true
const options: AlipayPayOptions = {
orderString: orderString.value, appScheme: scheme.value, timeoutMs: 180000,
success: succeeded, fail: failed, complete: completed
}
payWithAlipay(options)
}
onShow(() => { refreshBusy() })
onUnload(() => {
disposed.value = true
scheme.value = ''
authInfo.value = ''
orderString.value = ''
})
</script>
<style>
.page { flex: 1; }
.content { padding: 12px; }
</style>
API 用途速查
| API | 用途 |
|---|---|
authorizeAlipay(options) |
发起一次授权,异步交付授权码或错误;返回 void。 |
payWithAlipay(options) |
发起一次 App 支付,返回 void;不做退款或自动重试。 |
getAlipayCapabilitiesSync() |
查询平台、插件/SDK版本、安装状态、原生忙碌与配置摘要。 |
getAlipayDiagnosticsSync() |
查询脱敏诊断快照,取得副本不会清空日志。 |
clearAlipayDiagnostics() |
清理本插件诊断缓存,保留活动原生操作。 |
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| authInfo | string | 授权必填 | 后端生成的完整版签名授权串,非极简URL | 无 | 非空,最多262144个UTF16单元 |
| orderString | string | 支付必填 | 后端生成的完整签名App订单串 | 无 | 非空,最多262144个UTF16单元 |
| appScheme | string | iOS必填 | App独占且已注册的scheme,不带://;Android不使用 | 空串 | 首字符字母,允许字母/数字/+/-/. |
| timeoutMs | number | 否 | 本地等待时限,单位毫秒,不是订单有效期 | 180000 | 10000–600000的有限整数 |
| success | function | 否 | SDK业务成功回调,至多一次 | 无 | AlipaySuccess |
| fail | function | 否 | 失败、取消或结果未知回调,至多一次 | 无 | AlipayFail |
| complete | function | 否 | 每次调用的唯一完成摘要,不携带authCode | 无 | AlipayComplete |
返回与回调
AlipaySuccess 包含 requestId、operation(authorize/pay)、platform、resultStatus、resultCode、authCode、requiresServerVerification。支付的 authCode 为空,授权的 authCode 仅在真实成功时有值;两类 requiresServerVerification 都为 true。支付成功以 SDK 状态为依据,不套用授权业务 result_code=200。
AlipayFail 包含 errSubject、errCode、errMsg、requestId、operation、platform、resultStatus、resultCode、outcomeUnknown、nativeType、nativeCause、nativeStack。原生错误正文可能带有凭据,会在公共错误边界明确标注已脱敏;类型与可诊断阶段保留,不默认输出 SDK 原始 log。
AlipayComplete 包含 requestId、operation、succeeded、errCode、resultStatus、outcomeUnknown。success/fail互斥,complete至多一次;用户回调异常会被隔离,仍尝试complete。
AlipayCapabilities 包含 platform、supported、pluginVersion、sdkVersion、installed、nativeBusy、activeRequestId、configuration。installed为 installed/not-installed/unknown;未安装不代表SDK一定无法降级,最终以实际SDK回执为准。SDK版本若只取配置值会明确来源,不伪装运行时版本。
AlipayDiagnostics 包含 pluginId、pluginVersion、buildMark、platform、nativeSnapshot、activeRequestId、waiting、droppedLogs、logs。每条日志带 time/level/requestId/stage/detail,最多200条及120000正文字符;单条有界且截断明确。waiting=false、nativeBusy=true 表示页面等待已结束但原生事务尚未释放。
错误码说明
errSubject 固定为 lizhao-alipay-kit,SDK原始状态放在 resultStatus,不与插件错误码混用。
| 错误码 | 含义 | 处理建议 |
|---|---|---|
| 9381001 | 参数无效 | 检查非空签名串及有限整数毫秒;不要重新编码整串。 |
| 9381002 | 平台不支持 | 只在已集成本插件的Android/iOS App调用。 |
| 9381003 | scheme或配置无效 | 核对原生注册、iOS唯一业务ID及实际SDK配置。 |
| 9381004 | 仍有原生操作 | 等SDK真实终态;超时后先查后端,不并发或反复点击支付。 |
| 9381005 | SDK或活动宿主不可用 | 检查匹配基座和页面活动状态。 |
| 9381006 | 用户取消 | 保留业务订单,由后端决定新尝试;不代表退款。 |
| 9381007 | 授权或支付业务未成功 | 查看SDK状态与后端配置,不能只凭客户端重新扣款。 |
| 9381008 | 处理中、网络异常或结果未知 | 先查单或核对授权事务,不自动重试。 |
| 9381009 | 本地等待超时 | 外部结果未知;原生可能仍在进行,WGT/清日志不会撤销。 |
| 9381010 | 授权结果无效或缺码 | 检查完整版协议、应用能力和原始业务状态。 |
| 9381011 | 原生异常 | 保留脱敏报告,核对SDK、基座和宿主;支付按未知处理。 |
| 9381012 | 桥接回执无效 | 保留报告与基座身份;不将不明回执当作成功。 |
SDK的6001按取消处理;8000、6004、5000重复请求以及可能无法确认交易的6002按结果未知处理。其他业务错误保留原状态;所有最终到账仍以服务端为准。
注意事项
支持与验证范围
开发环境按 HBuilderX、uni-app 和 uni-app x 5.33 起配置,尚未验证更低版本。Android SDK 配置最低 API21,iOS SDK 配置最低 12;最终系统门槛取所用宿主、编译器及依赖要求的较高值。标记含义:√ 为已支持且有对应证据,- 为待确认,x 为不支持。语法或资源验证与设备业务验收分开记录。
| 宿主 / 平台 / 模式 | 标记 | 已验证范围与边界 |
|---|---|---|
| uni-app x / Android | √ | Redmi K30 Pro、Android 12/API31 的完整 Vapor 宿主:能力、参数错误、真实 SDK 无效请求失败、单次回调、日志与系统剪贴板、分段和页面生命周期 |
| uni-app x / Vapor | √ | 已验证 Vapor bytecode;VDOM 尚未单独真机验收 |
| uni-app / Vue2、Vue3 语法 | √ | 两类示例资源编译与 Android Kotlin 联编已通过;不代表 uni-app 完整设备业务已通过 |
| uni-app / Android vue 页面 | - | 完整 uni-app 真机调用链尚待验收 |
| uni-app、uni-app x / iOS | - | 有 Swift 桥接实现、资源导出与生成物检查;Apple SwiftCompile、链接和设备业务待验 |
| uni-app / nvue | x | 未提供 nvue 示例,不纳入支持范围 |
| Harmony | x | 无业务实现,返回明确不支持 |
| Web | x | Chrome、Safari 不提供独立 Web 授权或支付实现 |
| 小程序 | x | 微信、支付宝、抖音、百度、快手、京东、Harmony、QQ、飞书、小红书等均不提供本插件业务实现 |
| 快应用 | x | 华为、联盟快应用均不支持 |
| 云端 | x | 本插件不是 uniCloud 服务端插件;业务签名与验签由自己的后端负责 |
K30 证据来自前一轮匹配源码的自定义基座:已逐字核对真实系统剪贴板与分段重组。本轮整理版本资料和提示,未重新部署设备;不能据此宣称新的首版安装包已复测。
尚未验证:有效账号授权成功、真实支付成功、支付宝客户端真实取消/回跳、强制超时与迟到回执的设备组合、系统拒绝复制、完整 uni-app 真机链路、Apple 原生编译/设备及发行 R8。公共模型或资源导出只能证明各自层级,不能替代这些验收。
SDK、回跳和共存
Android官方SDK含网络及网络/WiFi状态普通权限和支付宝精确包可见性。iOS需要查询scheme、唯一回跳scheme和SDK bundle;不要申请无关危险权限。第三方SDK隐私处理以支付宝官方SDK说明及实际接入要求为准,不能把“插件不上传诊断”写成“SDK不采集数据”。
完整SDK与其他支付宝完整/极简SDK、DCloud支付模块可能发生依赖、类/符号、资源或回跳冲突;首版独立接入优先。未完成对应构建和运行验证前不承诺“任意插件同时安装均不冲突”,不要混入第二份本地SDK。
iOS回跳只在有活动事务、精确匹配当前scheme/safepay时交给SDK对应处理方法;不另建可绑定新请求的匿名standby回调。SDK原始闭包捕获当前事务,已结束闭包或重复回调不能交给后来请求;存在业务ID时额外核对。SDK未回传可验证请求nonce时,插件无法独立证明任意URL的请求来源,仍依赖官方SDK处理和后端换码/查单,不宣称客户端能防伪回跳或确认交易真实性。
生命周期、隐私和基座
本地超时只结束页面等待,SDK操作槽保留到真实结束;若SDK一直无回执,应先查后端,重启应用后恢复业务,不通过清日志强制解锁。示例卸载会清页面敏感输入,原生业务不因此被伪取消。
日志缓存、展示和复制前均脱敏;完整业务回执仅用于受控解析。深层异常正文可能带订单/授权凭据时明确省略,不默认开启SDK原始日志。日志失败不得改变支付回执语义;报告不会自动上传。
新增或修改SDK、Kotlin、Swift、入口或原生配置后必须重新联编或重打Android/iOS对应自定义基座。页面/文档小改通常无需重打;WGT不能替换已编进基座的SDK。请在真实授权或收银台由用户确认,不用开发夹具伪装实际成功。
作者系列 UTS 插件
系列表由项目已核实的统一清单生成,当前插件尚未发布,不在已核实清单中。
| 插件 | 能力方向 | 插件市场 |
|---|---|---|
lizhao-app-keepalive |
应用保活、唤醒、自愈与报告 | 查看插件 |
lizhao-bg-audio |
背景音频播放、队列、倍速与事件 | 查看插件 |
lizhao-ble |
BLE 扫描、连接、读写、通知与自动重连 | 查看插件 |
lizhao-call-kit |
电话、短信、通讯录原生能力 | 查看插件 |
lizhao-camera-pro |
原生相机、拍照录像、水印与媒体保存 | 查看插件 |
lizhao-cast-screen |
DLNA 投屏、AirPlay 路由入口 | 查看插件 |
lizhao-choose-file |
原生文件选择、上传、进度与取消 | 查看插件 |
lizhao-device-id |
设备标识、隐私策略与诊断 | 查看插件 |
lizhao-doc-corrector |
文档扫描、矫正、增强与识别 | 查看插件 |
lizhao-emu-detect |
模拟器环境检测、风险评分与证据 | 查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 | 查看插件 |
lizhao-gallery-pro |
相册媒体分页、筛选、缩略图与导出 | 查看插件 |
lizhao-hce-card |
NFC 虚拟卡、APDU 交互与 NDEF 标签模拟 | 查看插件 |
lizhao-health |
健康数据授权、查询、统计与写入 | 查看插件 |
lizhao-http-server |
本地 HTTP 服务、文件传输与实时通信 | 查看插件 |
lizhao-icon-pro |
SVG 图标组件、多主题与缓存 | 查看插件 |
lizhao-id-photo |
证件照制作、尺寸换算、换底色与模板换装 | 查看插件 |
lizhao-img-eraser |
图片去水印、局部修复与原生编辑器 | 查看插件 |
lizhao-live-activity |
实时活动、系统胶囊与普通通知降级 | 查看插件 |
lizhao-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 | 查看插件 |
lizhao-notify-pro |
本地通知、点击动作、进度与定时提醒 | 查看插件 |
lizhao-novel-reader |
原生小说阅读、仿真翻页与段落评论 | 查看插件 |
lizhao-office-view |
Office 与 PDF 文件预览、进度与缓存管理 | 查看插件 |
lizhao-pdf-pro |
PDF 阅读、签批、真实写回与页面处理 | 查看插件 |
lizhao-scan-pro |
原生扫码、连续扫码、相册识别 | 查看插件 |
lizhao-serial-port |
路径串口、USB 串口、多会话收发与诊断 | 查看插件 |
lizhao-share-plus |
系统分享、远程文件下载后分享 | 查看插件 |
lizhao-smart-tts |
系统 TTS、云端合成、听书方案 | 查看插件 |
lizhao-sqlite-pro |
原生 SQLite、迁移、备份与诊断 | 查看插件 |
lizhao-sse-pro |
SSE、Line、JSONL 与 Raw 流式请求 | 查看插件 |
lizhao-tcp-pro |
TCP 客户端、服务端、多连接与诊断 | 查看插件 |
lizhao-usb-storage |
U 盘、移动硬盘文件浏览、读写与批量复制 | 查看插件 |
lizhao-video-editor |
视频裁剪、压缩、取帧与 FFmpeg/FFprobe | 查看插件 |
lizhao-video-feed |
短视频上下滑、短剧选集与分页加载 | 查看插件 |
lizhao-video-player |
原生视频播放器、清晰度与播放交互 | 查看插件 |
lizhao-video-thumb |
视频封面、批量取帧与 Base64 返回 | 查看插件 |
lizhao-vpn-pro |
企业 VPN、IKEv2、安全接入与脱敏诊断 | 查看插件 |
lizhao-wechat-kit |
微信登录、分享、支付、小程序与客服 | 查看插件 |

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6486
赞赏 5
下载 12727711
赞赏 1958
赞赏
京公网安备:11010802035340号