Juleen
Juleen
  • 发布:2026-08-10 17:39
  • 更新:2026-08-10 17:40
  • 阅读:20

uniapp 微信支付问题

分类:uni-app

app在调用uni.requestPayment 使用微信支付的时候,弹窗提示

fail 回调显示
{
"errMsg": "requestPayment:fail [payment微信:-1]General errors",
"code": -100
}
,经过测试发现,我把微信卸载后重新安装,第一次调用支付接口,是可以正常进行支付的

但是我再次调用支付接口后就又会提示这个错误,重新卸载安装微信后还是一样的情况,第一次支付可以正常支付,第二次、第三次往后就不行了。已排除订单信息重复的问题

2026-08-10 17:39 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

这个错误 requestPayment:fail [payment微信:-1]General errors 是微信支付 SDK 返回的通用错误,结合你描述的"重装微信后第一次可以支付,后续都失败"的现象,通常不是订单信息重复的问题,而是微信客户端的缓存或授权状态异常导致的。

可能的原因及排查步骤

1. 微信客户端缓存问题(最可能)

微信在首次支付后会缓存一些支付环境信息,如果缓存损坏,会导致后续支付失败。

验证方法:

  • 进入微信 → 我 → 设置 → 通用 → 存储空间 → 清理缓存(不要清理聊天记录
  • 或者尝试退出微信账号重新登录(比重装微信更彻底的缓存清理)

2. App 端配置问题

确保你的 uni-app 项目配置正确:

manifest.json 配置检查:

{  
  "app-plus": {  
    "distribute": {  
      "sdkConfigs": {  
        "payment": {  
          "weixin": {  
            "appid": "你的微信开放平台AppID",  
            "universalLinks": "https://你的域名/universal-links/" // iOS 需要  
          }  
        }  
      }  
    }  
  }  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

注意: 微信 App 支付需要使用微信开放平台的 AppID(不是小程序 AppID),且该 AppID 必须与你的应用包名(Android)/ Bundle ID(iOS)绑定。

3. 订单参数问题

虽然你排除了订单重复,但请检查参数格式:

uni.requestPayment({  
  provider: 'wxpay',  
  orderInfo: {  
    "appid": "wx1234567890abcdef", // 微信开放平台 AppID  
    "noncestr": "随机字符串",  
    "package": "Sign=WXPay", // 固定值  
    "partnerid": "1234567890", // 商户号  
    "prepayid": "wx1234567890abcdef", // 预支付交易会话ID  
    "timestamp": 1234567890, // 时间戳(秒)  
    "sign": "签名" // 签名  
  },  
  success: (res) => {  
    console.log('支付成功', res);  
  },  
  fail: (err) => {  
    console.error('支付失败', err);  
  }  
});

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

关键点:

  • timestamp 必须是秒级时间戳(不是毫秒)
  • sign 签名必须使用微信支付 API v2 的签名算法(MD5 或 HMAC-SHA256)
  • 所有参数名必须全小写(如 noncestr 不是 nonceStr

4. 微信开放平台配置检查

  • 确保在微信开放平台(open.weixin.qq.com)已创建移动应用,并审核通过
  • 确保已开通微信支付功能,且商户号与 AppID 已绑定
  • 检查 Android 应用的包名和签名是否与开放平台配置一致(签名需使用微信官方签名工具生成)

5. 调试建议

如果上述检查都正常,建议:

  1. 使用微信官方 Demo 测试:下载微信官方的 Android/iOS SDK Demo,使用相同的参数测试,确认是否为微信客户端问题
  2. 查看微信日志:在微信支付失败页面,通常会有"查看详情"或日志入口,查看具体错误码
  3. 联系微信支付技术支持:提供 prepay_id 和错误时间,查询具体失败原因

6. 临时解决方案

如果急需上线,可以考虑:

  • 使用 uni-pay 插件(官方推荐的云端统一支付服务),它封装了微信支付,可能规避一些客户端兼容问题:uni-pay 插件

总结

"重装微信后第一次可以,后续失败"这个特征 strongly suggests 微信客户端的本地缓存或授权状态异常。建议先尝试清理微信缓存退出账号重新登录,如果问题解决,说明是微信客户端的 bug,需要用户侧操作或等待微信修复。如果清理缓存无效,再重点检查 App 的签名配置和订单参数格式。

内容为 AI 生成,仅供参考

要回复问题请先登录注册