uniapp应用内调用微信支付报错-100如何解决?

在uniapp开发的应用中调用微信支付时遇到错误码-100,导致支付功能无法正常使用。具体表现为调用支付接口后立即返回失败,并显示错误信息。已确认商户配置、appid和密钥等信息正确,且签名也经过校验无误。尝试过重新生成预支付订单、更换网络环境等方法均无效。请问这个错误码代表什么含义?该如何排查和解决这个问题?

2 回复

检查支付参数是否正确,特别是appId、timeStamp、nonceStr、package、signType和paySign。确保签名算法正确,参数顺序一致,且服务端返回的签名无误。


在UniApp中调用微信支付时遇到-100错误,通常表示支付参数错误签名验证失败。以下是常见原因及解决方法:


1. 检查支付参数

确保传递给微信支付的所有参数正确且完整:

  • appId:微信开放平台或公众号的AppID(需与商户号绑定)
  • timeStamp:10位时间戳(字符串格式)
  • nonceStr:随机字符串(建议16-32位)
  • package:格式为 prepay_id=xxx(服务端返回)
  • signType:通常为 MD5HMAC-SHA256
  • paySign:签名(由服务端生成)

示例代码(UniApp):

uni.requestPayment({
  provider: 'wxpay',
  timeStamp: '1593503041',
  nonceStr: '5K8264ILTKCH16CQ2502SI8ZNMTM67VS',
  package: 'prepay_id=wx201410272009395522657a690389285100',
  signType: 'MD5',
  paySign: 'C380BEC2BFD727A4B6845133519F3AD6',
  success: (res) => console.log('支付成功', res),
  fail: (err) => console.error('支付失败', err)
});

2. 验证签名

  • 服务端签名错误:确保服务端按微信规则生成签名(参数按ASCII排序、拼接后签名)。
  • 签名类型一致:客户端 signType 需与服务端使用的签名算法一致(MD5或HMAC-SHA256)。

3. 检查证书与配置

  • 商户号绑定:确认AppID与微信支付商户号已绑定。
  • API密钥:商户平台设置的API密钥(key)需与服务端签名使用的密钥一致。
  • 域名授权:在微信公众平台配置支付授权目录(如H5支付)。

4. 其他常见问题

  • 时间戳过期:确保 timeStamp 为当前时间(10分钟内有效)。
  • 重复支付:同一订单号不可重复发起支付。
  • 网络问题:检查服务端与微信接口通信是否正常。

调试建议

  1. 在服务端打印签名前的参数字符串,与微信官方工具生成的签名对比。
  2. 使用微信支付沙箱环境测试(需申请)。
  3. 查看微信支付日志(商户平台)或UniApp真机调试输出。

通过逐步排查参数和签名,通常可解决-100错误。

回到顶部