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,为什么还会验签错误呢?