- 发布:2025-03-18 19:53
 - 更新:2025-03-20 12:49
 - 阅读:500
 
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Window 10
HBuilderX类型: 正式
HBuilderX版本号: 3.99
手机系统: 全部
手机厂商: 华为
页面类型: vue
vue版本: vue2
打包方式: 离线
项目创建方式: HBuilderX
App下载地址或H5⽹址: https://ios.u-area.com/m/pages/Common/AppDownload
测试过的手机:
示例代码:
                                    
                                    
                                        let orderInfo = {  
    appid: res.appId,  
    noncestr: res.nonceStr,  
    package: res.package,  
    partnerid: res.partnerId,  
    prepayid: res.prepayId,  
    timestamp: res.timestamp,  
    sign: res.sign.slice(0,31)  
}  
console.warn('查看orderInfo',orderInfo)  
uni.requestPayment({  
    provider: 'wxpay',  
    orderInfo: orderInfo,  
    success: res1 => {},  
    fail: res1 => {},  
})
                                     
                                
                                                                                                let orderInfo = {  
    appid: res.appId,  
    noncestr: res.nonceStr,  
    package: res.package,  
    partnerid: res.partnerId,  
    prepayid: res.prepayId,  
    timestamp: res.timestamp,  
    sign: res.sign.slice(0,31)  
}  
console.warn('查看orderInfo',orderInfo)  
uni.requestPayment({  
    provider: 'wxpay',  
    orderInfo: orderInfo,  
    success: res1 => {},  
    fail: res1 => {},  
})                                    操作步骤:
                                    
                                        使用后端正常二次加密的32位长度的sign调用uni.requestPayment接口
                                     
                                
                                                                                                使用后端正常二次加密的32位长度的sign调用uni.requestPayment接口
预期结果:
                                    
                                    
                                        能正常拉起微信支付
                                     
                                
                                                                                                能正常拉起微信支付
实际结果:
                                    
                                    
                                        报错:支付验证签名失败
                                     
                                
                                                            报错:支付验证签名失败
bug描述:
App调用微信支付,使用uni.requestPayment这个api,sign可以任意填写<32位数的字符串,正确的32位签名却显示验签失败,sign可以填写任意的字符,只要不超过31位数即可掉起微信支付,并且sign不能为空,sign的意义不知道是啥
            
            
            
            
拂晓2024 (作者)
可是实测32位长度的sign,会显示验签失败,反而截取一下之后才能成功,并且也找到几篇帖子,看到也遇到了这种情况,例如这篇文章:https://www.pimspeak.com/uni-app-using-wechat-app-pay.html
2025-03-20 15:25
拂晓2024 (作者)
并且使用微信的验签工具,查看了一下,和我们生成的签名是一致的,说明我们的签名是没有问题的
2025-03-20 15:25
DCloud_App_Array
回复 拂晓2024: 你的sign字段数据从哪里生成的?这个数据应该是微信的统一下单接口返回的哈。
2025-03-20 18:29