application.xml配置
# 微信配置
wechat:
#appId
appId: wx...
#appSecret
appSecret: 5d0c...
#商户号
merchantId: 168...
# 私钥路径
privateKeyPath: H:\work\...\apiclient_key.pem
# 商户号证书序列号
merchantSerialNumber: 601B...
# 商户apiV3秘钥
apiV3key: 888888...
#支付回调
notifyUrl: https://..../wechatPayCallback
登录微信支付商户平台
商户号这里找↓
然后申请api证书和设置apiv3秘钥,照着步骤来即可
一定要先申请证书再设置秘钥!一定要先申请证书再设置秘钥!一定要先申请证书再设置秘钥!
申请证书后本地生成一个压缩文件,解压后找个地方放,私钥路径是apiclient_key.pem的路径
点击管理证书,复制证书序列号
添加支付授权目录,必须是外网能访问的域名
如果路径是/smallapp/pay/wechatPayCallback,写到/smallapp/pay就可以了
引入sdk
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-java</artifactId>
<version>0.2.12</version>
</dependency>
新建WechatPayService.java
@Slf4j
@Component
public class WechatPayService {
}
私有化下列属性,给个@Getter方便外部调用
@Getter
private Config config;
@Getter
private JsapiServiceExtension jsapiServiceExtension;
@Getter
@Value("${wechat.appId}")
private String appId;
@Getter
@Value("${wechat.merchantId}")
private String merchantId;
@Getter
@Value("${wechat.privateKeyPath}")
private String privateKeyPath;
@Getter
@Value("${wechat.merchantSerialNumber}")
private String merchantSerialNumber;
@Getter
@Value("${wechat.apiV3key}")
private String apiV3key;
@Getter
@Value("${wechat.notifyUrl}")
private String notifyUrl;
初始化config和jsapiServiceExtension
@PostConstruct
private void init(){
config = new RSAAutoCertificateConfig.Builder()
.merchantId(merchantId)
.privateKeyFromPath(privateKeyPath)
.merchantSerialNumber(merchantSerialNumber)
.apiV3Key(apiV3key)
.build()