Kaynağa Gözat

//tt 支付

release_toaliyun_real
xhxu 3 yıl önce
ebeveyn
işleme
4f436acb2f
1 değiştirilmiş dosya ile 103 ekleme ve 6 silme
  1. +103
    -6
      mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java

+ 103
- 6
mallinkService/src/main/java/com/iformall/service/pay/service/pay/douyin/miniApp/TtMiniAppPayAdapterService.java Dosyayı Görüntüle

@@ -3,6 +3,7 @@ package com.iformall.service.pay.service.pay.douyin.miniApp;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iformall.common.ErrorCode;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxMerchantVo;
import com.iformall.domain.vo.WxOrderCouponVo;
@@ -14,8 +15,10 @@ import com.iformall.douyin.pay.preOrder.DouYinCreatePreOrder;
import com.iformall.douyin.payv2.request.TtPayUnifiedOrderV2Request;
import com.iformall.douyin.payv2.result.TtPayUnifiedOrderV2Result;
import com.iformall.enums.*;
import com.iformall.mapper.TtMerchantPoiMapper;
import com.iformall.mapper.WxAppinfoMapper;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
import com.iformall.service.order.OrderAdapterService;
import com.iformall.service.order.OrderFactory;
import com.iformall.service.order.entity.WxComposeOrder;
import com.iformall.service.pay.entity.PayExtraParam;
import com.iformall.service.pay.service.pay.CDrivingPayService;
@@ -28,13 +31,14 @@ import com.iformall.utils.MaUtil;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.File;
import java.util.*;

import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.*;

@Slf4j
@Service
@@ -46,17 +50,110 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen
@Autowired
private TtMerchantPoiMapper ttMerchantPoiMapper;

@Autowired
private TtCouponChannelPoiMapper ttCouponChannelPoiMapper;

@Autowired
private WxBatchOrderMapper wxBatchOrderMapper;

@Autowired
private WxOrderMapper wxOrderMapper;

@Autowired
OrderFactory orderFactory;

@Autowired
private MaUtil maUtil;

@Override
public PayAdapterResult pay(WxPayAccount payAccount, WxPayOrder record,WxComposeOrder composeOrder,String productName,EnumPayShare isShare,WxAppinfo appInfo,Date currentDate, PayExtraParam params) throws Exception {
if (null == params ) {
throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"openId为空");
}
String openId = (String) params.getValue("openId");
if (StringUtils.isBlank(openId) ) {
throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"openId为空");
}

throw new Exception("请升级抖音版本");
// throw new Exception("请升级抖音版本");

// 新下单接口
// TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount);
// TtPayUnifiedOrderV2Request request = new TtPayUnifiedOrderV2Request();
TtPayService ttPayService = maUtil.getTtPayService(appInfo, payAccount);
TtPayUnifiedOrderV2Request request = new TtPayUnifiedOrderV2Request();
List<TtPayUnifiedOrderV2Request.Good> goods = new ArrayList<>();

OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(record.getComposeOrder());
List<WxOrder> orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId());
Map<Long, List<WxOrder>> collect = orderList.stream().collect(groupingBy(WxOrder::getCouponChannelId));

Map<String, List<WxOrder>> goodsCollect = new HashMap<>();
for (Long key: collect.keySet()) {
TtPayUnifiedOrderV2Request.Good good = new TtPayUnifiedOrderV2Request.Good();
good.setQuantity(collect.get(key).size());
TtCouponChannelPoi ttCouponChannelPoi = ttCouponChannelPoiMapper.selectByChannelId(appInfo.getTenantId(), key);
good.setGoodsId(ttCouponChannelPoi.getSpuId());
good.setGoodsIdType(1);//poi商品固定传1
goods.add(good);
goodsCollect.put(good.getGoodsId(),collect.get(key));
}

request.setGoodsList(goods);
request.setTotalAmount(composeOrder.getPayment());
request.setOpenId(openId);
request.setOutOrderNo(record.getPayOrderNo());
request.setPayExpireSeconds(15*60);
TtPayUnifiedOrderV2Request.PageEntry pageEntry = new TtPayUnifiedOrderV2Request.PageEntry();
pageEntry.setPath(Constant.mainPageUrl);
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("type","dt");
paramMap.put("orderId",composeOrder.getMainOrderId());
pageEntry.setParams(JSON.toJSONString(paramMap));
request.setOrderEntrySchema(pageEntry);

TtPayUnifiedOrderV2Result orderV2 = ttPayService.createOrderV2(request);

record.setPrepayId(orderV2.getPayOrderId());
record.setTransactionId(orderV2.getOrderId());
record.setUpdateTime(new Date());

JSONObject allExtParam = new JSONObject();
allExtParam.put("order_id",orderV2.getOrderId());
allExtParam.put("total_amount",composeOrder.getPayment());
allExtParam.put("open_id",openId);
WxBatchOrder batchOrder = new WxBatchOrder();
batchOrder.updateTenantInfo(appInfo);
batchOrder.setId(composeOrder.getMainOrderId());
batchOrder.setExtParam(JSON.toJSONString(allExtParam));
wxBatchOrderMapper.updateById(batchOrder);

for (TtPayUnifiedOrderV2Result.ItemOrderInfo itemOrderInfo:orderV2.getItemOrderInfoList()) {
List<WxOrder> wxOrders = goodsCollect.get(itemOrderInfo.getGoodsId());
if(itemOrderInfo.getItemOrderDetail().size() == wxOrders.size()){
for(int i=0;i<wxOrders.size();i++){
WxOrder updOrder = new WxOrder();
updOrder.updateTenantInfo(appInfo);
updOrder.setId(wxOrders.get(i).getId());
updOrder.setExtParam(JSON.toJSONString(itemOrderInfo.getItemOrderDetail().get(i)));
wxOrderMapper.updateById(updOrder);
}
}else if(wxOrders.size() == 1){
WxOrder updOrder = new WxOrder();
updOrder.updateTenantInfo(appInfo);
updOrder.setId(wxOrders.get(0).getId());
updOrder.setExtParam(JSON.toJSONString(itemOrderInfo.getItemOrderDetail()));
wxOrderMapper.updateById(updOrder);
}else{
throw new Exception("下单数据异常");
}
}

PayAdapterResult par = new PayAdapterResult();
par.setSuccess(true);
par.setTransactionId(orderV2.getOrderId());
orderV2.setItemOrderInfoList(null);
par.setData(orderV2);
return par;

//
//
// TtPayUnifiedOrderV2Result result = ttPayService.createOrderV2(request);


Yükleniyor…
İptal
Kaydet