持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情
每日英语:
For every minute you are angry you lose sixty seconds of happiness.
翻译:你每生气一分钟,也就失去了六十秒的幸福。 ——爱默生
SDK身份信息初始化
我们将秘钥、商户ID、证书等信息导入到程序中,修改mall-pay-service配置文件,并创建WeixinPayConfig加载配置文件中的秘钥、商户ID、证书等 信息。
bootstrap.yml添加如下配置:
#支付配置
payconfig:
weixin:
#应用ID
appId: wx9f1fa58451efa9b2
#商户ID号
mchID: 157请自行申请561
#秘钥
key: QS8rrOI出于安全考虑,请自行申请TQCfI1
#默认回调地址
notifyUrl: http://2cw4969042.wicp.vip:50381/wx/result
#证书存储路径
certPath: G:/xz/shop/xz-mall/mall-service/mall-pay-service/src/main/resources/apiclient_cert.p12
#支付安全校验(验签)
aes:
#AES加密秘钥
skey: ab2cc473d3334c39
#验签盐
salt: XPYQZb1kMES8HNaJWW8+TDu/4JdBK4owsU9eXCXZDOI=
创建com.xz.mall.pay.config.WeixinPayConfig加载微信支付配置信息:
@Component
public class WeixinPayConfig extends WXPayConfig {
//微信支付信息
@Value("${payconfig.weixin.appId}")
private String appId; //应用ID
@Value("${payconfig.weixin.mchID}")
private String mchID; //商户号
@Value("${payconfig.weixin.key}")
private String key; //秘钥
@Value("${payconfig.weixin.notifyUrl}")
private String notifyUrl; //回调地址
@Value("${payconfig.weixin.certPath}")
private String certPath; //证书路径
//证书字节数组
private byte[] certData;
@Override
public String getAppID() {
return this.appId;
}
@Override
public String getMchID() {
return this.mchID;
}
@Override
public String getKey() {
return this.key;
}
/***
* 获取商户证书内容
* @return
*/
@Override
public InputStream getCertStream() {
/****
* 加载证书
*/
if(certData==null){
synchronized (WeixinPayConfig.class){
try {
if(certData==null) {
File file = new File(certPath);
InputStream certStream = new FileInputStream(file);
this.certData = new byte[(int) file.length()];
certStream.read(this.certData);
certStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);
return certBis;
}
/***
* 获取WXPayDomain, 用于多域名容灾自动切换
* @return
*/
@Override
public IWXPayDomain getWXPayDomain() {
// 这个方法需要这样实现, 否则无法正常初始化WXPay
IWXPayDomain iwxPayDomain = new IWXPayDomain() {
@Override
public void report(String domain, long elapsedTimeMillis, Exception ex) {
}
@Override
public DomainInfo getDomain(WXPayConfig config) {
return new IWXPayDomain.DomainInfo(WXPayConstants.DOMAIN_API, true);
}
};
return iwxPayDomain;
}
}
此时我们可以开始使用微信支付了。
总结
本篇主要讲述了一下使用微信扫码支付前,对微信扫码支付SDK身份信息初始化时前的一些准备,比如需要修改对应的支付配置信息,修改java代码中对应加载微信支付配置信息。