|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | @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("=验证失败=:{}", params); | 
|---|
|  |  |  | 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("支付失败:{}", params); | 
|---|
|  |  |  | return "failure"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | log.info("验证失败:{}", params); | 
|---|
|  |  |  | return "failure"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|