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));
|
}
|
|
/**
|
* 获取openId
|
*
|
* @param code
|
* @return
|
*/
|
@PostMapping("getOpenId")
|
public R getOpenId(String code) {
|
return R.data(wxPayService.getOpenId(code));
|
}
|
|
|
/**
|
* jsapi下单
|
*
|
* @param properChargeRecordId
|
* @return
|
* @throws Exception
|
*/
|
@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);
|
}
|
|
|
}
|