微信支付sdk版本0.4.0之后的证书功能配置

微信支付sdk版本>=0.4.0可使用 CertificatesManager.getVerifier(merchantId)支付给付的验签器替代默认的验签。它会定时下载和更新商户的微信平台证书(默认下载间隔为UPDATE_INTERVAL_MINUTE)。
所以WxConfig的配置如下:

@Configuration
@PropertySource("classpath:wxpay.properties") //读取配置文件
@ConfigurationProperties(prefix="wxpay") //读取wxpay节点
@Data //使用set方法将wxpay节点中的值填充到当前类的属性中
@Slf4j
public class WxPayConfig {

    // 商户号
    private String mchId;

    // 商户API证书序列号
    private String mchSerialNo;

    // 商户私钥文件
    private String privateKeyPath;

    // APIv3密钥
    private String apiV3Key;

    // APPID
    private String appid;

    // 微信服务器地址
    private String domain;

    // 接收结果通知地址
    private String notifyDomain;

    // APIv2密钥
    private String partnerKey;

    /**
     * 获取商户的私钥文件
     * @param filename
     * @return
     */
    private PrivateKey getPrivateKey(String filename){

        try {
            return PemUtil.loadPrivateKey(new FileInputStream(filename));
        } catch (FileNotFoundException e) {
            throw new RuntimeException("私钥文件不存在", e);
        }
    }

    /**
     * 获取签名验证器
     * @return
     */
      @Bean
      public Verifier getVerifier() throws Exception {
        log.info("获取签名验证器");
        //获取商户私钥
        PrivateKey privateKey = getPrivateKey(privateKeyPath);
        // 私钥签名对象
        PrivateKeySigner keySigner = new PrivateKeySigner(mchSerialNo, privateKey);
        // 身份认证对象
        WechatPay2Credentials wechatPay2Credentials = new WechatPay2Credentials(mchId, keySigner);

        // 获取证书管理器实例
        CertificatesManager certificatesManager = CertificatesManager.getInstance();
        // 向证书管理器增加需要自动更新平台证书的商户信息
        certificatesManager.putMerchant(mchId, wechatPay2Credentials,
                apiV3Key.getBytes(StandardCharsets.UTF_8));
        // ... 若有多个商户号,可继续调用putMerchant添加商户信息
        Verifier verifier = certificatesManager.getVerifier(mchId);

        return verifier;
      }

    /**
     * 获取http请求对象
     * @param verifier
     * @return
     */
      @Bean
      public CloseableHttpClient getWxPayClient(Verifier verifier){

        log.info("获取httpclient");

        //获取商户私钥
        PrivateKey privateKey = getPrivateKey(privateKeyPath);
        // 从证书管理器中获取verifier
        WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
                .withMerchant(mchId, mchSerialNo, privateKey)
                .withValidator(new WechatPay2Validator(verifier));
        // ... 接下来,你仍然可以通过builder设置各种参数,来配置你的HttpClient

        // 通过WechatPayHttpClientBuilder构造的HttpClient,会自动的处理签名和验签,并进行证书自动更新
        CloseableHttpClient httpClient = builder.build();
        return httpClient;
      }

    /**
     * 获取HttpClient,无需进行应答签名验证,跳过验签的流程
     */
    @Bean(name = "wxPayNoSignClient")
    public CloseableHttpClient getWxPayNoSignClient(){

        //获取商户私钥
        PrivateKey privateKey = getPrivateKey(privateKeyPath);

        //用于构造HttpClient
        WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
                //设置商户信息
                .withMerchant(mchId, mchSerialNo, privateKey)
                //无需进行签名验证、通过withValidator((response) -> true)实现
                .withValidator((response) -> true);

        // 通过WechatPayHttpClientBuilder构造的HttpClient,会自动的处理签名和验签,并进行证书自动更新
        CloseableHttpClient httpClient = builder.build();

        log.info("== getWxPayNoSignClient END ==");
        return httpClient;
    }
}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
### 回答1: ojdbc6 11.2.0.4.0 版本是Oracle提供的一款用于Java开发的数据库驱动程序。如果需要使用Java程序连接Oracle数据库,就必须下载并安装该驱动程序。 一般情况下,Oracle官方提供ojdbc6 11.2.0.4.0版本的下载。首先,您需要登录Oracle官网,进入下载页面。在搜索框中输入“ojdbc6 11.2.0.4.0”,选择您需要下载的操作系统版本,然后点击下载按钮即可开始下载。 另外,在使用ojdbc6 11.2.0.4.0版本的过程中,需要注意版本对应关系。该版本对应的是Oracle数据库11g的版本,如果使用较新的数据库版本,需要使用相应的ojdbc驱动版本,否则可能会出现不兼容的问题。 总之,ojdbc6 11.2.0.4.0版本Java开发连接Oracle数据库的必备驱动程序之一,需要按照官方推荐的方式下载和安装。 ### 回答2: 要下载ojdbc6 11.2.0.4.0版本,可以根据以下步骤进行操作: 1. 打开Oracle官方网站(www.oracle.com)。 2. 在主页上方的导航栏中,选择"Downloads"(下载)。 3. 在下载页面中,选择"Oracle Database"(Oracle数据库)。 4. 在Oracle数据库页面中,找到"Oracle Database 11g Release 2"(Oracle数据库11g版本2)的选项,并点击进入。 5. 在Oracle Database 11g Release 2页面,向下滚动,找到"Oracle Database 11g Release 2 Client (11.2.0.4.0)"(Oracle数据库11g版本2客户端)的选项,并点击进入。 6. 在Oracle Database 11g Release 2 Client页面中,选择适用于您的操作系统的下载链接。 7. 在下载链接页面中,接受许可协议,并选择适用于ojdbc6 11.2.0.4.0版本的下载链接。 8. 开始下载安装文件,下载完成后双击安装文件进行安装。 9. 安装过程中根据提示进行操作,完成安装。 注意事项: - 确保您已经注册并拥有合法的Oracle账号,以便能够下载Oracle产品。 - 根据您的操作系统选择正确的下载链接,确保兼容性。 - 在安装过程中,可能需要提供一些必要的信息和配置选项,按照实际情况进行配置。 ojdbc6是用于Oracle数据库连接的JDBC驱动程序,版本11.2.0.4.0是该驱动程序的具体版本号。根据上述步骤进行下载和安装,您就可以获取到ojdbc6 11.2.0.4.0版本,并开始使用它来连接和操作Oracle数据库。 ### 回答3: 您可以在Oracle官方网站上下载ojdbc6 11.2.0.4.0版本。首先,您需要确保您有一个Oracle账号,并且已经登录到官方网站(https://www.oracle.com)。然后,按照以下步骤进行下载: 1. 在官方网站的主页上,您可以在页面最上方找到一个搜索框。在搜索框中输入"ojdbc6 11.2.0.4.0",然后点击搜索按钮。 2. 页面将会显示与您搜索相关的结果。在搜索结果中,找到标题为"ORACLE DATABASE 11G RELEASE 2 (11.2.0.4) FOR MICROSOFT WINDOWS"(适用于Microsoft Windows的Oracle数据库11G发布2 (11.2.0.4))的选项,并点击进入该选项的页面。 3. 在选项页面中,可以找到用于下载ojdbc6 11.2.0.4.0版本的安装程序的链接。通常情况下,安装程序会以压缩文件(如.zip或.tar.gz)的形式提供。点击该链接以开始下载。 4. 下载完成后,您可以解压缩安装程序,并按照其中的指示进行安装。在安装过程中,您可能需要提供一些必要的信息,如Oracle账号和安装目录等。 请注意,为了下载ojdbc6 11.2.0.4.0版本,您需要有一个有效的Oracle账号,并可能需要接受一些许可协议和条款。此外,根据您的操作系统和Java开发环境的要求,您可能需要一些额外的配置和设置。建议您在下载和安装之前阅读相关的文档和指南,以确保顺利完成安装过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值