支付宝app支付失败的根本原因是原生sdk未正确集成或参数配置错误:ios需配置url scheme并勾选支付服务,android需引入新版sdk并声明activity导出属性,orderinfo须完整透传且provider严格为'alipay'。

支付宝 SDK 未正确集成到 iOS/Android 原生层
uni-app 的 uni.requestPayment 在 App 端调不起支付宝,根本原因几乎都是原生侧没配好——HBuilderX 打包时不会自动注入支付宝 SDK,必须手动操作。
常见错误现象:Alipay not installed(实际已装)、payment not supported、点击支付无响应、控制台静默失败。
- iOS:需在
manifest.json → App SDK 配置 → 支付服务中勾选「支付宝」,并确保ios/entitlements.plist已添加alipayURL Scheme(如ap123456789)且与支付宝后台一致 - Android:必须将
alipaySdk-15.8.0.20230915151555.jar(或新版 aar)放入nativeplugins/alipay/Android/libs/,且AndroidManifest.xml中声明com.alipay.sdk.app.H5PayActivity - 真机调试务必用自定义基座(非云打包默认基座),否则原生插件不生效
uni.requestPayment 调用参数错位导致签名失败
支付宝 App 支付不是传个订单号就能付,后端返回的 orderInfo 字符串必须完整、未经转义、且含有效签名——前端只负责透传,不能拼接或 decode。
常见错误现象:invalid app_id、sign error、system busy(实为验签失败)。
-
provider必须写死为'alipay',大小写敏感,写成'Alipay'或'alipay2'直接失败 -
orderInfo是后端拼好的完整字符串(含app_id=xxx&biz_content={...}&sign=xxx),不能 JSON.parse 后再传,也不能用encodeURIComponent二次编码 - 不要传
timeStamp、nonceStr、package这些微信字段,支付宝不认
Android 真机上唤起支付宝闪退或白屏
大概率是支付宝 SDK 版本与 targetSdkVersion 冲突,尤其是 Android 12+(API 31)之后对 intent 启动限制变严。
使用场景:HBuilderX 3.9+、uni-app 3.7+、targetSdkVersion ≥ 31 的项目。
- 确认使用的
alipaySdk是 15.8.0 及以上版本(旧版不兼容 Android 12+ 的android:exported要求) - 检查
nativeplugins/alipay/Android/AndroidManifest.xml中所有<activity></activity>是否都显式声明了android:exported="true"或"false" - 若仍闪退,临时降级 targetSdkVersion 到 30 测试——能付通说明就是兼容性问题,不能拖
支付成功后无法触发 success 回调
不是前端逻辑问题,而是支付宝客户端在跳转回 App 时没正确回调——本质是 URL Scheme 或 Universal Links 配置失效。
性能影响:用户看到支付成功页,但你的订单状态卡在「待支付」,体验断裂。
- iOS:确认
manifest.json → iOS 模块配置 → URL Scheme填的是支付宝分配的ap开头的字符串(如ap123456789),不是你自己随便写的 - Android:检查
AndroidManifest.xml中AlipayResultActivity的 intent-filter 是否包含android:scheme="yourpackagename"(部分老文档误写成alipay) - 别依赖
uni.onAppShow捕获结果——它不可靠,必须靠原生回调驱动 success/fail










