收藏
回答

下单接口报“签名错误”

微信下单接口签名错误,已经按照文档排查了所有可能的原因,在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);


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

2 个回答

  • 微信支付质量运营助手
    微信支付质量运营助手
    09-22

    你好,签名异常可以重点排查下商户号、签名用的API证书和在请求头传的serial_no是否匹配。签名文档请参考下:https://pay.weixin.qq.com/doc/v3/partner/4012365862

    09-22
    有用
    回复
  • 红波
    红波
    09-19

    问提解决了,不用闲的无聊的官方客服了;

    问题原因:同样的证书,在linux和windows下得到商户号不一样

    09-19
    有用
    回复 1
    • Memory (私信不回复)
      Memory (私信不回复)
      09-19
      来,openssl 读取同一证书文件+ 哈希值证明一下 你是怎么做到在 Linux 下和 windows 下同一个证书不同商户号的,真能给自己找借口
      09-19
      回复
登录 后发表内容
问题标签