收藏
回答

搞了一天!根据JAVA SDK 中所写,运行了报签名问题?

/** 商户号 */
public static String merchantId = "1101245633";

/** 商户API私钥路径 */
public static String privateKeyPath = "apiclient_key.pem";

/** 商户证书序列号 */
public static String merchantSerialNumber = "4AB2683D6D167EA4D1886131C437BFB485BFCC0E";

/** 商户APIV3密钥 */
public static String apiV3Key = "ZPXXwxzf1101245633Gongxiangsheng";
/** 初始化微信支付服务 */
public  JsapiService initWxPayService() {
    String privateKeyPath1 = getClasspathFileAbsolutePath(privateKeyPath);
    Config config =
            new RSAAutoCertificateConfig.Builder()
                    .merchantId(merchantId)
                    // 使用 com.wechat.pay.java.core.util 中的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
                    .privateKeyFromPath(privateKeyPath1)
                    .merchantSerialNumber(merchantSerialNumber)
                    .apiV3Key(apiV3Key)
                    .build();
    // 初始化服务
    service = new JsapiService.Builder().config(config).build();
    return service;
}



如下是错误信息

[{"code":"SIGN_ERROR","detail":{"detail":{"issue":"sign not match"},"field":"signature","location":"authorization","sign_information":{"method":"GET","sign_message_length":85,"truncated_sign_message":"GET\n/v3/certificates?algorithm_type=RSA\n1765362220\nqeFssCwHvCPJf9gdma7eD8NRjvvnYOVR\n\n","url":"/v3/certificates?algorithm_type=RSA"}},"message":"错误的签名,验签失败"}] HttpRequest[{"http_method":"GET","url":"https://api.mch.weixin.qq.com/v3/certificates?algorithm_type=RSA","uri":"https://api.mch.weixin.qq.com/v3/certificates?algorithm_type=RSA","headers":{"headers":{"Authorization":"WECHATPAY2-SHA256-RSA2048 mchid=\"1101245633\",nonce_str=\"qeFssCwHvCPJf9gdma7eD8NRjvvnYOVR\",timestamp=\"1765362220\",serial_no=\"4AB2683D6D167EA4D1886131C437BFB485BFCC0E\",signature=\"H5dn8BK00qbe7jOX2Gl40YN4at8EdROuCGJ3uh9UzPE/G200Rg5lVlUuZcidTxQVSS9qj/fcIdcG0npIFzl2ISFWr7TiwK7TZnbkbM1oStMRRnfGymaMntQyZIV1r5ks1Tb2sclnn4rJQ47m4MZ2V0Yovx3cllwzR7gsFMG46vIe86uhdPaObnpHPbhqm2cvcCG+iLdGzNKprjQ/75mapHT0ntg9Vr5GIpCgFdufhxMoesZRBnweNLE7tAPWjF357FST00QvWcOuZociZgLFlsmGEcmj4AVcRW0XO6Ea+CYkx8zfj812fE5bKaXTTe9eqlva82k2nJP532JyynISRQ==\"","Accept":" */*","User-Agent":"WechatPay-Java/0.2.17 (Windows 11/10.0) Java/17.0.16 Credential/WechatPay2Credential Validator/ okhttp3/null","Content-Type":"application/json","Wechatpay-Serial":""}}}]


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

3 个回答

  • 微信支付质量运营助手
    微信支付质量运营助手
    星期四 10:45

    微信支付公钥和平台证书都是用于v3版本接口的验签及敏感信息加密,公钥没有有效期,便于维护,建议使用公钥方案:https://pay.weixin.qq.com/doc/v3/merchant/4012153196


    这个商户号是公私钥方案的,SDK也请用公钥方案来初始化就可以了。

    星期四 10:45
    有用
    回复
  • 支付社区运营
    支付社区运营
    星期四 10:39

    你好 v3密钥为商户敏感信息,辛苦尽快到商户后台重置。该帖子已隐藏。

    星期四 10:39
    有用
    回复
  • Memory (私信不回复)
    Memory (私信不回复)
    星期三 19:16

    贴完整代码,你这点代码没办法猜

    星期三 19:16
    有用
    回复 2
    • 呱唧吧唧
      呱唧吧唧
      发表于移动端
      星期三 19:24
      这就是完整代码,证书路径没问题,在生成config时报错。
      星期三 19:24
      回复
    • Memory (私信不回复)
      Memory (私信不回复)
      星期三 21:46回复呱唧吧唧
      那就是apiclient_key.pem 用的不对
      星期三 21:46
      回复
登录 后发表内容