117 lines
3.7 KiB
Java
117 lines
3.7 KiB
Java
package com.ai.da.controller;
|
||
|
||
import com.ai.da.common.response.Response;
|
||
import com.ai.da.model.dto.ProductPurchaseDTO;
|
||
import com.ai.da.service.AliPayService;
|
||
import io.swagger.annotations.Api;
|
||
import io.swagger.annotations.ApiOperation;
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import org.springframework.web.bind.annotation.*;
|
||
|
||
import javax.annotation.Resource;
|
||
import javax.servlet.http.HttpServletRequest;
|
||
import javax.validation.Valid;
|
||
import java.util.Map;
|
||
|
||
@CrossOrigin
|
||
@RestController
|
||
@RequestMapping("/api/ali-pay")
|
||
@Api(tags = "网站支付宝支付")
|
||
@Slf4j
|
||
public class AliPayController {
|
||
|
||
@Resource
|
||
private AliPayService aliPayService;
|
||
|
||
@ApiOperation("统一收单下单并支付页面接口的调用")
|
||
@PostMapping("/trade/page/pay")
|
||
public Response<String> tradePagePay(@Valid @RequestBody ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request){
|
||
log.info("统一收单下单并支付页面接口的调用");
|
||
//支付宝开放平台接受 request 请求对象后
|
||
// 会为开发者生成一个html 形式的 form表单,包含自动提交的脚本
|
||
String formStr = aliPayService.tradeCreate(productPurchaseDTO, request);
|
||
//我们将form表单字符串返回给前端程序,之后前端将会调用自动提交脚本,进行表单的提交
|
||
//此时,表单会自动提交到action属性所指向的支付宝开放平台中,从而为用户展示一个支付页面
|
||
return Response.success(formStr);
|
||
}
|
||
|
||
@ApiOperation("支付通知")
|
||
@PostMapping("/trade/notify")
|
||
public String tradeNotify(@RequestParam Map<String, String> params){
|
||
return aliPayService.tradeNotify(params);
|
||
}
|
||
|
||
/**
|
||
* 用户取消订单
|
||
* @param orderNo
|
||
* @return
|
||
*/
|
||
@ApiOperation("用户取消订单")
|
||
@PostMapping("/trade/close/{orderNo}")
|
||
public Response<String> cancel(@PathVariable String orderNo){
|
||
log.info("取消订单");
|
||
aliPayService.cancelOrder(orderNo);
|
||
return Response.success("订单已取消");
|
||
}
|
||
|
||
/**
|
||
* 查询订单
|
||
* @param orderNo
|
||
* @return
|
||
*/
|
||
@ApiOperation("查询订单:测试订单状态用")
|
||
@GetMapping("/trade/query/{orderNo}")
|
||
public Response<String> queryOrder(@PathVariable String orderNo) {
|
||
log.info("查询订单");
|
||
String result = aliPayService.queryOrder(orderNo);
|
||
return Response.success(result);
|
||
|
||
}
|
||
|
||
/**
|
||
* 不在页面提供申请退款接口
|
||
* @param orderNo
|
||
* @param reason
|
||
* @return
|
||
*/
|
||
@ApiOperation("申请退款")
|
||
@PostMapping("/trade/refund/{orderNo}/{reason}")
|
||
public Response<String> refunds(@PathVariable String orderNo, @PathVariable String reason){
|
||
log.info("申请退款");
|
||
aliPayService.refund(orderNo, reason);
|
||
return Response.success();
|
||
}
|
||
|
||
/**
|
||
* 查询退款
|
||
* @param orderNo
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
@ApiOperation("查询退款:测试用")
|
||
@GetMapping("/trade/fastpay/refund/{orderNo}")
|
||
public Response<String> queryRefund(@PathVariable String orderNo) {
|
||
log.info("查询退款");
|
||
String result = aliPayService.queryRefund(orderNo);
|
||
return Response.success(result);
|
||
}
|
||
|
||
/**
|
||
* 根据账单类型和日期获取账单url地址
|
||
*
|
||
* @param billDate
|
||
* @param type
|
||
* @return
|
||
*/
|
||
@ApiOperation("获取账单url")
|
||
@GetMapping("/bill/downloadurl/query/{billDate}/{type}")
|
||
public Response<String> queryTradeBill(
|
||
@PathVariable String billDate,
|
||
@PathVariable String type) {
|
||
log.info("获取账单url");
|
||
String downloadUrl = aliPayService.queryBill(billDate, type);
|
||
return Response.success(downloadUrl);
|
||
}
|
||
|
||
}
|