|
|
@ -1,14 +1,20 @@ |
|
|
package cn.chjyj.szwh.service.impl; |
|
|
package cn.chjyj.szwh.service.impl; |
|
|
|
|
|
|
|
|
|
|
|
import cn.chjyj.szwh.bean.Goods; |
|
|
import cn.chjyj.szwh.bean.Order; |
|
|
import cn.chjyj.szwh.bean.Order; |
|
|
import cn.chjyj.szwh.bean.OrderGoodsDetail; |
|
|
import cn.chjyj.szwh.bean.OrderGoodsDetail; |
|
|
import cn.chjyj.szwh.bean.OrderUser; |
|
|
import cn.chjyj.szwh.bean.OrderUser; |
|
|
|
|
|
import cn.chjyj.szwh.mapper.GoodsMapper; |
|
|
import cn.chjyj.szwh.mapper.OrderGoodsDetailMapper; |
|
|
import cn.chjyj.szwh.mapper.OrderGoodsDetailMapper; |
|
|
import cn.chjyj.szwh.mapper.OrderMapper; |
|
|
import cn.chjyj.szwh.mapper.OrderMapper; |
|
|
import cn.chjyj.szwh.mapper.OrderUserMapper; |
|
|
import cn.chjyj.szwh.mapper.OrderUserMapper; |
|
|
import cn.chjyj.szwh.service.PayService; |
|
|
import cn.chjyj.szwh.service.PayService; |
|
|
import cn.chjyj.szwh.utils.SzwhApiUtils; |
|
|
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.lang3.StringUtils; |
|
|
|
|
|
import org.apache.commons.logging.Log; |
|
|
|
|
|
import org.apache.commons.logging.LogFactory; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
@ -20,12 +26,16 @@ import java.util.*; |
|
|
@Service |
|
|
@Service |
|
|
@Transactional |
|
|
@Transactional |
|
|
public class PayServiceImpl implements PayService { |
|
|
public class PayServiceImpl implements PayService { |
|
|
|
|
|
private static Log log = LogFactory.getLog(PayServiceImpl.class); |
|
|
@Autowired |
|
|
@Autowired |
|
|
private OrderMapper orderMapper; |
|
|
private OrderMapper orderMapper; |
|
|
@Autowired |
|
|
@Autowired |
|
|
private OrderUserMapper orderUserMapper; |
|
|
private OrderUserMapper orderUserMapper; |
|
|
@Autowired |
|
|
@Autowired |
|
|
private OrderGoodsDetailMapper orderGoodsDetailMapper; |
|
|
private OrderGoodsDetailMapper orderGoodsDetailMapper; |
|
|
|
|
|
//商品信息
|
|
|
|
|
|
@Autowired |
|
|
|
|
|
private GoodsMapper goodsMapper; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 关闭七日以前的已经支付了的订单 |
|
|
* 关闭七日以前的已经支付了的订单 |
|
|
@ -42,6 +52,11 @@ public class PayServiceImpl implements PayService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 订单支付完成后的操作 |
|
|
|
|
|
* @param batchcode |
|
|
|
|
|
* @return |
|
|
|
|
|
*/ |
|
|
@Override |
|
|
@Override |
|
|
public int payFinishOperate(String batchcode) { |
|
|
public int payFinishOperate(String batchcode) { |
|
|
//获取订单信息
|
|
|
//获取订单信息
|
|
|
@ -110,4 +125,63 @@ public class PayServiceImpl implements PayService { |
|
|
} |
|
|
} |
|
|
return 0; |
|
|
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<OrderGoodsDetail> 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; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|