ソースを参照

支付调起联调及逻辑优化

xufeng 2 年 前
コミット
dca76547d6

+ 8 - 2
game-module/game-sdk/src/main/java/com/zanxiang/sdk/controller/PayController.java

@@ -14,6 +14,7 @@ import com.zanxiang.sdk.service.Impl.pay.PayService;
 import com.zanxiang.sdk.service.PlatformOrderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import org.jdom.JDOMException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -36,6 +37,7 @@ import java.util.Objects;
 @CrossOrigin
 @RestController
 @RequestMapping(value = "/pay")
+@Slf4j
 public class PayController {
 
     @Resource
@@ -46,7 +48,8 @@ public class PayController {
     @ApiOperation(value = "支付参数生成")
     @PostMapping(value = "/create")
     public ResultMap create(@Validated @RequestBody ProductPayParam product, @ValidLogin UserData userData) {
-        String userId = "1";
+        String userId = String.valueOf(userData.getUserId());
+//        String userId = "1";
         String cpId = "1";
         if (StringUtils.isEmpty(product.getOrderId())) {
             //虚拟充值情况,直接传金额实时生成订单
@@ -77,18 +80,21 @@ public class PayController {
     @ApiOperation(value = "支付宝支付异步回调(二维码、H5、网站)")
     @RequestMapping(value = "notify", method = RequestMethod.POST)
     public String alipayNotify(HttpServletRequest request, HttpServletResponse response) throws IOException, JDOMException {
+        log.info("支付宝支付异步回调 request:{},response:{}", request, response);
         return payService.notify(request, response, PayWayEnum.ALIPAY.getNum());
     }
 
     @ApiOperation(value = "微信支付")
     @RequestMapping(value = "wxPayNotify", method = RequestMethod.POST)
     public String wxPayNotify(HttpServletRequest request, HttpServletResponse response) throws IOException, JDOMException {
+        log.info("微信支付回调 request:{},response:{}", request, response);
         return payService.notify(request, response, PayWayEnum.WXPAY.getNum());
     }
 
     @ApiOperation(value = "支付宝支付同步回调(二维码、H5、网站)")
-    @RequestMapping(value = "alipaySynNotify", method = RequestMethod.POST)
+    @RequestMapping(value = "alipaySynNotify", method = RequestMethod.GET)
     public ResultMap synNotify(HttpServletRequest request) {
+        log.info("支付宝回调 request:{}", request);
         return payService.synNotify(request, PayWayEnum.ALIPAY.getNum());
     }
 

+ 2 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/GamePayWayService.java

@@ -2,11 +2,13 @@ package com.zanxiang.sdk.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.mybatis.entity.GamePayWay;
+import org.springframework.stereotype.Component;
 
 /**
  * @author xufeng
  * @date 2022/6/13 11:27
  */
+@Component
 public interface GamePayWayService extends IService<GamePayWay> {
     /**
      * 根据id获取游戏支付方式详情

+ 1 - 1
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/GamePayWayServiceImpl.java

@@ -23,7 +23,7 @@ public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePay
 
     @Override
     public GamePayWay getInfo(String id) {
-        return getOne(new LambdaQueryWrapper<GamePayWay>().eq(GamePayWay::getId, id).eq(GamePayWay::getIsDelete, DeleteEnum.NO));
+        return getOne(new LambdaQueryWrapper<GamePayWay>().eq(GamePayWay::getId, id).eq(GamePayWay::getIsDelete, DeleteEnum.NO.getCode()));
     }
 
     @Override

+ 7 - 15
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/PlatformOrderServiceImpl.java

@@ -63,23 +63,15 @@ public class PlatformOrderServiceImpl extends ServiceImpl<OrderMapper, Order> im
             this.checkParam(platformOrderBO, "pay");
             Order order = getOne(new LambdaQueryWrapper<Order>().eq(Order::getId, platformOrderBO.getId()));
             //已支付情况,直接返回成功
-            if (!order.getStatus().equals(OrderStateEnum.SUCCESS.getCode())) {
+            if (order.getStatus().equals(OrderStateEnum.SUCCESS.getCode())) {
                 return true;
             }
             if (!order.getStatus().equals(OrderStateEnum.NO_PAY.getCode())) {
                 throw new ParameterResolutionException("订单状态非待支付");
             }
-            if (!order.getUserId().equals(platformOrderBO.getUserId())) {
-                throw new ParameterResolutionException("订单与用户关系不符");
-            }
-            order.setRealAmount(platformOrderBO.getRealAmount());
-            order.setMerchantOrderNo(platformOrderBO.getMerchantOrderNo());
-            order.setStatus(OrderStateEnum.SUCCESS.getCode());
-            order.setGamePaywayId(platformOrderBO.getGamePaywayId());
-            order.setPayTime(platformOrderBO.getPayTime() == null ? platformOrderBO.getPayTime() : new Date());
-            order.setMemNote(StringUtils.isEmpty(platformOrderBO.getMemNote()) ? null : platformOrderBO.getMemNote());
-            logger.info("订单支付提交数据 data:{}", order);
-            return updateById(order);
+            platformOrderBO.setPayTime(new Date());
+            logger.info("订单支付提交数据 data:{}", platformOrderBO);
+            return updateById(BeanUtils.copy(platformOrderBO, Order.class));
         } catch (ParameterResolutionException e) {
             logger.error("订单支付失败 platformOrderBO:{}, error:{}", platformOrderBO, e);
             e.printStackTrace();
@@ -149,9 +141,9 @@ public class PlatformOrderServiceImpl extends ServiceImpl<OrderMapper, Order> im
                 if (platformOrderBO.getId() == null) {
                     throw new ParamNullException("id");
                 }
-                if (platformOrderBO.getUserId() == null) {
-                    throw new ParamNullException("UserId");
-                }
+//                if (platformOrderBO.getUserId() == null) {
+//                    throw new ParamNullException("UserId");
+//                }
                 if (platformOrderBO.getStatus() == 0) {
                     throw new ParamNullException("Status");
                 }

+ 51 - 39
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/pay/AlipayServiceImpl.java

@@ -1,8 +1,6 @@
 package com.zanxiang.sdk.service.Impl.pay;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.TypeReference;
 import com.alipay.easysdk.factory.Factory;
 import com.alipay.easysdk.kernel.Config;
 import com.alipay.easysdk.kernel.util.ResponseChecker;
@@ -10,22 +8,23 @@ import com.alipay.easysdk.payment.app.models.AlipayTradeAppPayResponse;
 import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
 import com.alipay.easysdk.payment.wap.models.AlipayTradeWapPayResponse;
 import com.zanxiang.common.domain.ResultMap;
-import com.zanxiang.common.enums.OrderStateEnum;
+import com.zanxiang.common.enums.HttpStatusEnum;
 import com.zanxiang.common.enums.ResEnum;
-import com.zanxiang.common.utils.URIUtil;
-import com.zanxiang.sdk.domain.bo.PlatformOrderBO;
 import com.zanxiang.sdk.domain.bo.ProductPayParamBO;
 import com.zanxiang.sdk.service.OrderPayService;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.math.BigDecimal;
-import java.util.*;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
 
 /**
  * @author xufeng
@@ -33,11 +32,15 @@ import java.util.*;
  */
 @Component
 @Slf4j
-@Service
+@Service("AlipayService")
 public class AlipayServiceImpl extends PayService implements OrderPayService {
     private static final Logger logger = LoggerFactory.getLogger(AlipayServiceImpl.class);
 
-    private String returnUrl = "http://localhost/pay/notify";
+    @Value("payConfig.alipay.returnUrl")
+    private String returnUrl;
+
+    @Value("payConfig.alipay.notifyUrl")
+    private String notifyUrl;
 
     /**
      * 支付调起
@@ -46,12 +49,17 @@ public class AlipayServiceImpl extends PayService implements OrderPayService {
      * @return
      */
     @Override
+
     public ResultMap create(ProductPayParamBO product) {
         this.attach = product.getAttach();
-        configInit(product.getConfig());
-        Map<String, String> attachMap = JSON.parseObject(JSON.toJSONString(this.attach), new TypeReference<Map<String, String>>() {
-        });
-        this.returnUrl = URIUtil.fillUrlParams(this.returnUrl, attachMap, true);
+        configInit(getPayConfig(product.getGameId(), product.getPayWay(), product.getPayWay()));
+//        Map<String, String> attachMap = JSON.parseObject(JSON.toJSONString(this.attach), new TypeReference<Map<String, String>>() {
+//        });
+//        this.returnUrl = URIUtil.fillUrlParams(this.returnUrl, attachMap, true);
+
+        //回调地址中拼接游戏具体支付方式
+        returnUrl += "?" + "gamePayWayId=" + attach.getGamePayWayId();
+        notifyUrl += "?" + "gamePayWayId=" + attach.getGamePayWayId();
         switch (product.getPayDevice()) {
             case 1:
                 return this.pc(product);
@@ -80,20 +88,16 @@ public class AlipayServiceImpl extends PayService implements OrderPayService {
                 String parameterName = parameterNames.nextElement();
                 params.put(parameterName, request.getParameter(parameterName));
             }
-            String outTradeNo = request.getParameter("out_trade_no");
+            String orderNo = request.getParameter("out_trade_no");
+            String gamePayWayId = params.get("gamePayWayId");
+            //回调地址拼接参数不参加sign验证
+            params.remove("gamePayWayId");
+            //初始化配置
+            configInit(getPayConfig(gamePayWayId));
             Boolean flag = Factory.Payment.Common().verifyNotify(params);
             if (flag) {
-                PlatformOrderBO bo = new PlatformOrderBO();
-                bo.setId(outTradeNo);
-                bo.setUserId(request.getParameter("user_id"));
-                bo.setRealAmount(new BigDecimal(request.getParameter("totalFee")));
-                bo.setMerchantOrderNo(request.getParameter("trade_no"));
-                bo.setStatus(OrderStateEnum.SUCCESS.getCode());
-                bo.setGamePaywayId(request.getParameter("gamePayWayId"));
-                bo.setPayTime(new Date());
-                Boolean result = platformOrderService.pay(bo);
-                if (result) {
-                    logger.info("支付宝异步回调成功 request:{},商户订单号为:{}", request, outTradeNo);
+                if (paySuccess(orderNo, params.get("total_amount"), params.get("trade_no"), gamePayWayId)) {
+                    logger.info("支付宝异步回调成功 request:{},orderNo:{},商户订单号为:{}", request, orderNo, params.get("trade_no"));
                     return ResEnum.SUCCESS.getMsg();
                 }
             }
@@ -130,15 +134,22 @@ public class AlipayServiceImpl extends PayService implements OrderPayService {
             }
             //商户订单号
             String orderNo = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"), "UTF-8");
-            //前台回调验证签名 v1 or v2
+            String gamePayWayId = params.get("gamePayWayId");
+            //回调地址拼接参数不参加sign验证
+            params.remove("gamePayWayId");
+            //初始化配置
+            configInit(getPayConfig(gamePayWayId));
+            //验证签名
             Boolean flag = Factory.Payment.Common().verifyNotify(params);
             if (flag) {
                 logger.info("订单号" + orderNo + "验证签名结果[成功].");
-                //处理业务逻辑
-            } else {
-                logger.info("订单号" + orderNo + "验证签名结果[失败].");
+                if (paySuccess(orderNo, params.get("total_amount"), params.get("trade_no"), gamePayWayId)) {
+                    logger.info("支付宝同步回调成功 request:{},orderNo:{},商户订单号为:{}", request, orderNo, params.get("trade_no"));
+                    return ResultMap.ok(HttpStatusEnum.SUCCESS.getMsg());
+                }
             }
-            return ResultMap.ok("success");
+            logger.error("订单号" + orderNo + "验证签名结果[失败].");
+            return ResultMap.error(HttpStatusEnum.FAIL.getMsg());
         } catch (Exception e) {
             e.printStackTrace();
             //处理异常信息
@@ -158,11 +169,11 @@ public class AlipayServiceImpl extends PayService implements OrderPayService {
         try {
             logger.info("mobile端支付生成,请求参数 bo:{}", product);
             AlipayTradeWapPayResponse response = Factory.Payment
-                    .Wap()
-                    .pay(JSONObject.toJSONString(this.attach), product.getOutTradeNo(), product.getTotalFee(), "", this.returnUrl);
+                    .Wap().asyncNotify(notifyUrl)
+                    .pay(product.getSubject(), product.getOutTradeNo(), product.getTotalFee(), "", this.returnUrl);
             logger.info("mobile端支付生成,result:{}", response);
             if (ResponseChecker.success(response)) {
-                return ResultMap.ok(response.getBody());
+                return ResultMap.ok(product.getPayDevice(), response.getBody());
             } else {
                 return ResultMap.ok(ResEnum.FAIL.getMsg());
             }
@@ -182,7 +193,7 @@ public class AlipayServiceImpl extends PayService implements OrderPayService {
         try {
             logger.info("pc端支付生成,请求参数 bo:{}", product);
             AlipayTradePagePayResponse response = Factory.Payment
-                    .Page()
+                    .Page().asyncNotify(notifyUrl)
                     .pay(product.getSubject(), product.getOutTradeNo(), product.getTotalFee(), this.returnUrl);
             logger.info("pc端支付生成,result:{}", response);
             if (ResponseChecker.success(response)) {
@@ -206,10 +217,10 @@ public class AlipayServiceImpl extends PayService implements OrderPayService {
     private ResultMap app(ProductPayParamBO product) {
         try {
             AlipayTradeAppPayResponse response = Factory.Payment
-                    .App()
+                    .App().asyncNotify(notifyUrl)
                     .pay(product.getSubject(), product.getOutTradeNo(), product.getTotalFee());
             if (ResponseChecker.success(response)) {
-                return ResultMap.ok(response.getBody());
+                return ResultMap.ok(product.getPayDevice(), response.getBody());
             } else {
                 return ResultMap.error(ResEnum.FAIL.getMsg());
             }
@@ -222,10 +233,11 @@ public class AlipayServiceImpl extends PayService implements OrderPayService {
 
     /**
      * 配置初始化
+     *
+     * @param obj config
      */
-    public void configInit(Object obj) {
-        Config config = JSONObject.parseObject(obj.toString(), Config.class);
+    public void configInit(String obj) {
+        Config config = JSONObject.parseObject(obj, Config.class);
         Factory.setOptions(config);
     }
-
 }

+ 56 - 12
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/pay/PayService.java

@@ -1,9 +1,12 @@
 package com.zanxiang.sdk.service.Impl.pay;
 
 import com.zanxiang.common.domain.ResultMap;
+import com.zanxiang.common.enums.OrderStateEnum;
 import com.zanxiang.common.enums.PayWayEnum;
 import com.zanxiang.common.exception.BaseException;
+import com.zanxiang.common.utils.SpringUtils;
 import com.zanxiang.mybatis.entity.GamePayWay;
+import com.zanxiang.sdk.domain.bo.PlatformOrderBO;
 import com.zanxiang.sdk.domain.bo.ProductPayAttachParamBO;
 import com.zanxiang.sdk.domain.bo.ProductPayParamBO;
 import com.zanxiang.sdk.domain.dto.PlatformOrderDTO;
@@ -14,13 +17,18 @@ import lombok.extern.slf4j.Slf4j;
 import org.jdom.JDOMException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.math.BigDecimal;
 
 /**
  * 支付调用
@@ -30,7 +38,6 @@ import java.io.IOException;
  */
 @Slf4j
 @Service
-@Configurable
 public class PayService {
     private static final Logger logger = LoggerFactory.getLogger(PayService.class);
 
@@ -40,6 +47,10 @@ public class PayService {
     @Autowired
     public GamePayWayService gamePayWayService;
 
+    @Value("${server.domain}")
+    public String domain;
+
+
     /**
      * 自定义参数
      */
@@ -117,18 +128,51 @@ public class PayService {
      * @return
      */
     private static OrderPayService getDevice(String payCode) {
-        if (payCode.equalsIgnoreCase("Alipay"))
-            return new AlipayServiceImpl();
-        else if (payCode.equalsIgnoreCase("Wxpay"))
-            return new WxpayServiceImpl();
-        else
+        try {
+            return SpringUtils.getBean(payCode + "Service");
+        } catch (BeansException e) {
             throw new BaseException("支付方式不存在");
+        }
+    }
+
+    /**
+     * 获取支付配置
+     *
+     * @param gameId    游戏id
+     * @param payWay    支付方式
+     * @param payDerive 支付设备
+     */
+    public String getPayConfig(String gameId, Integer payWay, Integer payDerive) {
+        GamePayWay payInfo = gamePayWayService.getPayWayToOrderPay(gameId, payWay);
+        this.attach.setGamePayWayId(payInfo.getId());
+        return payInfo.getPayConfig();
     }
 
-//    protected GamePayWay getPayInfo(String gameId, Integer payWay) {
-//        //根据订单中游戏id,获取游戏的支付方式
-//        GamePayWay payInfo = gamePayWayService.getPayWayToOrderPay(gameId, payWay);
-//        this.attach.setGamePayWayId(payInfo.getId());
-//        return payInfo;
-//    }
+    /**
+     * 获取支付配置
+     *
+     * @param gamePayWay 支付方式id
+     */
+    public String getPayConfig(String gamePayWay) {
+        return gamePayWayService.getInfo(gamePayWay).getPayConfig();
+    }
+
+    /**
+     * 支付成功逻辑
+     *
+     * @param orderNo         订单号
+     * @param realAmount      真实金额
+     * @param merchantOrderNo 订单流水号
+     * @param gamePayWayId    具体游戏支付方式id
+     * @return
+     */
+    public Boolean paySuccess(String orderNo, String realAmount, String merchantOrderNo, String gamePayWayId) {
+        PlatformOrderBO bo = new PlatformOrderBO();
+        bo.setId(orderNo);
+        bo.setRealAmount(new BigDecimal(realAmount));
+        bo.setMerchantOrderNo(merchantOrderNo);
+        bo.setStatus(OrderStateEnum.SUCCESS.getCode());
+        bo.setGamePaywayId(gamePayWayId);
+        return platformOrderService.pay(bo);
+    }
 }

+ 23 - 34
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/pay/WxpayServiceImpl.java

@@ -2,22 +2,18 @@ package com.zanxiang.sdk.service.Impl.pay;
 
 import com.alibaba.fastjson.JSONObject;
 import com.zanxiang.common.domain.ResultMap;
-import com.zanxiang.common.enums.OrderStateEnum;
 import com.zanxiang.common.enums.ResEnum;
 import com.zanxiang.common.utils.RandomStringUtil;
-import com.zanxiang.mybatis.entity.GamePayWay;
 import com.zanxiang.sdk.common.util.*;
-import com.zanxiang.sdk.domain.bo.PlatformOrderBO;
 import com.zanxiang.sdk.domain.bo.ProductPayAttachParamBO;
 import com.zanxiang.sdk.domain.bo.ProductPayParamBO;
 import com.zanxiang.sdk.domain.bo.WxPayConfigBO;
-import com.zanxiang.sdk.service.GamePayWayService;
 import com.zanxiang.sdk.service.OrderPayService;
 import lombok.extern.slf4j.Slf4j;
 import org.jdom.JDOMException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 import weixin.popular.api.SnsAPI;
@@ -25,8 +21,10 @@ import weixin.popular.api.SnsAPI;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
-import java.math.BigDecimal;
-import java.util.*;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
 
 /**
  * @author xufeng
@@ -34,20 +32,19 @@ import java.util.*;
  */
 @Component
 @Slf4j
-@Service
+@Service("WxpayService")
 public class WxpayServiceImpl extends PayService implements OrderPayService {
     private static final Logger logger = LoggerFactory.getLogger(WxpayServiceImpl.class);
 
-    @Autowired
-    private GamePayWayService gamePayWayService;
-
     private WxPayConfigBO config;
 
     private WxPayUtil wxPayUtil;
 
-    private String serverUrl = "http://localhost/";
+    @Value("server.domain")
+    private String serverUrl;
 
-    private String notifyUrl = "http://localhost/";
+    @Value("payConfig.alipay.notifyUrl")
+    private String notifyUrl;
 
     private String filePath = "/tmp/wxpay/";
 
@@ -75,13 +72,13 @@ public class WxpayServiceImpl extends PayService implements OrderPayService {
         this.totalFee = String.valueOf(Float.parseFloat(product.getTotalFee()) * 100);
         this.outTradeNo = product.getOutTradeNo() + RandomStringUtil.randomNumStr(5);
         this.attach = product.getAttach();
+        //初始化配置
+        this.configInit(getPayConfig(product.getGameId(), product.getPayWay(), product.getPayDevice()));
 
-        this.configInit(product.getConfig());
-
-        switch (product.getPayWay()) {
+        switch (product.getPayDevice()) {
             case 1:
-                return this.pc(product);
-//                return this.mobile(product, "NATIVE");
+//                return this.pc(product);
+                return this.mobile(product, "NATIVE");
             case 2:
             case 3:
                 return this.mobile(product, "MWEB");
@@ -128,8 +125,7 @@ public class WxpayServiceImpl extends PayService implements OrderPayService {
             packageParams.put(parameter, v);
         }
         ProductPayAttachParamBO attachBO = this.decodeAttach(packageParams.get("attach"));
-        GamePayWay payInfo = gamePayWayService.getInfo(attachBO.getGamePayWayId());
-        this.config = JSONObject.parseObject(payInfo.getPayConfig(), WxPayConfigBO.class);
+        configInit(getPayConfig(attachBO.getGamePayWayId()));
         // 账号信息
         String key = config.getApiKey(); // key
         // 判断签名是否正确
@@ -143,16 +139,7 @@ public class WxpayServiceImpl extends PayService implements OrderPayService {
                 // 这里是支付成功
                 String orderNo = (String) packageParams.get("out_trade_no");
                 logger.info("微信订单号{}付款成功", orderNo);
-                PlatformOrderBO bo = new PlatformOrderBO();
-                bo.setId(attachBO.getOrderId());
-                bo.setUserId(attachBO.getUserId());
-                bo.setRealAmount(new BigDecimal(packageParams.get("total_amount").toString()));
-                bo.setMerchantOrderNo(request.getParameter("trade_no"));
-                bo.setStatus(OrderStateEnum.SUCCESS.getCode());
-                bo.setGamePaywayId(attachBO.getGamePayWayId());
-                bo.setPayTime(new Date());
-                Boolean result = platformOrderService.pay(bo);
-                if (result) {
+                if (paySuccess(attachBO.getOrderId(), String.valueOf(Float.parseFloat(packageParams.get("total_amount").toString()) / 100), packageParams.get("trade_no").toString(), attachBO.getGamePayWayId())) {
                     logger.info("支付宝异步回调成功 request:{},商户订单号为:{}", request, outTradeNo);
                     return ResEnum.SUCCESS.getMsg();
                 }
@@ -217,7 +204,8 @@ public class WxpayServiceImpl extends PayService implements OrderPayService {
         String imgPath = filePath + imgName;
         logger.info("小程序支付调起,请求参数:qrCode:{}, imgPath:{}", qrCode, imgPath);
         ZxingUtil.createQRCodeImage(qrCode.toString(), imgPath);
-        return ResultMap.ok(imgPath);
+        System.out.println(imgPath);
+        return ResultMap.ok(product.getPayDevice(), qrCode.toString());
     }
 
 
@@ -286,7 +274,8 @@ public class WxpayServiceImpl extends PayService implements OrderPayService {
                     String imgName = this.outTradeNo + ".png";
                     String imgPath = filePath + imgName;
                     ZxingUtil.createQRCodeImage(urlCode, imgPath);
-                    return ResultMap.ok(imgPath);
+                    System.out.println(imgPath);
+                    return ResultMap.ok(product.getPayDevice(), urlCode);
                 } else {
                     String errCodeDes = (String) map.get("err_code_des");
                     logger.error("订单号:{}生成微信支付码(系统)失败:{}", product.getOutTradeNo(), errCodeDes);
@@ -306,8 +295,8 @@ public class WxpayServiceImpl extends PayService implements OrderPayService {
     /**
      * 配置初始化
      */
-    public void configInit(Object obj) {
-        this.config = JSONObject.parseObject(obj.toString(), WxPayConfigBO.class);
+    public void configInit(String obj) {
+        this.config = JSONObject.parseObject(obj, WxPayConfigBO.class);
         this.wxPayUtil = new WxPayUtil(this.config);
     }
 

+ 2 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/OrderPayService.java

@@ -18,4 +18,6 @@ public interface OrderPayService {
     String notify(HttpServletRequest request, HttpServletResponse response) throws IOException, JDOMException;
 
     ResultMap synNotify(HttpServletRequest request);
+
+    public void configInit(String obj);
 }

+ 2 - 1
game-module/game-sdk/src/main/resources/META-INF/spring.factories

@@ -1,2 +1,3 @@
 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-  com.zanxiang.common.handler.GlobalExceptionHandler
+  com.zanxiang.common.handler.GlobalExceptionHandler,\
+  com.zanxiang.common.utils.SpringUtils

+ 10 - 1
game-module/game-sdk/src/main/resources/bootstrap.yml

@@ -2,6 +2,7 @@
 server:
   shutdown: graceful
   port: 8091
+  domain: http://localhost:8091
 #  servlet:
 #    context-path: /game-manage
 
@@ -52,7 +53,7 @@ ali-sms:
 auth:
   qq-appId: 101933357
   qq-appKey: 900292039ed5408d941dad762ab68383
-  vx-appId :
+  vx-appId:
   vx-appSecret:
 
 logging:
@@ -60,3 +61,11 @@ logging:
     root: warn
     com.zanxiang.sdk: debug
     com.zanxiang.mybatis.mapper: debug
+
+
+payConfig:
+  wx:
+    returnUrl: http://localhost:8091/pay/wxPayNotify
+  alipay:
+    returnUrl: http://localhost:8091/pay/alipaySynNotify
+    notifyUrl: http://localhost:8091/pay/notify