收藏
回答

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

回答关注问题邀请回答
收藏

2 个回答

  • Memory
    Memory
    发表于移动端
    10-20
    chooseWXPay和WeixinJSBridge.invoke两种方式参数大小写有区别的,你用错了
    10-20
    有用 1
    回复 1
    • 胡辣汤
      胡辣汤
      10-21
      请问具体是哪个参数的大小写不对呢?
      10-21
      回复
  • 胡辣汤
    胡辣汤
    10-21
    发现了,这里的timeStamp是小写,要用timestamp,真的够坑的。。。
    


    10-21
    有用
    回复
登录 后发表内容