lyhzzz 2 лет назад
Родитель
Сommit
c1053478ab

+ 8 - 3
src/main/java/com/fdkankan/pay/controller/PayController.java

@@ -10,12 +10,14 @@ import com.fdkankan.pay.httpClient.client.WxClient;
 import com.fdkankan.pay.service.IOrderService;
 import com.fdkankan.pay.service.IWxConfigService;
 import com.fdkankan.pay.service.impl.PayOrderService;
+import com.fdkankan.pay.util.CacheUtil;
 import com.fdkankan.pay.util.UrlUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
-@RestController
+@Controller
 @RequestMapping("/service/pay")
 @Slf4j
 public class PayController extends BaseController {
@@ -30,6 +32,7 @@ public class PayController extends BaseController {
     IWxConfigService wxConfigService;
 
     @GetMapping("/wxLogin")
+    @ResponseBody
     public ResultData wxLogin(@RequestParam(required = false) String code,@RequestParam(required = false) String orderSn){
         log.info("wx-login----orderSn:{},code:{}",orderSn,code);
         Order order = orderService.getByOrderSn(orderSn);
@@ -47,14 +50,16 @@ public class PayController extends BaseController {
 
 
     @PostMapping(value = "/openPay")
+    @ResponseBody
     public ResultData openPay(@RequestBody Order param) throws Exception {
         return ResultData.ok(payOrderService.openPay(param, UrlUtils.getIpAddr(request)));
     }
 
 
     @PostMapping(value = "/callBack/{orderSn}")
-    public void callback(@PathVariable String orderSn) {
-        payOrderService.callBack(orderSn,request,response);
+    public String callback(@PathVariable String orderSn) {
+        payOrderService.callBack(orderSn, request, response);
+        return "redirect:" + CacheUtil.mainUrl +  "/payment/?id="+orderSn;
     }
 
 

+ 6 - 5
src/main/java/com/fdkankan/pay/service/impl/PayOrderService.java

@@ -57,25 +57,26 @@ public class PayOrderService {
         return null;
     }
 
-    public void callBack(String orderSn, HttpServletRequest request, HttpServletResponse response) {
+    public Boolean callBack(String orderSn, HttpServletRequest request, HttpServletResponse response) {
         Order order = orderService.getByOrderSn(orderSn);
         if(order == null){
             throw new BusinessException(ResultCode.ORDER_NOT_EXIST);
         }
         if(order.getPayStatus() != 0){
-            return;
+            return false;
         }
         //微信支付回调
         if(order.getPayType() == 0 || order.getPayType() == 1 || order.getPayType() == 2){
-             wechatPayService.callBack(request,response,order);
+            return wechatPayService.callBack(request,response,order);
         }
         //支付宝回调
         if(order.getPayType() == 3 || order.getPayType() == 4 ){
-            alipayService.callBack(request,response,order);
+            return alipayService.callBack(request,response,order);
         }
         //paypal回调
         if(order.getPayType() == 5 ){
-            paypalService.callBack(request,response,order);
+            return paypalService.callBack(request,response,order);
         }
+        return true;
     }
 }

+ 6 - 2
src/main/java/com/fdkankan/pay/util/alipay/sdk/AlipayService.java

@@ -301,7 +301,7 @@ public class AlipayService {
     }
 
 
-    public void callBack(HttpServletRequest request, HttpServletResponse response, Order order) {
+    public Boolean callBack(HttpServletRequest request, HttpServletResponse response, Order order) {
         log.info("ali-callBack--order:{}",order);
         Boolean payFlag = false;
         String trade_no = null;
@@ -310,7 +310,7 @@ public class AlipayService {
             AliConfig aliConfig = aliConfigService.getByServeId(order.getServeId());
             if(aliConfig == null){
                 log.error("ali-callBack--wxConfig-notexist");
-                return;
+                return false;
             }
 
             //获取支付宝POST过来反馈信息
@@ -355,16 +355,20 @@ public class AlipayService {
 
                 }else {
                     log.error("订单号:" + orderSn + "支付宝回调交易状态异常:" + trade_status);
+                    return false;
                 }
             }else{
                 log.info("支付宝回调签名认证失败,signVerified=false, paramsJson:{}", JSON.toJSONString(params));
+                return false;
             }
         } catch (Exception e) {
             log.error("支付宝回调签名认证失败", e);
+            return false;
         }finally {
             if(order!= null){
                 orderService.payResult(order,payFlag,trade_no,openId);
             }
         }
+        return true;
     }
 }

+ 6 - 8
src/main/java/com/fdkankan/pay/util/paypal/sdk/PaypalService.java

@@ -79,7 +79,7 @@ public class PaypalService {
         throw new BusinessException(ResultCode.PAYPAL_ERROR);
     }
 
-    public void callBack(HttpServletRequest request, HttpServletResponse response, Order order) {
+    public Boolean callBack(HttpServletRequest request, HttpServletResponse response, Order order) {
 
         log.info("ali-callBack--order:{}",order);
         Boolean payFlag = false;
@@ -118,19 +118,17 @@ public class PaypalService {
             openId = payerEmail;
             if ("Completed".equals(paymentStatus)) {
                 //根据自己业务进行处理(修改订单状态,支付时间等等操作)
-                try {
-                    log.info("paypal支付成功回调");
-                    //表示续费,有消费记录id
-                    payFlag = true;
-                } catch (Exception e) {
-                    log.error("paypal支付回调异常,errorMsg:{}", e.getMessage());
-                }
+                log.info("paypal支付成功回调");
+                //表示续费,有消费记录id
+                payFlag = true;
             }
         }catch (Exception e) {
             log.error("paypal支付回调异常,errorMsg:{}", e.getMessage());
+            return false;
         }finally {
             orderService.payResult(order,payFlag,trade_no,openId);
         }
+        return  true;
     }
 
 

+ 6 - 4
src/main/java/com/fdkankan/pay/util/wx/WechatPayService.java

@@ -81,7 +81,7 @@ public class WechatPayService {
         String return_msg = resp.get("return_msg");
         if ("SUCCESS".equals(return_code) && "OK".equals(return_msg)) {
             mweb_url = resp.get("mweb_url");//调微信支付接口地址
-            mweb_url += "&redirect_url=" + URLEncoder.encode(wxConfig.getCallBackUrl()+"/"+ orderSn, "UTF-8");
+            mweb_url += "&redirect_url=" + URLEncoder.encode(wxConfig.getCallBackUrl(), "UTF-8");
             log.warn("mweb_url=" + mweb_url);
         } else {
             log.error("微信统一支付接口获取预支付订单出错");
@@ -176,7 +176,7 @@ public class WechatPayService {
     }
 
 
-    public void callBack(HttpServletRequest request, HttpServletResponse response,Order order) {
+    public Boolean callBack(HttpServletRequest request, HttpServletResponse response,Order order) {
         log.info("wx-callBack--order:{}",order);
         Boolean payFlag = false;
         String trade_no = null;
@@ -185,7 +185,7 @@ public class WechatPayService {
             WxConfig wxConfig = wxConfigService.getByServeId(order.getServeId());
             if(wxConfig == null){
                 log.error("wx-callBack--wxConfig-notexist");
-                return;
+                return false;
             }
             String inputLine = "";
             String notifyXml = "";
@@ -211,7 +211,7 @@ public class WechatPayService {
                     //todo 支付成功
                     if(!out_trade_no.equals(order.getOrderSn())){
                         log.error("wx-call-back error :orderSn:{},out_trade_no:{}" ,order.getOrderSn(), out_trade_no);
-                        return;
+                        return false;
                     }
                     payFlag = true;
 
@@ -236,11 +236,13 @@ public class WechatPayService {
 
         } catch (Exception e) {
             log.error("微信支付回调数据异常, error:", e);
+            return false;
         }finally {
             if(order!= null){
                 orderService.payResult(order,payFlag,trade_no,openId);
             }
         }
+        return true;
     }