123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- package com.kmall.api.service;
- import com.kmall.api.entity.GoodsGroupOpenDetailVo;
- import com.kmall.api.entity.GoodsGroupOpenVo;
- import com.kmall.api.entity.OrderVo;
- import com.kmall.api.entity.PayerChildOrderRealEntity;
- import com.kmall.api.service.pay.wxpay.WxPayPropertiesBuilder;
- import com.kmall.common.service.FormIdsService;
- import com.kmall.common.utils.DateUtils;
- import com.kmall.common.utils.MapUtils;
- import com.kmall.common.utils.wechat.WechatUtil;
- import org.apache.log4j.Logger;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * 小程序form_id收集Service实现类
- *
- * @author Scott
- * @email
- * @date 2017-12-16 15:32:50
- */
- @Service
- public class ApiPayService {
- private static Logger logger = Logger.getLogger(ApiPayService.class);
- @Autowired
- private ApiOrderService orderService;
- @Autowired
- private FormIdsService formIdsService;
- @Autowired
- private ApiGoodsGroupOpenDetailService apiGoodsGroupOpenDetailService;
- @Autowired
- private ApiGoodsGroupOpenService apiGoodsGroupOpenService;
- @Autowired
- private PayerChildOrderRealService payerChildOrderRealService;
- @Transactional
- public void payPrepay(Map<Object, Object> resultObj, Map<String, Object> resultUn, String nonceStr, List<OrderVo> orderVoList) {
- String prepay_id = MapUtils.getString("prepay_id", resultUn);
- // 先生成paySign 参考https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5
- //resultObj.put("appId", ResourceUtil.getConfigByName("wx.appId"));
- resultObj.put("appId", WxPayPropertiesBuilder.instance().getAppId());
- resultObj.put("timeStamp", DateUtils.timeToStr(System.currentTimeMillis() / 1000, DateUtils.DATE_TIME_PATTERN));
- resultObj.put("nonceStr", nonceStr);
- resultObj.put("package", "prepay_id=" + prepay_id);
- resultObj.put("signType", "MD5");
- //String paySign = WechatUtil.arraySign(resultObj, ResourceUtil.getConfigByName("wx.paySignKey"));
- String paySign = WechatUtil.arraySign(resultObj, WxPayPropertiesBuilder.instance().getPaySignKey());
- resultObj.put("paySign", paySign);
- for (OrderVo orderInfo: orderVoList) {
- // 业务处理
- orderInfo.setPay_id(prepay_id);
- orderInfo.setPay_status(1); // 付款中
- orderService.update(orderInfo);
- PayerChildOrderRealEntity entity = new PayerChildOrderRealEntity();
- entity.setGoodsBizType(orderInfo.getOrderBizType());
- entity.setOrderSn(orderInfo.getOrder_sn());
- entity.setMerchSn(orderInfo.getMerchSn());
- entity.setMerchOrderSn(orderInfo.getMerchOrderSn());
- entity.setPayNo(orderInfo.getPay_id());
- entity.setPayPrice(Integer.parseInt(orderInfo.getActual_price()+""));
- entity.setCreateTime(new Date());
- entity.setModTime(new Date());
- entity.setUserId(Integer.parseInt(orderInfo.getUser_id()+""));
- payerChildOrderRealService.save(entity);//记录微信返回的支付单与子订单信息
- // 保存form_id
- formIdsService.save(orderInfo.getUser_id(), prepay_id, 1);
- }
- }
- @Transactional
- public void notify(String out_trade_no) {
- // 业务处理
- OrderVo orderInfo = orderService.queryObjectByOrderSn(out_trade_no);
- orderInfo.setPay_status(2);
- orderInfo.setPay_time(new Date());
- if (orderInfo.getOrder_status() == 0) {
- orderInfo.setOrder_status(201);
- }
- orderService.update(orderInfo);
- // 处理团购
- if (null != orderInfo.getOrder_type() && orderInfo.getOrder_type().equals("2")) {
- GoodsGroupOpenDetailVo openDetailVo = apiGoodsGroupOpenDetailService.queryObject(orderInfo.getActivity_id());
- if (null != openDetailVo) {
- openDetailVo.setAttend_status(1);
- apiGoodsGroupOpenDetailService.update(openDetailVo);
- }
- GoodsGroupOpenVo openVo = apiGoodsGroupOpenService.queryObject(openDetailVo.getOpen_id());
- openVo.setAttend_num(openVo.getAttend_num() + 1);
- if (openVo.getMin_open_group() <= openVo.getAttend_num()) { // 一人拼团,直接结束
- openVo.setAttend_status(2);
- Map param = new HashMap();
- param.put("open_id", openDetailVo.getOpen_id());
- apiGoodsGroupOpenDetailService.updateComplete(param);
- } else {
- openVo.setAttend_status(1);
- }
- apiGoodsGroupOpenService.update(openVo);
- }
- // 微信通知
- orderService.notifyPaySuccess(orderInfo);
- // 打印机打印
- try {
- orderService.printMsg(orderInfo.getId());
- } catch (Exception e) {
- logger.error("打印机打印异常【" + e.getMessage() + "】");
- }
- }
- @Transactional
- public void refund(OrderVo orderInfo) {
- if (orderInfo.getOrder_status() == 201) {
- orderInfo.setOrder_status(401);
- } else if (orderInfo.getOrder_status() == 300) {
- orderInfo.setOrder_status(402);
- }
- orderInfo.setPay_status(4);
- orderService.update(orderInfo);
- // 是否是团购订单
- if (null != orderInfo.getOrder_type() && orderInfo.getOrder_type().equals("2")) {
- GoodsGroupOpenDetailVo openVo = apiGoodsGroupOpenDetailService.queryObject(orderInfo.getActivity_id());
- if (null != openVo) {
- openVo.setAttend_status(3);
- apiGoodsGroupOpenDetailService.update(openVo);
- }
- }
- }
- }
|