支付宝支付不使用PartnerID,而需严格匹配开放平台的app_id;orderInfo必须由后端生成并原样透传,manifest.json中Android和iOS配置的appid须与之完全一致。

支付宝支付不需要 PartnerID 参数
uni-app 的支付宝支付不使用 PartnerID,这是微信支付专用字段。支付宝用的是 app_id(应用 ID),且必须和你在支付宝开放平台创建的移动应用 ID 完全一致。
支付宝 orderInfo 中必须包含 app_id,且格式固定
调用 uni.requestPayment 时传入的 orderInfo 是一个字符串(不是对象),由后端拼接生成,前端不能手动构造签名或篡改字段。常见错误是前端试图自己拼 orderInfo,导致 sign 校验失败。
-
orderInfo必须由后端调用支付宝 SDK(如alipay.trade.app.pay)生成,包含app_id、biz_content(JSON 编码)、sign等完整参数 - 示例片段(后端返回,前端直接透传):
alipay_sdk=alipay-sdk-php-20180705&app_id=202100116263372x&biz_content=%7B%22out_trade_no%22%3A%22123456%22%2C%22total_amount%22%3A1.00%2C%22subject%22%3A%22test%22%7D&sign=xxx - 前端只负责把这整段字符串原样传给
uni.requestPayment({ provider: 'alipay', orderInfo: '...' })
manifest.json 里填的是 app_id,不是 PartnerID
在 HBuilderX 的 manifest.json → “App 模块配置” → “Payment(支付)” → 勾选“支付宝支付”后,需确保 Android/iOS 平台配置中填写的 app_id 和后端使用的、支付宝开放平台审核通过的移动应用 ID 严格一致。大小写、空格、下划线都不能错。
- Android 配置路径:
"mp-alipay": { "appid": "202100116263372x" } - iOS 配置路径:
"ios": { "alipay": { "appid": "202100116263372x" } } - 如果填错,
plus.payment.getChannels可能根本查不到alipay渠道,provider为null
容易被忽略的签名和编码问题
支付宝对 biz_content 字段要求严格 URL 编码,且整个 orderInfo 字符串必须 UTF-8 编码传输。前端若手动拼接或解码再编码,极易破坏原始签名。
- 后端返回的
orderInfo字符串,前端禁止用decodeURIComponent或JSON.parse处理 - 不要在前端加额外参数(比如时间戳、随机串),支付宝会校验全部字段
- 测试时注意沙箱环境:后端必须用沙箱
app_id和沙箱网关,否则返回INVALID_APP_ID
orderInfo 字符串是否合法可验签,以及 manifest.json 里填的 app_id 是否和开放平台完全一致。PartnerID 这个词在支付宝上下文中根本不存在,混淆它只会浪费调试时间。



















