Helius
2021-09-27 d8fb82111f08f7f3be1d9cff9e7a11dfc120ad77
src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java
@@ -1,14 +1,20 @@
package cc.mrbird.febs.pay.controller;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.pay.properties.AliPayProperties;
import cc.mrbird.febs.pay.service.IPayService;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.internal.util.AlipaySignature;
import com.ijpay.alipay.AliPayApi;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
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;
@@ -21,14 +27,36 @@
@RequestMapping(value = "/api/pay")
public class PayCallBackController {
    @Autowired
    private IPayService payService;
    @Resource
    private AliPayProperties aliPayProperties;
    @RequestMapping("/aliCallBack")
    public FebsResponse aliPayCallBack(HttpServletRequest request) {
        log.info("进入回调");
    public String aliPayCallBack(HttpServletRequest request){
        log.info("进入支付宝回调");
        Map<String, String> params = AliPayApi.toMap(request);
        log.info("回调参数:{}", JSONObject.toJSONString(params));
        for (Map.Entry<String, String> entry : params.entrySet()) {
            log.info("支付宝回调:{}===={}", entry.getKey(), entry.getValue());
        boolean verifyResult = false;
        try {
            verifyResult = AlipaySignature.verifyV1(params, aliPayProperties.getPublicKey(), "UTF-8", "RSA2");
        } catch (AlipayApiException e) {
            log.info("验证失败==");
            return "failure";
        }
        return new FebsResponse().success();
        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("支付失败");
                return "failure";
            }
        } else {
            log.info("验证失败");
            return "failure";
        }
    }
}