linwe
2024-05-29 c10d6358b9f014375a13821465bc978d0c0da22e
src/main/java/org/springblade/modules/pay/controller/WxPayController.java
@@ -1,25 +1,32 @@
package org.springblade.modules.pay.controller;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.constant.WxPayConstants;
import com.google.gson.Gson;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.utils.HttpUtils;
import org.springblade.common.utils.WechatPay2ValidatorForRequest;
import org.springblade.core.tool.api.R;
import org.springblade.modules.pay.entity.WxPayInfo;
import org.springblade.modules.pay.service.IWxPayService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
@CrossOrigin //跨域
@RestController
@AllArgsConstructor
@RequestMapping("/wxpay")
@Api(value = "微信支付接口", tags = "微信支付接口")
public class WxPayController extends BladeController {
@RequestMapping("/wxPay")
@Api(tags = "网站微信支付APIv3")
@Slf4j
public class WxPayController {
   @Resource
   private IWxPayService wxPayService;
   @PostMapping("/save")
   public R save(@RequestBody WxPayInfo wxPayInfo) {
@@ -36,14 +43,110 @@
      return R.status(wxPayService.saveOrUpdate(wxPayInfo));
   }
   /**
    * 获取openId
    * @param code
    * jsapi下单
    *
    * @param properChargeRecordId
    * @return
    * @throws Exception
    */
   @PostMapping("getOpenId")
   public R getOpenId(String code){
       return R.data(wxPayService.getOpenId(code));
   @ApiOperation("调用jsapi统一下单API")
   @GetMapping("/jsapiPay")
   public R jsapiPay(@RequestParam("properChargeRecordId") Long properChargeRecordId) throws Exception {
      log.info("发起支付请求 v3");
      //返回支付二维码连接和订单号
      Map<String, String> map = wxPayService.jsapiPay(properChargeRecordId);
      return R.data(map);
   }
   /**
    * 支付通知
    * 微信支付通过支付通知接口将用户支付成功消息通知给商户
    */
   @ApiOperation("支付通知")
   @PostMapping("/native/notify")
   public String nativeNotify(HttpServletRequest request, HttpServletResponse response) {
      return wxPayService.nativeNotify(request, response);
   }
   /**
    * 用户取消订单
    *
    * @param orderNo
    * @return
    * @throws Exception
    */
   @ApiOperation("用户取消订单")
   @PostMapping("/cancel/{orderNo}")
   public R cancel(@PathVariable String orderNo) throws Exception {
      log.info("取消订单");
      wxPayService.cancelOrder(orderNo);
      return R.data("订单已取消");
   }
   /**
    * 查询订单
    *
    * @param orderNo
    * @return
    * @throws Exception
    */
   @ApiOperation("查询订单")
   @GetMapping("/query/{orderNo}")
   public R queryOrder(@PathVariable String orderNo) throws Exception {
      log.info("查询订单");
      String result = wxPayService.queryOrder(orderNo);
      return R.data("result", result);
   }
   @ApiOperation("申请退款")
   @PostMapping("/refunds/{orderNo}/{reason}")
   public R refunds(@PathVariable String orderNo, @PathVariable String reason) throws Exception {
      log.info("申请退款");
      wxPayService.refund(orderNo, reason);
      return R.success("退款申请成功");
   }
   /**
    * 查询退款
    *
    * @param refundNo
    * @return
    * @throws Exception
    */
   @ApiOperation("查询退款")
   @GetMapping("/query-refund/{refundNo}")
   public R queryRefund(@PathVariable String refundNo) throws Exception {
      log.info("查询退款");
      String result = wxPayService.queryRefund(refundNo);
      return R.data("result", result);
   }
   /**
    * 退款结果通知
    * 退款状态改变后,微信会把相关退款结果发送给商户。
    */
   @ApiOperation("退款结果通知")
   @PostMapping("/refunds/notify")
   public String refundsNotify(HttpServletRequest request, HttpServletResponse response) {
      log.info("退款通知执行");
      return wxPayService.refundsNotify(request, response);
   }
}