Merge remote-tracking branch 'origin/master'

This commit is contained in:
longbinbin 2024-12-06 14:48:38 +08:00
commit 1304cf329e
3 changed files with 54 additions and 17 deletions

View File

@ -66,5 +66,11 @@ public class AppWxPayController {
BizCodeEnum.ADVANCE_PAYMENT_CALLBACK_REFUND_FAILED);
}
@ApiOperation(value = "微信关闭订单", notes = "微信关闭订单")
@PostMapping("/closeOrder")
@IgnoreToken
public ApiResponse<?> closeOrder(@RequestBody String orderId) {
wxPayService.closeOrder(orderId);
return ApiResponse.buildResult(BizCodeEnum.REQUEST_OK);
}
}

View File

@ -76,14 +76,7 @@ public class WxPayServiceImpl implements WxPayService {
public WxPayRespVO createOrder(WXPayOrderReqVO req) {
try {
// 使用自动更新平台证书的RSA配置
// 一个商户号只能初始化一个配置否则会因为重复的下载任务报错
Config config =
new RSAAutoCertificateConfig.Builder()
.merchantId(wechatConfig.getMchId())
.privateKeyFromPath(wechatConfig.getKeyPath())
.merchantSerialNumber(wechatConfig.getMchSerialNo())
.apiV3Key(wechatConfig.getApiV3())
.build();
Config config = getInstance(wechatConfig);
// 构建service
JsapiService service = new JsapiService.Builder().config(config).build();
@ -184,14 +177,7 @@ public class WxPayServiceImpl implements WxPayService {
QueryOrderByOutTradeNoRequest queryRequest = new QueryOrderByOutTradeNoRequest();
queryRequest.setMchid(wechatConfig.getMchId());
queryRequest.setOutTradeNo(orderId.toString());
// 一个商户号只能初始化一个配置否则会因为重复的下载任务报错
Config config =
new RSAAutoCertificateConfig.Builder()
.merchantId(wechatConfig.getMchId())
.privateKeyFromPath(wechatConfig.getKeyPath())
.merchantSerialNumber(wechatConfig.getMchSerialNo())
.apiV3Key(wechatConfig.getApiV3())
.build();
Config config = getInstance(wechatConfig);
// 构建service
JsapiService service = new JsapiService.Builder().config(config).build();
try {
@ -275,6 +261,17 @@ public class WxPayServiceImpl implements WxPayService {
}
}
@Override
public void closeOrder(String orderId) {
CloseOrderRequest closeOrderRequest = new CloseOrderRequest();
closeOrderRequest.setOutTradeNo(orderId);
closeOrderRequest.setMchid(wechatConfig.getMchId());
Config config = getInstance(wechatConfig);
// 构建service
JsapiService service = new JsapiService.Builder().config(config).build();
service.closeOrder(closeOrderRequest);
}
/**
* 退款回调 解密数据
@ -368,4 +365,31 @@ public class WxPayServiceImpl implements WxPayService {
return REFUNDS_SCHEMA + token;
}
/**
* 一个商户号只能初始化一个配置否则会因为重复的下载任务报错
*/
private static class Holder {
private static volatile Config instance;
static void init(WechatConfig wechatConfig) {
instance = new RSAAutoCertificateConfig.Builder()
.merchantId(wechatConfig.getMchId())
.privateKeyFromPath(wechatConfig.getKeyPath())
.merchantSerialNumber(wechatConfig.getMchSerialNo())
.apiV3Key(wechatConfig.getApiV3())
.build();
}
}
public static Config getInstance(WechatConfig wechatConfig) {
if (Holder.instance == null) {
synchronized (Holder.class) {
if (Holder.instance == null) {
Holder.init(wechatConfig);
}
}
}
return Holder.instance;
}
}

View File

@ -38,4 +38,11 @@ public interface WxPayService {
* 微信退款回调
*/
boolean refundNotify(String refundResult) throws IOException, GeneralSecurityException;
/**
* 关闭订单
*
* @param orderId 订单id订单编号
*/
void closeOrder(String orderId) ;
}