package org.springblade.modules.pay.controller; import com.google.gson.Gson; import io.swagger.annotations.Api; 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.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.Map; @CrossOrigin //跨域 @RestController @RequestMapping("/wxPay") @Api(tags = "网站微信支付APIv3") @Slf4j public class WxPayController { @Resource private IWxPayService wxPayService; @PostMapping("/save") public R save(@RequestBody WxPayInfo wxPayInfo) { return R.status(wxPayService.save(wxPayInfo)); } @PostMapping("/update") public R update(@RequestBody WxPayInfo wxPayInfo) { return R.status(wxPayService.updateById(wxPayInfo)); } @PostMapping("saveOrUpdate") public R saveOrUpdate(@RequestBody WxPayInfo wxPayInfo) { return R.status(wxPayService.saveOrUpdate(wxPayInfo)); } /** * jsapi下单 * * @param properChargeRecordId * @return * @throws Exception */ @ApiOperation("调用jsapi统一下单API") @GetMapping("/jsapiPay") public R jsapiPay(@RequestParam("properChargeRecordId") Long properChargeRecordId) throws Exception { log.info("发起支付请求 v3"); //返回支付二维码连接和订单号 Map 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); } }