2
0

feat: payment fix to startup

This commit is contained in:
zhangsz
2024-12-26 17:51:09 +08:00
parent 136e79d519
commit a5acd67571
5 changed files with 124 additions and 104 deletions

View File

@@ -90,17 +90,27 @@
</dependency>
<!-- Swagger 依赖项 -->
<dependency>
<!-- <dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency> -->
<!-- <dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
<version>3.0.0</version>
</dependency> -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.14</version>
</dependency>
</dependencies>
<build>

View File

@@ -1,26 +1,21 @@
package org.wfc.payment.wxpay.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.util.StopWatch;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import static springfox.documentation.builders.PathSelectors.regex;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.GroupedOpenApi;
@Configuration
@EnableSwagger2
@Slf4j
public class SwaggerConfig extends WebMvcConfigurationSupport implements EnvironmentAware {
@Autowired
private Environment environment;
@Override
@@ -38,29 +33,57 @@ public class SwaggerConfig extends WebMvcConfigurationSupport implements Environ
super.addResourceHandlers(registry);
}
// @Bean
// public Docket docket() {
// //最重要的就是这里,定义了/test/.*开头的rest接口都分在了test分组里可以通过/v2/api-docs?group=test得到定义的json
// log.info("Starting Swagger");
// StopWatch watch = new StopWatch();
// watch.start();
// Docket docket = new Docket(DocumentationType.SWAGGER_2)
// .groupName("pay")
// .apiInfo(this.apiInfo())
// .select()
// .apis(RequestHandlerSelectors.any())
// .paths(regex("/payment/wxpay/.*"))
// .build();
// watch.stop();
// log.info("Started Swagger in {} ms", watch.getTotalTimeMillis());
// return docket;
// }
// @Bean
// public Docket api() {
// return new Docket(DocumentationType.SWAGGER_2)
// .select()
// .apis(RequestHandlerSelectors.any())
// .paths(PathSelectors.any())
// .build()
// .apiInfo(apiInfo());
// }
// private ApiInfo apiInfo() {
// return new ApiInfoBuilder()
// .title("WeChat Pay API")
// .description("WeChat Pay API for Java")
// .version("1.0.0")
// .build();
// }
@Bean
public Docket docket() {
//最重要的就是这里,定义了/test/.*开头的rest接口都分在了test分组里可以通过/v2/api-docs?group=test得到定义的json
log.info("Starting Swagger");
StopWatch watch = new StopWatch();
watch.start();
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.groupName("pay")
.apiInfo(this.apiInfo())
.select()
.apis(RequestHandlerSelectors.any())
.paths(regex("/payment/wxpay/.*"))
.build();
watch.stop();
log.info("Started Swagger in {} ms", watch.getTotalTimeMillis());
return docket;
public GroupedOpenApi publicApi() {
return GroupedOpenApi.builder()
.group("public")
.pathsToMatch("/api/payment/**")
.packagesToScan("org.wfc.payment.wxpay.controller")
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("WeChat Pay API")
.description("WeChat Pay API for Java")
.version("1.0.0")
.build();
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info()
.title("WeChat Pay API")
.version("1.0.0")
.description("WeChat Pay API for Java"));
}
}

View File

@@ -9,20 +9,24 @@ import com.github.binarywang.wxpay.bean.request.*;
import com.github.binarywang.wxpay.bean.result.*;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springdoc.api.annotations.ParameterObject;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.util.Date;
@Api("WeChat Pay")
@Tag(name = "WeChat Pay")
@RestController
@RequestMapping("/payment/wxpay")
@AllArgsConstructor
public class WxPayController {
@Autowired
private WxPayService wxService;
/**
@@ -40,7 +44,7 @@ public class WxPayController {
* @param transactionId 微信订单号
* @param outTradeNo 商户系统内部的订单号当没提供transactionId时需要传这个。
*/
@ApiOperation(value = "Query order")
@Operation(summary = "Query order")
@GetMapping("/queryOrder")
public WxPayOrderQueryResult queryOrder(@RequestParam(required = false) String transactionId,
@RequestParam(required = false) String outTradeNo)
@@ -48,7 +52,7 @@ public class WxPayController {
return this.wxService.queryOrder(transactionId, outTradeNo);
}
@ApiOperation(value = "Query order")
@Operation(summary = "Query order")
@PostMapping("/queryOrder")
public WxPayOrderQueryResult queryOrder(@RequestBody WxPayOrderQueryRequest wxPayOrderQueryRequest) throws WxPayException {
return this.wxService.queryOrder(wxPayOrderQueryRequest);
@@ -68,13 +72,13 @@ public class WxPayController {
*
* @param outTradeNo 商户系统内部的订单号
*/
@ApiOperation(value = "Close order")
@Operation(summary = "Close order")
@GetMapping("/closeOrder/{outTradeNo}")
public WxPayOrderCloseResult closeOrder(@PathVariable String outTradeNo) throws WxPayException {
return this.wxService.closeOrder(outTradeNo);
}
@ApiOperation(value = "Close order")
@Operation(summary = "Close order")
@PostMapping("/closeOrder")
public WxPayOrderCloseResult closeOrder(@RequestBody WxPayOrderCloseRequest wxPayOrderCloseRequest) throws WxPayException {
return this.wxService.closeOrder(wxPayOrderCloseRequest);
@@ -87,7 +91,7 @@ public class WxPayController {
* @param <T> 请使用{@link com.github.binarywang.wxpay.bean.order}包下的类
* @return 返回 {@link com.github.binarywang.wxpay.bean.order}包下的类对象
*/
@ApiOperation(value = "统一下单,并组装所需支付参数")
@Operation(summary = "统一下单,并组装所需支付参数")
@PostMapping("/createOrder")
public <T> T createOrder(@RequestBody WxPayUnifiedOrderRequest request) throws WxPayException {
return this.wxService.createOrder(request);
@@ -100,7 +104,7 @@ public class WxPayController {
*
* @param request 请求对象注意一些参数如appid、mchid等不用设置方法内会自动从配置对象中获取到前提是对应配置中已经设置
*/
@ApiOperation(value = "原生的统一下单接口")
@Operation(summary = "原生的统一下单接口")
@PostMapping("/unifiedOrder")
public WxPayUnifiedOrderResult unifiedOrder(@RequestBody WxPayUnifiedOrderRequest request) throws WxPayException {
return this.wxService.unifiedOrder(request);
@@ -116,7 +120,7 @@ public class WxPayController {
* @param request 请求对象
* @return 退款操作结果
*/
@ApiOperation(value = "Refund")
@Operation(summary = "Refund")
@PostMapping("/refund")
public WxPayRefundResult refund(@RequestBody WxPayRefundRequest request) throws WxPayException {
return this.wxService.refund(request);
@@ -139,7 +143,7 @@ public class WxPayController {
* @param refundId 微信退款单号
* @return 退款信息
*/
@ApiOperation(value = "退款查询")
@Operation(summary = "退款查询")
@GetMapping("/refundQuery")
public WxPayRefundQueryResult refundQuery(@RequestParam(required = false) String transactionId,
@RequestParam(required = false) String outTradeNo,
@@ -149,13 +153,13 @@ public class WxPayController {
return this.wxService.refundQuery(transactionId, outTradeNo, outRefundNo, refundId);
}
@ApiOperation(value = "退款查询")
@Operation(summary = "退款查询")
@PostMapping("/refundQuery")
public WxPayRefundQueryResult refundQuery(@RequestBody WxPayRefundQueryRequest wxPayRefundQueryRequest) throws WxPayException {
return this.wxService.refundQuery(wxPayRefundQueryRequest);
}
@ApiOperation(value = "支付回调通知处理")
@Operation(summary = "支付回调通知处理")
@PostMapping("/notify/order")
public String parseOrderNotifyResult(@RequestBody String xmlData) throws WxPayException {
final WxPayOrderNotifyResult notifyResult = this.wxService.parseOrderNotifyResult(xmlData);
@@ -163,7 +167,7 @@ public class WxPayController {
return WxPayNotifyResponse.success("成功");
}
@ApiOperation(value = "退款回调通知处理")
@Operation(summary = "退款回调通知处理")
@PostMapping("/notify/refund")
public String parseRefundNotifyResult(@RequestBody String xmlData) throws WxPayException {
final WxPayRefundNotifyResult result = this.wxService.parseRefundNotifyResult(xmlData);
@@ -171,7 +175,7 @@ public class WxPayController {
return WxPayNotifyResponse.success("成功");
}
@ApiOperation(value = "扫码支付回调通知处理")
@Operation(summary = "扫码支付回调通知处理")
@PostMapping("/notify/scanpay")
public String parseScanPayNotifyResult(String xmlData) throws WxPayException {
final WxScanPayNotifyResult result = this.wxService.parseScanPayNotifyResult(xmlData);
@@ -191,7 +195,7 @@ public class WxPayController {
*
* @param request 请求对象
*/
@ApiOperation(value = "发送红包")
@Operation(summary = "发送红包")
@PostMapping("/sendRedpack")
public WxPaySendRedpackResult sendRedpack(@RequestBody WxPaySendRedpackRequest request) throws WxPayException {
return this.wxService.getRedpackService().sendRedpack(request);
@@ -208,7 +212,7 @@ public class WxPayController {
*
* @param mchBillNo 商户发放红包的商户订单号比如10000098201411111234567890
*/
@ApiOperation(value = "查询红包")
@Operation(summary = "查询红包")
@GetMapping("/queryRedpack/{mchBillNo}")
public WxPayRedpackQueryResult queryRedpack(@PathVariable String mchBillNo) throws WxPayException {
return this.wxService.getRedpackService().queryRedpack(mchBillNo);
@@ -276,7 +280,7 @@ public class WxPayController {
* 是否需要证书:不需要
* </pre>
*/
@ApiOperation(value = "提交交易保障数据")
@Operation(summary = "提交交易保障数据")
@PostMapping("/report")
public void report(@RequestBody WxPayReportRequest request) throws WxPayException {
this.wxService.report(request);
@@ -301,14 +305,14 @@ public class WxPayController {
* @param deviceInfo 设备号 device_info 非必传参数,终端设备号
* @return 保存到本地的临时文件
*/
@ApiOperation(value = "下载对账单")
@Operation(summary = "下载对账单")
@GetMapping("/downloadBill/{billDate}/{billType}/{tarType}/{deviceInfo}")
public WxPayBillResult downloadBill(@PathVariable String billDate, @PathVariable String billType,
@PathVariable String tarType, @PathVariable String deviceInfo) throws WxPayException {
return this.wxService.downloadBill(billDate, billType, tarType, deviceInfo);
}
@ApiOperation(value = "下载对账单")
@Operation(summary = "下载对账单")
@PostMapping("/downloadBill")
public WxPayBillResult downloadBill(WxPayDownloadBillRequest wxPayDownloadBillRequest) throws WxPayException {
return this.wxService.downloadBill(wxPayDownloadBillRequest);
@@ -326,7 +330,7 @@ public class WxPayController {
* 是否需要证书:不需要。
* </pre>
*/
@ApiOperation(value = "提交刷卡支付")
@Operation(summary = "提交刷卡支付")
@PostMapping("/micropay")
public WxPayMicropayResult micropay(@RequestBody WxPayMicropayRequest request) throws WxPayException {
return this.wxService.micropay(request);
@@ -344,37 +348,37 @@ public class WxPayController {
* 是否需要证书:请求需要双向证书。
* </pre>
*/
@ApiOperation(value = "撤销订单")
@Operation(summary = "撤销订单")
@PostMapping("/reverseOrder")
public WxPayOrderReverseResult reverseOrder(@RequestBody WxPayOrderReverseRequest request) throws WxPayException {
return this.wxService.reverseOrder(request);
}
@ApiOperation(value = "获取沙箱环境签名key")
@Operation(summary = "获取沙箱环境签名key")
@GetMapping("/getSandboxSignKey")
public String getSandboxSignKey() throws WxPayException {
return this.wxService.getSandboxSignKey();
}
@ApiOperation(value = "发放代金券")
@Operation(summary = "发放代金券")
@PostMapping("/sendCoupon")
public WxPayCouponSendResult sendCoupon(@RequestBody WxPayCouponSendRequest request) throws WxPayException {
return this.wxService.sendCoupon(request);
}
@ApiOperation(value = "查询代金券批次")
@Operation(summary = "查询代金券批次")
@PostMapping("/queryCouponStock")
public WxPayCouponStockQueryResult queryCouponStock(@RequestBody WxPayCouponStockQueryRequest request) throws WxPayException {
return this.wxService.queryCouponStock(request);
}
@ApiOperation(value = "查询代金券信息")
@Operation(summary = "查询代金券信息")
@PostMapping("/queryCouponInfo")
public WxPayCouponInfoQueryResult queryCouponInfo(@RequestBody WxPayCouponInfoQueryRequest request) throws WxPayException {
return this.wxService.queryCouponInfo(request);
}
@ApiOperation(value = "拉取订单评价数据")
@Operation(summary = "拉取订单评价数据")
@PostMapping("/queryComment")
public String queryComment(Date beginDate, Date endDate, Integer offset, Integer limit) throws WxPayException {
return this.wxService.queryComment(beginDate, endDate, offset, limit);