diff --git a/src/main/java/cn/chjyj/szwh/constant/ChConstant.java b/src/main/java/cn/chjyj/szwh/constant/ChConstant.java index 37acbe0..0ca96e0 100644 --- a/src/main/java/cn/chjyj/szwh/constant/ChConstant.java +++ b/src/main/java/cn/chjyj/szwh/constant/ChConstant.java @@ -33,8 +33,6 @@ public class ChConstant { * 43位字符长度 */ public static final String SYS_SECRECT="mQ4jvhc5UAY1HDu87jfR5rkDkVRvKF1ZeaUpuVpBnNG"; - /** - * 系统加密密码 - */ - public static final String SYS_SECRECT_SHORT_WORD="ChhongLtd"; + //发票存放目录 + public static final String INVOICE="./uploads/pdf/"; } diff --git a/src/main/java/cn/chjyj/szwh/controller/api/GoodsController.java b/src/main/java/cn/chjyj/szwh/controller/api/GoodsController.java index f8f676c..42344ce 100644 --- a/src/main/java/cn/chjyj/szwh/controller/api/GoodsController.java +++ b/src/main/java/cn/chjyj/szwh/controller/api/GoodsController.java @@ -121,7 +121,7 @@ public class GoodsController extends BaseController { * * @return */ - @PostMapping("/manuimport") + @RequestMapping("/manuimport") public JSONObject manuImport(@RequestBody String jsonStr) { JSONObject request = JSONObject.parseObject(jsonStr); int icount = goodsService.manuImportGoods(request); @@ -152,7 +152,7 @@ public class GoodsController extends BaseController { return outjson; } - @PostMapping("/getTypeGoods/{type}") + @RequestMapping("/getTypeGoods/{type}") public JSONObject getTypeGoodsRest(@PathVariable String type) { long startTime = System.currentTimeMillis(); List goodsList = goodsService.getTypeGoods(type, "", ""); diff --git a/src/main/java/cn/chjyj/szwh/controller/api/PayController.java b/src/main/java/cn/chjyj/szwh/controller/api/PayController.java index 7a63ffc..1d65f36 100644 --- a/src/main/java/cn/chjyj/szwh/controller/api/PayController.java +++ b/src/main/java/cn/chjyj/szwh/controller/api/PayController.java @@ -1,11 +1,19 @@ package cn.chjyj.szwh.controller.api; import cn.chjyj.szwh.controller.BaseController; +import cn.chjyj.szwh.service.PayService; +import cn.chjyj.szwh.utils.pay.HttpUtil; +import cn.chjyj.szwh.utils.pay.security.HttpsUtil; import com.alibaba.fastjson2.JSONObject; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; @@ -16,6 +24,10 @@ import java.util.Map; @RestController @RequestMapping(value = "/api/Pay",method = RequestMethod.POST) public class PayController extends BaseController { + private static Log log = LogFactory.getLog(PayController.class); + @Autowired + private PayService payService; + /** * 拼装付款方式 * @param batchcode @@ -30,13 +42,17 @@ public class PayController extends BaseController { } /** - * 支付回调 + * 支付结果回调 + * 支付网关过来的数据非json格式 * @return */ @RequestMapping("/payCallback") - public JSONObject payCallback(){ - Map paydata=new HashMap<>(); - paydata.put("method",""); + public JSONObject payCallback(HttpServletRequest request){ + log.info("支付网关返回:"+request.toString()); + JSONObject json = HttpUtil.getParamTreeMap_Utf8(request); + payService.payCallback(json); + jsonObject.put("response","00"); + jsonObject.put("message","成功"); return jsonObject; } } diff --git a/src/main/java/cn/chjyj/szwh/service/PayService.java b/src/main/java/cn/chjyj/szwh/service/PayService.java index 2b6c97e..82bcd24 100644 --- a/src/main/java/cn/chjyj/szwh/service/PayService.java +++ b/src/main/java/cn/chjyj/szwh/service/PayService.java @@ -1,5 +1,7 @@ package cn.chjyj.szwh.service; +import com.alibaba.fastjson2.JSONObject; + /** * 支付服务接口 */ @@ -16,4 +18,11 @@ public interface PayService { * @return */ public int payFinishOperate(String batchcode); + + /** + * 处理支付回调 + * @return + */ + public int payCallback(JSONObject jsonObject); + } diff --git a/src/main/java/cn/chjyj/szwh/service/impl/PayServiceImpl.java b/src/main/java/cn/chjyj/szwh/service/impl/PayServiceImpl.java index f88a83c..32599d3 100644 --- a/src/main/java/cn/chjyj/szwh/service/impl/PayServiceImpl.java +++ b/src/main/java/cn/chjyj/szwh/service/impl/PayServiceImpl.java @@ -1,14 +1,20 @@ package cn.chjyj.szwh.service.impl; +import cn.chjyj.szwh.bean.Goods; import cn.chjyj.szwh.bean.Order; import cn.chjyj.szwh.bean.OrderGoodsDetail; import cn.chjyj.szwh.bean.OrderUser; +import cn.chjyj.szwh.mapper.GoodsMapper; import cn.chjyj.szwh.mapper.OrderGoodsDetailMapper; import cn.chjyj.szwh.mapper.OrderMapper; import cn.chjyj.szwh.mapper.OrderUserMapper; import cn.chjyj.szwh.service.PayService; import cn.chjyj.szwh.utils.SzwhApiUtils; +import cn.chjyj.szwh.utils.pay.security.AesEncryption; +import com.alibaba.fastjson2.JSONObject; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -20,12 +26,16 @@ import java.util.*; @Service @Transactional public class PayServiceImpl implements PayService { + private static Log log = LogFactory.getLog(PayServiceImpl.class); @Autowired private OrderMapper orderMapper; @Autowired private OrderUserMapper orderUserMapper; @Autowired private OrderGoodsDetailMapper orderGoodsDetailMapper; + //商品信息 + @Autowired + private GoodsMapper goodsMapper; /** * 关闭七日以前的已经支付了的订单 @@ -42,6 +52,11 @@ public class PayServiceImpl implements PayService { } } + /** + * 订单支付完成后的操作 + * @param batchcode + * @return + */ @Override public int payFinishOperate(String batchcode) { //获取订单信息 @@ -110,4 +125,63 @@ public class PayServiceImpl implements PayService { } return 0; } + + @Override + public int payCallback(JSONObject json) { + // 待解密的 + String data = json.getString("Data"); + log.info("支付回调 payCallback:"+data); + //todo 后续改造为可以配置型 + String url="https://t.masget.com/openapi/rest"; + String sckey ="gRAZZKiNw0UbTuF9";;// 密钥 + String appid="910000198"; //应用id + String session="iba3t9dqln8etmcaceq1xtqr7urevia1"; //token + try { + //解密 + String desencrypt = AesEncryption.Desencrypt(data, sckey, sckey); + //解密 + log.info("支付网关返回解密结果:"+desencrypt); + // 转为json + JSONObject dataObject = JSONObject.parseObject(desencrypt); + //支付完成 + if (dataObject.getIntValue("respcode") == 2) { + //订单编号 + String ordersn = dataObject.getString("ordernumber"); + //查找订单并更新订单状态 + Order order =orderMapper.getOrderByBatchcode(ordersn); + if(order!=null){ //订单存在,理论上应该是存在的 + //查找订单中的商品 + List ordgdlist = orderGoodsDetailMapper.getOrderGoodsDetailByBatchCode(ordersn); + //增加销售记录 + for(OrderGoodsDetail ordg:ordgdlist){ + // 根据goodsislicode 查询 + Goods goods = goodsMapper.getGoodsByIsli(ordg.getGoodsIslicode()); + // 更新订单状态 + Map upgmap = new HashMap(); + upgmap.put("sale_count",goods.getSaleCount()+1); + goodsMapper.updateGoods(upgmap,goods.getId()); + } + //更新订单字段 + Map upmap = new HashMap(); + upmap.put("status",2); + upmap.put("pay_status",2); + upmap.put("paymenttime",new Date()); + upmap.put("payid",dataObject.getString("payorderid")); //支付流水单号 + //更新订单指定字段 + orderMapper.updateOrderStatus(upmap,order.getId()); + } + //订单信息发送至分发系统 + + //买家发票信息等 + //卖家发票 +// $this->payFinishOperate($batchcode); +// $this->invoiceBuyOperate($batchcode); +// $this->invoiceSellerOperate($batchcode); + } + + }catch (Exception ex){ + log.error(ex.getLocalizedMessage()); + } + return 0; + } } diff --git a/src/main/resources/mapper/szwh/OrderMapper.xml b/src/main/resources/mapper/szwh/OrderMapper.xml index 4a1254d..b43b854 100644 --- a/src/main/resources/mapper/szwh/OrderMapper.xml +++ b/src/main/resources/mapper/szwh/OrderMapper.xml @@ -23,7 +23,7 @@ from where id>#{startRs} limit #{pageSize} - ) as mm ORDER BY mm.id DESC; + ) as mm ORDER BY mm.id DESC @@ -39,7 +39,7 @@ SELECT FROM WHERE status=#{status} - AND createtime #{sdate}; + AND createtime #{sdate} ORDER BY id DESC @@ -49,14 +49,12 @@ from - where batchcode=#{batchcode} limit 1; + where batchcode=#{batchcode} limit 1 diff --git a/src/test/java/cn/chjyj/szwh/PayTest.java b/src/test/java/cn/chjyj/szwh/PayTest.java index 5a2dfa9..07fb1a0 100644 --- a/src/test/java/cn/chjyj/szwh/PayTest.java +++ b/src/test/java/cn/chjyj/szwh/PayTest.java @@ -29,4 +29,16 @@ public class PayTest { ex.printStackTrace(); } } + + @Test + public void dedtest(){ + String sckey="gRAZZKiNw0UbTuF9"; + String data ="kfz3sNCvoH6jMGoM7NFwfQuLpuG50zIu-c5DKJcJovqVOUSoy4V9k0M5VOSQd7hiUeiueTnFNBsnASusHRY9IqoH08vXsUoy4GfX69ykRBsWz0lB1DSNyX3QPkP5QOK_o_admPpLAeY9p2MIoSE_00CDzqtaDfHRaAxxQn-3Mf0yJeyHEOTlAY0WX4VlLpsFyQXUJIUvRvzWndaT0PgPYIpUI5NtECpVvlsaHMjeLBWc8AOWcnP_jnY3H6gYFDdg5qP4dehP-eSuRjWnN7tIv98goBMBYvzlSrwL-gx0CYur60CtwxYGVuAmTjspSyPXvpZDYTHbzD_9ifgv2BuyUkHbbny3mkAgm27UOvxqCTwuf7IrZR8olilQXhHvXeIMEg9lhaCYOhczkP-DAqqEF9LgirGVwJZanyzoOtw03VPyUEBgB_dvZthpi_Gbv-CBRTyf8dNX23PkXumuxou0EnVGMpU0N0JxWu87ZTs43XkJ7uE5n_FpsFbgLJA2i9tO3PsBBl80XJ9QeKmeCkMIsqHqLw0vFUVSoTUd8iD8oQ8HUEDvGfQ1JvCsHqWXPw-NCtSxR6G3pxaR17Yj90Vbs92e4jG55Bf-vTLv8eTB6rig3hYaDiFkvexnkT5vXKdFZqhgQfCS4IwXJf5jvlfFfo21fIZQJiSb2UWQVM5Sq0bFObbGmabGG-6Y7y8R9sLdtVrk1YZqD7m1q65ylZriPKGelz9-leBHSn_Ql62GGgbxJzspidrMA2Mc4oO6_uzX0ybbxNte3GJUtwzPXULVnnHeCvy0WGf98x0DUkKpoVJcSl8VzaJGAV5TRM4hD3gNXygrXrEcN9-0aS0D246gBQFbH_EQOOTq4ddAkhEJInWQS1pRDUuldBbFZl9iAJCNVs41irv7dDyQhpTn1Taqg20G-WmTitHXnmofdQenMtEcYX481Wart6c9W5Lqde2AeOyMXTr5wTXhYNkizEIvtCjmhwaw6TCes18neqQGJTESQ0ed0qWZ_BZ6ndJcmW6skMDc4wyUnDc1OfZXRCZSn_G-UGCFS26JOaRak2ei6AMWihZ2dq63fu1nfJ9rRmxsqfWI2FmWO5Wn75U-cL7XBxLgPPguIKihcNVl_v3r13IZa6CyffUihLeWL5ALBwuojW_RMQPqVDN3ni1tdZELFBb3nXNUA2ibFf1nPsZrFT5vR0Iw4pvcgfY5jhfxYwZK85LeM3CkI6KR1v-b_D_sOJKxavEE0-yhepv1bcvl9i0="; + try{ + String destr = AesEncryption.Desencrypt(data,sckey,sckey); + System.out.println(destr); + }catch (Exception ex){ + ex.printStackTrace(); + } + } } diff --git a/src/test/java/cn/chjyj/szwh/mapper/GoodsMapperTest.java b/src/test/java/cn/chjyj/szwh/mapper/GoodsMapperTest.java index 1e02e4d..6c2ca13 100644 --- a/src/test/java/cn/chjyj/szwh/mapper/GoodsMapperTest.java +++ b/src/test/java/cn/chjyj/szwh/mapper/GoodsMapperTest.java @@ -129,4 +129,12 @@ public class GoodsMapperTest { int ret =goodsMapper.updateGoodsFieldInId("goods_status","2","544"); System.out.println(ret); } + //增加销售记录 + @Test + public void addgoodsSaleCount(){ + Map map = new HashMap(); + map.put("sale_count","sale_count=sale_count+1"); + int x= goodsMapper.updateGoods(map,1); + System.out.println(x); + } } \ No newline at end of file