UniApp-X 微信 App 支付 701100 排查记录
1. 问题现象
项目使用 UniApp-X(UVue + UTS)开发 Android App,通过uni.requestPayment调起微信 App 支付。后端接口/api/pay/appwxpay返回了完整的支付参数,但手机端报错:
[recharge] requestPayment fail detail={"errCode":701100,"errMsg":"Order payment failure."}当时容易先怀疑 AppID、商户号、签名或订单金额。实际本次问题的原因是运行时一直使用标准基座。
2. 最终结论
701100在本次场景下不是后端订单参数错误,而是:
标准基座没有包含当前项目需要的微信支付原生模块和最新 App 配置,无法正确处理微信 App 支付订单。
重新制作并使用包含支付模块的自定义基座后,微信支付正常跑通。
3. 标准基座与自定义基座
标准基座适合调试页面、接口和普通交互,但不保证包含项目新增的原生模块、包名和支付配置。修改manifest.json后,已安装的标准基座也不会自动更新。
自定义基座是依据当前项目配置制作的调试 App,应包含当前项目使用的uni-payment、包名及其他原生模块。微信支付、支付宝支付、推送、地图等原生能力,都应在自定义基座或正式 APK 中验证。
4. 排查顺序
4.1 确认调用链
App 支付必须使用 App 专用接口,例如:
POST /api/pay/appwxpay前端传给支付 API 的orderInfo必须是订单字符串,而不是对象:
uni.requestPayment({provider:'wxpay',orderInfo:orderInfo,});支付成功后还必须查询/api/pay/appwxpay,因为uni.requestPayment成功只代表客户端支付动作完成,业务是否入账要以服务端状态为准。
4.2 检查订单字段
微信 App 支付参数通常至少包含:
appid partnerid prepayid package=Sign=WXPay noncestr timestamp sign检查重点:
appid是微信开放平台 AppID,不是小程序 AppID。partnerid是对应微信商户号。- AppID 和商户号已经绑定。
timestamp是数字。- 订单金额大于 0,且订单没有过期或重复支付。
sign是针对当前订单参数重新生成的签名。
4.3 检查包名
项目实际包名必须和微信开放平台移动应用登记的 Android 包名一致。本项目包名为:
com.ceshi.app需要同时核对manifest.json、HBuilderX 发行配置、微信开放平台移动应用配置和实际安装包包名。
4.4 检查手机和基座
- 手机已经安装微信并可以正常支付。
- 使用 Android 真机测试。
- 自定义基座已经重新制作并成功安装。
- HBuilderX 运行时选择的是自定义基座,而不是标准基座。
- 如果修改过
manifest.json或原生模块,不能继续使用旧基座。
5. 正确操作流程
第一步:配置微信支付模块
manifest.json中应配置 Android 的uni-payment,例如:
{"app-android":{"distribute":{"modules":{"uni-payment":{"wxpay":{"appid":"wxc99999"}}}}}}第二步:重新制作自定义基座
在 HBuilderX 中根据当前项目重新制作 Android 自定义基座,确保使用最新的manifest.json,并包含uni-payment模块和正确包名。
第三步:安装并运行
将新基座安装到手机,覆盖或卸载旧基座后重新安装。然后在 HBuilderX 中选择自定义基座运行项目。
官方说明:UniApp App 运行到 Android/iOS
第四步:重新创建订单
不要重复使用之前失败的预订单。重新进入充值页面创建订单,再点击微信支付。支付后调用订单状态接口确认:
paid 支付成功并已入账 pending 支付结果确认中 closed / failed 支付失败或订单关闭 settlement_failed 已付款但业务入账异常6. 常见错误码判断
701100 Order payment failure
优先检查:
- 是否还在使用标准基座或旧自定义基座。
- 自定义基座是否包含
uni-payment。 - 包名、微信 AppID 和商户号是否匹配。
- 订单是否过期、重复支付或金额无效。
- 后端签名和商户配置是否正确。
700000 Other payment errors
优先检查:
orderInfo是否为字符串。- 字段名是否为小写格式。
timestamp是否为数字。package是否为Sign=WXPay。- 是否重新制作并安装了自定义基座。
手机无响应或无法连接基座
检查自定义基座是否安装并启动、ADB 是否连接、USB 调试是否开启、HBuilderX 是否选择了正确设备,以及手机和电脑连接是否正常。
7. 本次问题的解决结果
本次实际验证过程如下:
- 后端
/api/pay/appwxpay返回参数正确。 - 微信 AppID、商户号、支付密钥和包名已确认。
- 前端使用字符串格式组装微信
orderInfo。 - 原先使用标准基座运行,出现
701100。 - 按官方运行说明重新制作包含微信支付模块的自定义基座。
- 安装自定义基座并选择自定义基座运行。
- 重新创建支付订单后,微信支付成功。
最终结论:
UniApp-X App 支付不能只验证页面代码和接口返回值,必须验证运行载体。只有在包含对应原生支付模块的自定义基座或正式 APK 中测试通过,才能认为 App 支付真正完成。
8. 后续固定流程
修改 manifest 或原生能力配置 ↓ 重新制作自定义基座 ↓ 安装新基座 ↓ 重新创建支付订单 ↓ 真机调起支付 ↓ 查询服务端订单状态以后新增或修改微信支付、支付宝支付、推送、地图、原生插件及manifest.json中的模块配置时,都应执行这套流程。