package com.ruoyi.payment.controller;
|
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
|
import com.ruoyi.payment.api.vo.IcbcPaymentReq;
|
import com.ruoyi.payment.api.vo.IcbcPaymentResp;
|
import com.ruoyi.payment.api.vo.IcbcRefundReq;
|
import com.ruoyi.payment.api.vo.IcbcRefundResp;
|
import com.ruoyi.payment.api.vo.IcbcSubOrderQueryReq;
|
import com.ruoyi.payment.api.vo.IcbcSubOrderQueryResp;
|
import com.ruoyi.payment.api.vo.IcbcSubOrderSplitReq;
|
import com.ruoyi.payment.api.vo.IcbcSubOrderSplitResp;
|
import com.ruoyi.payment.icbc.service.IcbcPayService;
|
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;
|
|
/**
|
* 工行统一支付入口。
|
*/
|
@RestController
|
@RequestMapping("/icbc")
|
public class IcbcPayController {
|
@Resource
|
private IcbcPayService icbcPayService;
|
|
@Resource
|
private ChargingOrderClient chargingOrderClient;
|
|
@PostMapping("/payment")
|
public R<IcbcPaymentResp> payment(@RequestBody IcbcPaymentReq req) {
|
return R.ok(icbcPayService.payment(req));
|
}
|
|
@PostMapping("/query")
|
public R<IcbcPaymentResp> query(@RequestParam("outTradeNo") String outTradeNo) {
|
return R.ok(icbcPayService.query(outTradeNo));
|
}
|
|
@PostMapping("/close")
|
public R<IcbcPaymentResp> close(@RequestParam("outTradeNo") String outTradeNo) {
|
return R.ok(icbcPayService.close(outTradeNo));
|
}
|
|
@PostMapping("/refund")
|
public R<IcbcRefundResp> refund(@RequestBody IcbcRefundReq req) {
|
return R.ok(icbcPayService.refund(req));
|
}
|
|
@PostMapping("/sub-order/split")
|
public R<IcbcSubOrderSplitResp> splitSubOrder(@RequestBody IcbcSubOrderSplitReq req) {
|
return R.ok(icbcPayService.splitSubOrder(req));
|
}
|
|
@PostMapping("/sub-order/query")
|
public R<IcbcSubOrderQueryResp> querySubOrder(@RequestBody IcbcSubOrderQueryReq req) {
|
return R.ok(icbcPayService.querySubOrder(req));
|
}
|
|
@PostMapping("/callBack")
|
public void callBack(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
Map<String, String> callback = icbcPayService.parseNotify(request.getParameterMap());
|
dispatchChargingOrderCallback(callback);
|
PrintWriter writer = response.getWriter();
|
writer.println("success");
|
writer.flush();
|
writer.close();
|
}
|
|
private void dispatchChargingOrderCallback(Map<String, String> callback) {
|
String outTradeNo = callback.get("out_trade_no");
|
String transactionId = callback.get("transaction_id");
|
String attach = callback.get("attach");
|
Integer paymentType = Integer.valueOf(attach);
|
if (Integer.valueOf(1).equals(paymentType)) {
|
chargingOrderClient.chargingOrderWXCallback(outTradeNo, transactionId, attach);
|
return;
|
}
|
if (Integer.valueOf(2).equals(paymentType)) {
|
chargingOrderClient.chargingOrderALICallback(outTradeNo, transactionId, attach);
|
return;
|
}
|
if (Integer.valueOf(3).equals(paymentType)) {
|
chargingOrderClient.chargingOrderALIH5Callback(outTradeNo, transactionId, attach);
|
return;
|
}
|
throw new IllegalArgumentException("工行回调支付类型不支持:" + attach);
|
}
|
}
|