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; 
 | 
  
 | 
/** 
 | 
 * @author wzy 
 | 
 * @date 2021-09-27 
 | 
 **/ 
 | 
@Slf4j 
 | 
@RestController 
 | 
@RequestMapping(value = "/api/pay") 
 | 
public class PayCallBackController { 
 | 
  
 | 
    @Autowired 
 | 
    private IPayService payService; 
 | 
  
 | 
    @Resource 
 | 
    private AliPayProperties aliPayProperties; 
 | 
  
 | 
    @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"; 
 | 
        } 
 | 
    } 
 | 
} 
 |