package com.ruoyi.payment.controller;
|
|
import com.alipay.api.response.AlipayTradeQueryResponse;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
|
import com.ruoyi.order.api.feignClient.OrderClient;
|
import com.ruoyi.payment.ali.v2.AppPayUtil;
|
import com.ruoyi.payment.api.model.RefundReq;
|
import com.ruoyi.payment.api.model.RefundResp;
|
import com.ruoyi.payment.api.vo.AliPaymentReq;
|
import com.ruoyi.payment.api.vo.AliPaymentResp;
|
import com.ruoyi.payment.api.vo.AliQueryOrder;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.PrintWriter;
|
import java.util.Map;
|
|
/**
|
* @author zhibing.pu
|
* @Date 2024/8/24 14:29
|
*/
|
@RestController
|
@RequestMapping("/aliApp")
|
public class AppAliPayController {
|
|
@Resource
|
private AppPayUtil appPayUtil;
|
@Resource
|
private ChargingOrderClient chargingOrderClient;
|
|
/**
|
* 调起支付宝小程序支付
|
* @param req
|
* @return
|
*/
|
@ResponseBody
|
@PostMapping("/payment")
|
public R<Map<String, String>> payment(@RequestBody AliPaymentReq req){
|
Map<String, String> alipay = appPayUtil.alipay(req.getBody(), req.getSubject(), req.getPassbackParams(), req.getOutTradeNo(), req.getTotalAmount(), req.getNotifyUrl());
|
return R.ok(alipay);
|
}
|
|
/**
|
* 查询订单
|
* @param outTradeNo
|
* @return
|
*/
|
@ResponseBody
|
@PostMapping("/query")
|
public R<AliQueryOrder> query(@RequestParam("outTradeNo") String outTradeNo){
|
AlipayTradeQueryResponse alipayTradeQueryResponse = appPayUtil.queryAliOrder(outTradeNo);
|
if(null != alipayTradeQueryResponse){
|
AliQueryOrder aliQueryOrder = new AliQueryOrder();
|
BeanUtils.copyProperties(alipayTradeQueryResponse, aliQueryOrder);
|
return R.ok(aliQueryOrder);
|
}
|
return R.ok();
|
}
|
|
/**
|
* 关闭订单
|
* @param outTradeNo
|
*/
|
@ResponseBody
|
@PostMapping("/close")
|
public void close(@RequestParam("outTradeNo") String outTradeNo){
|
boolean close = appPayUtil.close(outTradeNo);
|
if(!close){
|
throw new RuntimeException("关闭支付宝订单失败");
|
}
|
}
|
/**
|
* 后台退款 远程调用
|
*/
|
@PostMapping("/refund")
|
public R<RefundResp> refund(@RequestBody RefundReq dto){
|
Map<String, String> map = appPayUtil.aliRefund(dto.getOutTradeNo(), dto.getRefundAmount());
|
RefundResp refundResp = new RefundResp();
|
refundResp.setCode(map.get("code"));
|
refundResp.setMsg(map.get("msg"));
|
refundResp.setTradeNo(map.get("trade_no"));
|
refundResp.setOutTradeNo(map.get("out_trade_no"));
|
refundResp.setRefundFee(new Double(map.get("refund_fee")));
|
return R.ok(refundResp);
|
}
|
|
@ResponseBody
|
@PostMapping(value = "/callBack")
|
public void chargingOrderALICallback(HttpServletRequest request, HttpServletResponse response) {
|
try {
|
// Map<String, String> callback = appPayUtil.alipayCallback(request);
|
// if(null != callback){
|
// String out_trade_no = callback.get("out_trade_no");
|
// String attach = callback.get("subject");
|
// String total_amount = callback.get("total_amount");
|
// String transaction_id = callback.get("trade_no");
|
// String substring = out_trade_no.substring(0, 2);
|
// switch (substring){
|
// case "CD":
|
// chargingOrderClient.chargingOrderALIAppCallback(out_trade_no, transaction_id, attach);
|
// System.err.println("----充电支付回调");
|
// break;
|
// }
|
// PrintWriter writer = response.getWriter();
|
// writer.println("success");
|
// writer.flush();
|
// writer.close();
|
// }
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|