使用IJPay接入微信支付:IJPay
1、maven依赖:
官网有一次性导入全部依赖;但这里只接入微信支付;所以只导入微信支付的依赖
<!-- IJPay 微信支付-->
<dependency>
<groupId>com.github.javen205</groupId>
<artifactId>IJPay-WxPay</artifactId>
<version>2.7.6</version>
</dependency>
官方有demo示例可自行查找查看
微信支付官方文档:统一下单
2、统一下单:
工具方法:
/**
* 获取证书序列号
*
* @return
*/
private String getSerialNumber() {
if (StrUtil.isEmpty(serialNo)) {
// 获取证书序列号
X509Certificate certificate = PayKit.getCertificate(FileUtil.getInputStream(wxPayParameterConfig.getPrivateCertPath()));
serialNo = certificate.getSerialNumber().toString(16).toUpperCase();
}
return serialNo;
}
UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel()
.setAppid(weChatAppletsConfig.getAppId())//小程序appid
.setMchid(wxPayParameterConfig.getMchId())//直连商户的商户号
.setDescription("客户备注:" + description)//商品描述
.setOut_trade_no(orderNo)//内部订单号(自己生成的string[6,32])
.setNotify_url(wxPayParameterConfig.getNotifyUrl())// 支付完成通知地址
.setAmount(new Amount().setTotal(totalFee))// 订单总金额,单位为分
.setPayer(new Payer().setOpenid(min.getOpenidmin()));//用户openid
log.info("统一下单参数 {}", JSONUtil.toJsonStr(unifiedOrderModel));
//请求下单
IJPayHttpResponse response = WxPayApi.v3(
RequestMethod.POST,
WxDomain.CHINA.toString(),
WxApiType.JS_API_PAY.toString(),
wxPayParameterConfig.getMchId(),// 商户号
getSerialNumber(),// 获取证书序列号
null,
wxPayParameterConfig.getPrivateKeyPath(),// 私钥
JSONUtil.toJsonStr(unifiedOrderModel)// 请求参数
);
log.info("统一下单响应 {}", response);
if (response.getStatus() == 200) {
// 根据证书序列号查询对应的证书来验证签名结果
boolean verifySignature = WxPayKit.verifySignature(response, wxPayParameterConfig.getCertPath());//平台证书
log.info("verifySignature: {}", verifySignature);
if (verifySignature) {
String body = response.getBody();
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(body);
String prepayId = jsonObject.getStr("prepay_id");
Map<String, String> map = WxPayKit.jsApiCreateSign(weChatAppletsConfig.getAppId(), prepayId, wxPayParameterConfig.getPrivateKeyPath());// 私钥
log.info("唤起支付参数:{}", map);
// 将参数返回给前端
return AjaxResult.success(map);
}
}
小程序根据返回的参数就能唤起小程序支付
微信官方文档:小程序调起支付API