记录spring cloud fein编写微信支付client相关

本文详细记录了在Spring Cloud Feign中配置微信支付客户端时遇到的挑战,包括如何设置双向认证证书、处理XML通信、解决签名失败等问题。通过自定义Feign配置、编写自定义编码器和解码器,成功实现了与微信支付接口的XML数据交互,并修复了签名错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录下遇到的问题和几个关键的点

背景:

cloud版本Dalston.SR5

feign client的注解用的是@RequestMapping的形式

微信那边的接口是使用XML通信的, Request和response都是XML, 接口参数需签名, 部分接口需要双向认证.

遇到的问题:

1. 如何在feign里设置双向认证证书

2. 若使用Bean发送或接收参数, 会自动使用application/json的方式处理数据

3. 使用bean作为发送参数后签名失败

问题解决:

1. 如何在feign里设置双向认证证书?

自定义feign的configuration, 然后@Bean覆盖Client. 在新的构造里添加双向认证.

    @Bean
    public Client feignClient() {

        return new Client.Default(
                TrustingSSLSocketFactory.get("MMPayCert"),
                new NoopHostnameVerifier());
    }

TrustingSSLSocketFactory类参考自

https://github.com/OpenFeign/feign/blob/master/core/src/test/java/feign/client/TrustingSSLSocketFactory.java

因为一开始不知道微信支付的证书key是MMPayCert, 对SSLContext的构造部分代码做了改动, 使构造时载入加载p12文件的KeyStore类, 并在SSLContext成功构建后打断点查看内部属性, 找到对应的key. 改动后的类初始化代码:

private TrustingSSLSocketFactory(String s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值