微信下单接口签名错误,已经按照文档排查了所有可能的原因,在windows开发电脑上可以下单成功,部署在linux服务器后报签名错误,证书是一样的,服务器时间也是和互联网同步的
Config config2 =new RSAPublicKeyConfig.Builder()
.merchantId("1722*****57") //微信支付的商户号
.privateKeyFromPath("/data/server/vr-cloud/cert/apiclient_key.pem") // 商户API证书私钥的存放路径
.publicKeyFromPath("/data/server/vr-cloud/cert/pub_key.pem") //微信支付公钥的存放路径
.publicKeyId("PUB_KEY_ID_011722*****90200181519001404") //微信支付公钥ID
.merchantSerialNumber("244654B772*****5F24197E35B60E3A3B9") //商户API证书序列号
.apiV3Key("8d80274ed27*****c50ab15fff78de") //APIv3密钥
.build();
// 构建service
JsapiService service = new JsapiService.Builder().config(config2).build();
PrepayRequest request = new PrepayRequest();
request.setAppid("wx7*****07f5db088");
request.setMchid(merchantId);
request.setDescription("商品描述");
request.setOutTradeNo("VR"+System.currentTimeMillis());
request.setNotifyUrl("https://wxpay.*****.*****/wx/v1/jsapi/callback");
Payer payer=new Payer();
payer.setOpenid(openId);
request.setPayer(payer);
Amount amount = new Amount();
amount.setTotal(5000);
request.setAmount(amount);
// 调用下单方法,得到应答
PrepayResponse response = service.prepay(request);

你好,签名异常可以重点排查下商户号、签名用的API证书和在请求头传的serial_no是否匹配。签名文档请参考下:https://pay.weixin.qq.com/doc/v3/partner/4012365862
问提解决了,不用闲的无聊的官方客服了;
问题原因:同样的证书,在linux和windows下得到商户号不一样