package cc.mrbird.febs.pay.controller;
|
|
import cc.mrbird.febs.pay.properties.AliPayProperties;
|
import cc.mrbird.febs.pay.service.AliIPayService;
|
import cc.mrbird.febs.pay.service.IPayService;
|
import com.alipay.api.AlipayApiException;
|
import com.alipay.api.internal.util.AlipaySignature;
|
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
|
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
|
import com.github.binarywang.wxpay.exception.WxPayException;
|
import com.github.binarywang.wxpay.service.WxPayService;
|
import com.ijpay.alipay.AliPayApi;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.Map;
|
|
/**
|
* @author wzy
|
* @date 2021-09-27
|
**/
|
@Slf4j
|
@RestController
|
@RequestMapping(value = "/api/pay")
|
public class PayCallBackController {
|
|
@Autowired
|
private AliIPayService payService;
|
|
@Resource
|
private AliPayProperties aliPayProperties;
|
|
@Autowired
|
private WxPayService wxPayService;
|
// private WxPayService wxPayService = new com.github.binarywang.wxpay.service.impl.WxPayServiceImpl();
|
|
@Autowired
|
private IPayService wechatPayService;
|
|
@RequestMapping("/aliCallBack")
|
public String aliPayCallBack(HttpServletRequest request){
|
log.info("进入支付宝回调");
|
Map<String, String> params = AliPayApi.toMap(request);
|
|
boolean verifyResult = false;
|
try {
|
verifyResult = AlipaySignature.verifyV1(params, aliPayProperties.getPublicKey(), "UTF-8", "RSA2");
|
} catch (AlipayApiException e) {
|
log.info("=验证失败=:{}", params);
|
return "failure";
|
}
|
|
if (verifyResult) {
|
if ("TRADE_SUCCESS".equals(params.get("trade_status")) || "TRADE_FINISHED".equals(params.get("trade_status"))) {
|
payService.aliCallback(params);
|
return "success";
|
} else {
|
log.info("支付失败:{}", params);
|
return "failure";
|
}
|
} else {
|
log.info("验证失败:{}", params);
|
return "failure";
|
}
|
}
|
|
@PostMapping(value = "/wxPayCallBack")
|
public String wxPayCallBack(@RequestBody String xmlData) throws WxPayException {
|
log.info("=======微信回调:{}========", xmlData);
|
WxPayOrderNotifyResult notifyResult = this.wxPayService.parseOrderNotifyResult(xmlData);
|
|
wechatPayService.payCallback(notifyResult.toMap());
|
return WxPayNotifyResponse.success("成功");
|
}
|
}
|