uni-app App端支付宝支付失败主因是原生SDK配置错误,需严格检查manifest.json的app-plus→modules→Alipay节点、nativeplugins插件、自定义基座、iOS URL Scheme与entitlements.plist、Android签名一致性这五处。

uni-app App端调不起支付宝支付,90%以上不是前端代码写错了,而是原生SDK没配对——manifest、插件、基座、签名这四样里至少有一样漏了或填错了。
manifest.json 中支付宝 APPID 必须填在 app-plus → modules → Alipay 节点下
很多人在 manifest.json 里反复搜索“alipay”,最后把 appid 填到 mp-alipay 或 h5 节点下,结果安卓/iOS 都不生效。App 端支付的配置只认这一处:
-
"app-plus"下必须有"modules"字段,且里面开启支付模块:"Payment": {"alipay": true} -
"Alipay"是独立子节点,结构必须是:"Alipay": {"appid": "2021000123456789"}(这个 ID 是开放平台「移动应用」的 20 开头 ID,不是网页应用的) - 检查是否误启用了
"mp-alipay"节点——那是小程序用的,对 App 端完全无效
Android 必须手动放 alipaySdk.jar/aar 到 nativeplugins
云打包默认基座不带支付宝 SDK,HBuilderX 不会自动注入。你看到的 Alipay not installed 或静默失败,基本都卡在这一步:
- 下载最新版
alipaySdk-15.8.0.20230915151555.jar(或新版.aar),放进nativeplugins/alipay/Android/libs/ - 确认
nativeplugins/alipay/Android/AndroidManifest.xml中声明了com.alipay.sdk.app.H5PayActivity及对应<intent-filter></intent-filter> - 若 targetSdkVersion ≥ 31(Android 12+),所有 activity 必须显式声明
android:exported="true"或"false";否则唤起闪退 - 真机调试务必用「自定义基座」,否则
nativeplugins下的插件根本不会加载
iOS 需要 entitlemens.plist + URL Scheme 双验证
Android 看包名+SHA1,iOS 则靠 URL Scheme 回调唤醒。漏掉任意一项,支付成功后就回不来:
- 在
ios/entitlements.plist中添加 URL Scheme,格式为ap + APPID,例如ap2021000123456789 - 该 Scheme 必须和支付宝开放平台「移动应用」后台填写的 iOS URL Scheme 完全一致(大小写、前缀都不能错)
- 不需要在
info.plist里重复加,entitlements.plist是 uni-app iOS 插件机制指定入口 - 沙箱测试时,确保手机装的是「沙箱版支付宝 App」,普通版不响应沙箱订单
uni.requestPayment 的 orderInfo 必须原样透传,不能动一个字符
后端返回的 orderInfo 是一整段已签名的原始字符串,比如 app_id=2021000123456789&biz_content=%7B%22out_trade_no%22%3A%22xxx%22%7D&sign=xxx。前端只负责透传:
- 绝对不要
JSON.parse()——它根本不是 JSON - 绝对不要
decodeURIComponent()或encodeURIComponent()——多编一次就验签失败 - 绝对不要拆开改字段再拼回去 ——签名立刻失效,报
INVALID_PARAMETER - 真机调试时用
console.log(orderInfo)看长度,正常应为 300~800 字符;若只有几十字,说明后端根本没生成对
最容易被忽略的其实是「五处签名一致性」:开放平台后台填的包名+SHA1、keystore 文件、HBuilderX 项目配置里的签名信息、nativeplugins 中 SDK 版本、以及自定义基座的构建环境——任何一处不匹配,都会让支付在某个环节无声失败。



















