发现了,这里的timeStamp是小写,要用timestamp,真的够坑的。。。
使用wepay-java的SDK方法下单提示签名错误可能是什么原因?JsapiServiceExtension jsapiService = new JsapiServiceExtension.Builder().config(config).build(); PrepayRequest request = new PrepayRequest(); Payer payer = new Payer(); payer.setOpenid(openId); request.setPayer(payer); Amount amount = new Amount(); amount.setTotal(1); request.setAmount(amount); request.setAppid(staticAppid); request.setMchid(staticMchId); request.setDescription("测试充值"); request.setNotifyUrl("https://*****/wechatPayCallback"); request.setOutTradeNo("zhuli_trade_no_00001" + StringUtils.generateRandomString(4)); // 调用下单方法,得到应答 PrepayWithRequestPaymentResponse response = jsapiService.prepayWithRequestPayment(request); 前端代码: wxPrepay({openId: openId}).then(res => { if (res.code === 200) { const data = res.data wx.chooseWXPay({ appId: appId, timeStamp: data.timeStamp, // 支付签名时间戳 nonceStr: data.nonceStr, // 支付签名随机串,不长于 32 位 package: data.packageVal, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) signType: data.signType, // 微信支付V3的传入RSA,微信支付V2的传入格式与V2统一下单的签名格式保持一致 paySign: data.paySign, // 支付签名 success: function(res2) { console.log( `---chooseWXPay成功,返回结果:\n`,res2); }, // 支付取消回调函数 cancel: function(res2) { console.log( `---chooseWXPay取消,返回结果:\n`,res2); }, // 支付失败回调函数 fail: function(res2) { console.log( `---chooseWXPay失败,返回结果:\n`,res2); }, }); } }) 但是用手机真机测试的时候提示支付签名验签失败。所有参数都反复核对过没有错。使用的是官方的SDK,为什么还会验签错误呢?
10-21