| 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"; | 
|         } | 
|     } | 
| } |