首先看下官方的接口文档:
需要证书:资金发生变化需要证书。支付接口不需要。点击证书使用。
按照不步骤:下载证书。
(2)使用API证书
- ◆ apiclient_cert.p12是商户证书文件,除PHP外的开发均使用此证书文件。
- ◆ 商户如果使用.NET环境开发,请确认Framework版本大于2.0,必须在操作系统上双击安装证书apiclient_cert.p12后才能被正常调用。
- ◆ API证书调用或安装需要使用到密码,该密码的值为微信商户号(mch_id)
(3)API证书安全
1.证书文件不能放在web服务器虚拟目录,应放在有访问权限控制的目录中,防止被他人下载;
2.建议将证书文件名改为复杂且不容易猜测的文件名;
3.商户服务器要做好病毒和木马防护工作,不被非法侵入者窃取证书文件。
4、商户回调API安全
在普通的网络环境下,HTTP请求存在DNS劫持、运营商插入广告、数据被窃取,正常数据被修改等安全风险。商户回调接口使用HTTPS协议可以保证数据传输的安全性。所以微信支付建议商户提供给微信支付的各种回调采用HTTPS协议。请参考:HTTPS搭建指南。
以上文档只是说了,windows环境怎么用,但是linux没有说。
linux下只要将文档放到指定目录可以了,不需要安装证书。
public class WXConfigUtil implements WXPayConfig {
private static final Logger logger = LoggerFactory.getLogger(WXConfigUtil.class);
@Autowired
private SystemConfig systemConfig;
private byte[] certData;
private String payType;
@Override
public String getAppID() {
if("APP".equals(getPayType())){
return systemConfig.getAppId();
}else{
return systemConfig.getGzhAppId();
}
}
//parnerid,商户号
@Override
public String getMchID() {
return systemConfig.getMchId();
}
@Override
public String getKey() {
boolean useSandbox = systemConfig.isUseSandbox();
if(useSandbox){
return getSandboxSignKey();
}
return systemConfig.getAppKey();
}
@Override
public InputStream getCertStream() {
ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);
return certBis;
}
private WXConfigUtil(SystemConfig systemConfig) throws Exception{
File file = new File(systemConfig.getCerPath());
InputStream certStream = new FileInputStream(file);
this.certData = new byte[(int) file.length()];
certStream.read(this.certData);
certStream.close();
}
加载有参构造的时候把证书加载一下即可。