|
|
@@ -3,27 +3,47 @@ package org.springblade.pay.tonglianPayment.service.impl;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
+import org.springblade.client.entity.CorpsDesc;
|
|
|
+import org.springblade.client.entity.FeesDesc;
|
|
|
import org.springblade.client.entity.GoodsDesc;
|
|
|
+import org.springblade.client.feign.ICorpsDescClient;
|
|
|
+import org.springblade.client.feign.IFeesDescClient;
|
|
|
import org.springblade.client.feign.IGoodsDescClient;
|
|
|
+import org.springblade.client.feign.ISerialClient;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.finance.dto.ApplyDTO;
|
|
|
+import org.springblade.finance.feign.IFinanceClient;
|
|
|
+import org.springblade.finance.vojo.Settlement;
|
|
|
import org.springblade.pay.tonglianPayment.entity.Parameters;
|
|
|
+import org.springblade.pay.tonglianPayment.entity.WechatMark;
|
|
|
import org.springblade.pay.tonglianPayment.fegin.ITongLianPaymentClient;
|
|
|
+import org.springblade.pay.tonglianPayment.method.NotifyServlet;
|
|
|
+import org.springblade.pay.tonglianPayment.service.IPaymentService;
|
|
|
+import org.springblade.pay.tonglianPayment.service.IWechatMarkService;
|
|
|
import org.springblade.pay.tonglianPayment.utils.AnalysisMapUtils;
|
|
|
import org.springblade.pay.tonglianPayment.utils.SybPayService;
|
|
|
-import org.springblade.pay.tonglianPayment.service.IPaymentService;
|
|
|
+import org.springblade.pay.tonglianPayment.utils.SybUtil;
|
|
|
import org.springblade.purchase.sales.entity.Order;
|
|
|
import org.springblade.purchase.sales.entity.OrderItems;
|
|
|
import org.springblade.purchase.sales.feign.IOrderDescClient;
|
|
|
import org.springblade.purchase.sales.feign.IOrderItemsClient;
|
|
|
+import org.springblade.stock.entity.StockGoods;
|
|
|
+import org.springblade.stock.feign.IStockGoodsClient;
|
|
|
+import org.springblade.stock.vo.StockGoodsVO;
|
|
|
import org.springblade.system.user.entity.User;
|
|
|
import org.springblade.system.user.feign.IUserClient;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.TreeMap;
|
|
|
+import java.math.MathContext;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* 标书代理信息表 服务实现类
|
|
|
@@ -50,6 +70,21 @@ public class PaymentServiceImpl implements IPaymentService {
|
|
|
|
|
|
private IGoodsDescClient goodsDescClient;
|
|
|
|
|
|
+ private final @NotNull IWechatMarkService wechatMarkService;
|
|
|
+
|
|
|
+ private final @NotNull ICorpsDescClient corpsDescClient;
|
|
|
+
|
|
|
+ private final @NotNull IFeesDescClient feesDescClient;//费用
|
|
|
+
|
|
|
+ private final @NotNull IFinanceClient financeClient;//财务
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成系统编号
|
|
|
+ */
|
|
|
+ private final @NotNull ISerialClient serialClient;
|
|
|
+
|
|
|
+ private final @NotNull IStockGoodsClient stockGoodsClient;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public R getWeChatPayment(Order order) {
|
|
|
@@ -88,7 +123,7 @@ public class PaymentServiceImpl implements IPaymentService {
|
|
|
for (OrderItems goodsVo : res.getData()) {
|
|
|
GoodsDesc goodsDesc = goodsDescClient.getGoodsDescDetail(goodsVo.getItemId());
|
|
|
if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
- if(!"1".equals(goodsDesc.getUpperFrame())){
|
|
|
+ if (!"1".equals(goodsDesc.getUpperFrame())) {
|
|
|
throw new RuntimeException(goodsDesc.getCname() + "-该产品以下架,付款失败");
|
|
|
}
|
|
|
body = body + goodsDesc.getCname() + "、";
|
|
|
@@ -177,6 +212,319 @@ public class PaymentServiceImpl implements IPaymentService {
|
|
|
return R.data("下单失败");
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void notifyMethod(HttpServletRequest request, HttpServletResponse response) {
|
|
|
+ try {
|
|
|
+ //通知传输的编码为GBK
|
|
|
+ request.setCharacterEncoding("UTF-8");
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ response.setCharacterEncoding("UTF-8");
|
|
|
+ TreeMap<String, String> params = NotifyServlet.getParams(request);
|
|
|
+
|
|
|
+ String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
|
|
|
+ logicMethod(request, response);
|
|
|
+ if (Objects.equals(trxstatus, "0000")) {
|
|
|
+ returnMethod(response, AnalysisMapUtils.setXML("SUCCESS", "OK"));
|
|
|
+ } else {
|
|
|
+ returnMethod(response, AnalysisMapUtils.setXML("error", "OK"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void logicMethod(HttpServletRequest request, HttpServletResponse response) {
|
|
|
+ try {
|
|
|
+ //通知传输的编码为GBK
|
|
|
+ request.setCharacterEncoding("UTF-8");
|
|
|
+ response.setCharacterEncoding("UTF-8");
|
|
|
+ TreeMap<String, String> params = NotifyServlet.getParams(request);
|
|
|
+ System.out.println("回调函数数据======》" + params.toString());
|
|
|
+ String appKey;
|
|
|
+
|
|
|
+ WechatMark wechatMark = new WechatMark();
|
|
|
+
|
|
|
+ Parameters parameters = new Parameters();
|
|
|
+ parameters.setAppId(AnalysisMapUtils.getString("appid", params));
|
|
|
+ parameters.setCusId(AnalysisMapUtils.getString("cusid", params));
|
|
|
+ Parameters parametersDetails = tongLianPaymentClient.getParametersDetails(parameters);
|
|
|
+ if (ObjectUtils.isNull(parametersDetails)) {
|
|
|
+ wechatMark.setRemark("未找到租户,异常支付");
|
|
|
+ }
|
|
|
+
|
|
|
+ if ("RSA".equals(params.get("signtype"))) {
|
|
|
+ appKey = parametersDetails.getSybRsacusprikey();
|
|
|
+ } else if ("SM2".equals(params.get("signtype"))) {
|
|
|
+ appKey = parametersDetails.getSybSmtlpubkey();
|
|
|
+ } else {
|
|
|
+ appKey = parametersDetails.getSybMdAppkey();
|
|
|
+ }
|
|
|
+ // 接受到推送通知,首先验签
|
|
|
+ boolean isSign = SybUtil.validSign(params, appKey, params.get("signtype"));
|
|
|
+ System.out.println("验签结果:" + isSign);
|
|
|
+
|
|
|
+ wechatMark.setCreateTime(new Date());
|
|
|
+ wechatMark.setType("支付");
|
|
|
+ if (isSign) {
|
|
|
+ String trxstatus = AnalysisMapUtils.getString("trxstatus", params);
|
|
|
+ if (Objects.equals(trxstatus, "0000")) {
|
|
|
+ wechatMark.setSrcBillNo(AnalysisMapUtils.getString("cusorderid", params));
|
|
|
+ wechatMark.setSerialNumber(AnalysisMapUtils.getString("trxid", params));
|
|
|
+ wechatMark.setAmount(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+
|
|
|
+ //支付成功业务处理
|
|
|
+ Order order = new Order();
|
|
|
+ order.setSysNo(AnalysisMapUtils.getString("cusorderid", params));
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotNull(parametersDetails)) {
|
|
|
+ wechatMark.setTenantId(parametersDetails.getTenantId());
|
|
|
+ order.setTenantId(parametersDetails.getTenantId());
|
|
|
+ } else {
|
|
|
+ wechatMark.setTenantId("000000");
|
|
|
+ order.setTenantId("000000");
|
|
|
+ wechatMark.setRemark("未找到租户,异常支付");
|
|
|
+ }
|
|
|
+
|
|
|
+ Order selectOrder = orderDescClient.getByOrder(order);
|
|
|
+ if (ObjectUtils.isNotNull(selectOrder)) {
|
|
|
+ System.out.println("第一步");
|
|
|
+ selectOrder.setStatus(3);
|
|
|
+ selectOrder.setConfirmStatus(2);
|
|
|
+ selectOrder.setActualPaymentStatus(2);
|
|
|
+ selectOrder.setPaymentAmountTl(new BigDecimal(Objects.requireNonNull(AnalysisMapUtils.getString("trxamt", params))).divide(new BigDecimal(100), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ if (ObjectUtils.isNotNull(selectOrder) && ObjectUtils.isNotNull(selectOrder.getDebitAmount())) {
|
|
|
+ System.out.println("第二步");
|
|
|
+ List<Settlement> settlementList = new ArrayList<>();
|
|
|
+ Settlement settlement = new Settlement();
|
|
|
+ if ("XS".equals(selectOrder.getBillType())) {
|
|
|
+ settlement.setDc("d");
|
|
|
+ settlement.setBillType("收费");
|
|
|
+ } else {
|
|
|
+ settlement.setDc("c");
|
|
|
+ settlement.setBillType("付费");
|
|
|
+ }
|
|
|
+ settlement.setSettlementDate(new Date());
|
|
|
+ settlement.setAccount("微信支付");
|
|
|
+ settlement.setAmount(selectOrder.getPaymentAmountTl());
|
|
|
+ settlement.setOverPayment(new BigDecimal("0.00"));
|
|
|
+ settlementList.add(settlement);
|
|
|
+ selectOrder.setCurrentAmount(selectOrder.getPaymentAmountTl());
|
|
|
+ if ("2".equals(selectOrder.getOrderSource())) {
|
|
|
+ System.out.println("第三步");
|
|
|
+ R<List<OrderItems>> res = orderItemsClient.selectListYCP(selectOrder.getId(), order.getTenantId());
|
|
|
+ if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
|
|
|
+ System.out.println("第三步明细" + res.getData());
|
|
|
+ for (OrderItems orderItems : res.getData()) {
|
|
|
+ System.out.println("第三步明细数据" + orderItems.toString());
|
|
|
+ if ("XS".equals(selectOrder.getBillType())) {
|
|
|
+ orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32));
|
|
|
+ } else {
|
|
|
+ orderItems.setAmount(orderItems.getStorageInQuantity().multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
|
|
|
+ }
|
|
|
+ BigDecimal stockPrice = new BigDecimal("0.00");
|
|
|
+ BigDecimal surplusRouteQuantity = new BigDecimal("0.00");
|
|
|
+ BigDecimal balanceQuantity = new BigDecimal("0.00");
|
|
|
+ BigDecimal balanceAmount = new BigDecimal("0.00");
|
|
|
+ //获取本商品库存
|
|
|
+ R<StockGoodsVO> r = stockGoodsClient.selectStockPartsYCP(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null, order.getTenantId());
|
|
|
+ if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
|
|
|
+ System.out.println("第三步库存" + res.getData());
|
|
|
+ if ("XS".equals(selectOrder.getBillType())) {
|
|
|
+ System.out.println("第三步原库存" + r.getData().getSurplusRouteQuantity());
|
|
|
+ System.out.println("第三步明细数量" + orderItems.getStorageInQuantity());
|
|
|
+ surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
|
|
|
+ balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
|
|
|
+ System.out.println("第三步新库存" + surplusRouteQuantity);
|
|
|
+ if (new BigDecimal("0.00").compareTo(balanceQuantity) <= 0) {
|
|
|
+ balanceAmount = balanceAmount.add(orderItems.getStorageInQuantity().multiply(orderItems.getPurchaseCost(), MathContext.DECIMAL32));
|
|
|
+ System.out.println("第三步新库存金额-01" + balanceAmount);
|
|
|
+ /*if (!new BigDecimal("0.00").equals(balanceAmount) && !new BigDecimal("0.00").equals(balanceQuantity)) {
|
|
|
+ stockPrice = stockPrice.add(balanceAmount.divide(orderItems.getStorageInQuantity(), MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ System.out.println("第三步新库存价-01" + stockPrice + "数量:" + orderItems.getStorageInQuantity());
|
|
|
+ } else {
|
|
|
+ stockPrice = stockPrice.add(balanceAmount);
|
|
|
+ System.out.println("第三步新库存价-02" + stockPrice);
|
|
|
+ }*/
|
|
|
+ } else {
|
|
|
+ balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchaseCost(), MathContext.DECIMAL32));
|
|
|
+ System.out.println("第三步新库存金额-02" + balanceAmount);
|
|
|
+ /*if (!new BigDecimal("0.00").equals(balanceAmount) && !new BigDecimal("0.00").equals(balanceQuantity)) {
|
|
|
+ stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ System.out.println("第三步新库存价-01" + stockPrice + "数量:" + balanceQuantity);
|
|
|
+ } else {
|
|
|
+ stockPrice = stockPrice.add(balanceAmount);
|
|
|
+ System.out.println("第三步新库存价-02" + stockPrice);
|
|
|
+ }*/
|
|
|
+ }
|
|
|
+ System.out.println("第三步新库存价" + stockPrice);
|
|
|
+ r.getData().setOutQuantity(r.getData().getOutQuantity().add(orderItems.getStorageInQuantity()));
|
|
|
+ r.getData().setOutAmount(r.getData().getOutAmount().add(orderItems.getPrice().multiply(orderItems.getStorageInQuantity())));
|
|
|
+ } else {
|
|
|
+ surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
|
|
|
+ balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
|
|
|
+ balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
|
|
|
+ stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
+
|
|
|
+ r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
|
|
|
+ r.getData().setInAmount(r.getData().getInAmount().add(orderItems.getAmount()));
|
|
|
+ }
|
|
|
+ r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
|
|
|
+ r.getData().setBalanceQuantity(balanceQuantity);
|
|
|
+ r.getData().setBalanceAmount(balanceAmount);
|
|
|
+ r.getData().setStockPrice(stockPrice);
|
|
|
+ r.getData().setTenantId(order.getTenantId());
|
|
|
+ boolean a = stockGoodsClient.updateStockYCP(r.getData());
|
|
|
+ System.out.println("第三步库存" + a);
|
|
|
+ } else {
|
|
|
+ StockGoods stockGoods = new StockGoods();
|
|
|
+ if ("CG".equals(selectOrder.getBillType())) {
|
|
|
+ stockGoods.setGoodsId(orderItems.getItemId());
|
|
|
+ stockGoods.setStorageId(orderItems.getStorageId());
|
|
|
+ stockGoods.setPurchasePrice(orderItems.getPrice());
|
|
|
+ stockGoods.setStockPrice(orderItems.getPrice());
|
|
|
+ stockGoods.setBalanceQuantity(orderItems.getStorageInQuantity());
|
|
|
+ stockGoods.setBalanceAmount(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice()));
|
|
|
+ stockGoods.setSurplusRouteQuantity(orderItems.getStorageInQuantity());
|
|
|
+ stockGoods.setTenantId(order.getTenantId());
|
|
|
+ stockGoodsClient.saveStockYCP(stockGoods);
|
|
|
+ } else {
|
|
|
+ stockGoods.setGoodsId(orderItems.getItemId());
|
|
|
+ stockGoods.setStorageId(orderItems.getStorageId());
|
|
|
+ stockGoods.setPurchasePrice(orderItems.getPrice());
|
|
|
+ stockGoods.setStockPrice(orderItems.getPrice());
|
|
|
+ stockGoods.setBalanceQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
|
|
|
+ stockGoods.setBalanceAmount(new BigDecimal("0.00").subtract(stockGoods.getBalanceQuantity().multiply(orderItems.getPrice())));
|
|
|
+ stockGoods.setSurplusRouteQuantity(new BigDecimal("0.00").subtract(orderItems.getStorageInQuantity()));
|
|
|
+ stockGoods.setTenantId(order.getTenantId());
|
|
|
+ stockGoodsClient.saveStockYCP(stockGoods);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,库存加减失败!原因:未查到单据明细信息");
|
|
|
+ wechatMark.setStatus(2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //账单支付处理
|
|
|
+ //获取所属公司中文名
|
|
|
+ if (selectOrder.getBelongToCorpId() != null) {
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessageYCP(selectOrder.getBelongToCorpId(), order.getTenantId());
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
+ selectOrder.setBelongToCorpName(corpMessage.getData().getCname());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //获取客户中文名
|
|
|
+ if (selectOrder.getCorpId() != null) {
|
|
|
+ R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessageYCP(selectOrder.getCorpId(), order.getTenantId());
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
+ selectOrder.setCorpsName(corpMessage.getData().getCname());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ BigDecimal amount = BigDecimal.ZERO;//对账金额 销售订单生成的金额 销售金额-本次使用返利金额+费用明细
|
|
|
+ BigDecimal quantity = BigDecimal.ZERO;//对账数量 数量为 就是轮胎条数的和
|
|
|
+ BigDecimal price = BigDecimal.ZERO;//对账单价
|
|
|
+ ApplyDTO applyDTO = new ApplyDTO();
|
|
|
+ applyDTO.setCompanyid(selectOrder.getBelongToCorpId());
|
|
|
+ applyDTO.setTradeType(selectOrder.getTradeType());
|
|
|
+ applyDTO.setBelongCompany(selectOrder.getBelongToCorpName());
|
|
|
+ applyDTO.setAccDate(selectOrder.getBusinesDate());
|
|
|
+ applyDTO.setPaymentStatus("已支付");
|
|
|
+ applyDTO.setPaymentType("1");
|
|
|
+ if ("CG".equals(selectOrder.getBillType())) {
|
|
|
+ applyDTO.setDc("C");
|
|
|
+ applyDTO.setBillType("付费");
|
|
|
+ } else if ("XS".equals(selectOrder.getBillType())) {
|
|
|
+ applyDTO.setDc("D");
|
|
|
+ applyDTO.setBillType("收费");
|
|
|
+ }
|
|
|
+ applyDTO.setSettlementList(settlementList);
|
|
|
+
|
|
|
+ amount = amount.add(selectOrder.getOrderAmount());
|
|
|
+ quantity = quantity.add(new BigDecimal(1));
|
|
|
+ price = price.add(amount);
|
|
|
+
|
|
|
+ applyDTO.setSrcParentId(selectOrder.getId());
|
|
|
+ applyDTO.setSrcSysno(selectOrder.getSysNo());
|
|
|
+ applyDTO.setItemType(selectOrder.getTradeType());
|
|
|
+ applyDTO.setCorpId(selectOrder.getCorpId());
|
|
|
+ applyDTO.setSrcId(selectOrder.getId());
|
|
|
+ applyDTO.setSrcFeesId(selectOrder.getId());
|
|
|
+ applyDTO.setCurrency("CNY");
|
|
|
+ applyDTO.setExchangeRate(selectOrder.getExchangeRate());
|
|
|
+ applyDTO.setTaxRate(BigDecimal.ZERO);
|
|
|
+ applyDTO.setSrcType(4);
|
|
|
+ applyDTO.setTradeType(selectOrder.getTradeType());
|
|
|
+ applyDTO.setChargeMember(selectOrder.getChargeMember());
|
|
|
+ applyDTO.setUnit("条");
|
|
|
+ applyDTO.setRemarks(selectOrder.getOrderRemark());
|
|
|
+ //获取费用id
|
|
|
+ R<FeesDesc> fees = feesDescClient.getFeesByNameYCP("货款", order.getTenantId());
|
|
|
+ if (fees.isSuccess() && fees.getData() != null) {
|
|
|
+ applyDTO.setCostType(fees.getData().getId().toString());
|
|
|
+ }
|
|
|
+ applyDTO.setSettlementAmount(selectOrder.getSettlmentAmount().add(selectOrder.getPaymentAmountTl()));
|
|
|
+ applyDTO.setQuantity(new BigDecimal(1));
|
|
|
+ applyDTO.setSrcDate(selectOrder.getBusinesDate());
|
|
|
+ applyDTO.setSrcBillNo(selectOrder.getOrderNo());
|
|
|
+ applyDTO.setAccSysNo(selectOrder.getSysNo());
|
|
|
+ applyDTO.setSrcRefno(selectOrder.getSysNo());
|
|
|
+ applyDTO.setRetrieval(selectOrder.getAdvanceCollectionDate());
|
|
|
+ applyDTO.setCorpName(selectOrder.getCorpsName());
|
|
|
+ applyDTO.setAmount(amount);
|
|
|
+ applyDTO.setPrice(price);
|
|
|
+ applyDTO.setQuantity(quantity);
|
|
|
+ applyDTO.setTenantId(order.getTenantId());
|
|
|
+ BigDecimal receivedAmount = selectOrder.getPaymentAmountTl();
|
|
|
+ receivedAmount = receivedAmount.add(selectOrder.getSettlmentAmount());
|
|
|
+ amount = selectOrder.getDebitAmount().subtract(receivedAmount);
|
|
|
+ selectOrder.setSettlmentAmount(receivedAmount);
|
|
|
+ selectOrder.setBalanceAmount(amount);
|
|
|
+ orderDescClient.updateOrderYCP(selectOrder);
|
|
|
+ //生成账单
|
|
|
+ R paymentApply = financeClient.paymentApplyParts(applyDTO);
|
|
|
+ if (!paymentApply.isSuccess()) {
|
|
|
+ wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,账单结算失败!原因:" + paymentApply.getMsg());
|
|
|
+ wechatMark.setStatus(2);
|
|
|
+ } else {
|
|
|
+ wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付成功");
|
|
|
+ wechatMark.setStatus(1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到收款信息,账单结算失败!");
|
|
|
+ wechatMark.setStatus(2);
|
|
|
+ System.out.println("第二步报错");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ wechatMark.setCause(AnalysisMapUtils.getString("cusorderid", params) + "单号支付成功,系统未查到单据信息,账单结算失败!");
|
|
|
+ wechatMark.setStatus(2);
|
|
|
+ System.out.println("第一部步失败");
|
|
|
+ }
|
|
|
+ wechatMarkService.save(wechatMark);
|
|
|
+ } else {
|
|
|
+ //订单编号
|
|
|
+ wechatMark.setCause("订单" + AnalysisMapUtils.getString("cusorderid", params) + "支付失败!" + "原因:" + AnalysisMapUtils.getString("errmsg", params));
|
|
|
+ wechatMark.setStatus(2);
|
|
|
+ wechatMarkService.save(wechatMark);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ wechatMark.setCause("签名验证失败");
|
|
|
+ wechatMark.setStatus(2);
|
|
|
+ wechatMarkService.save(wechatMark);
|
|
|
+ throw new RuntimeException("签名验证失败");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void returnMethod(HttpServletResponse response, String setXML) {
|
|
|
+ try {
|
|
|
+ response.getWriter().write(setXML);
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public static void print(Map<String, String> map) {
|
|
|
System.out.println("返回数据如下:");
|
|
|
if (map != null) {
|