|
|
|
|
@ -3,8 +3,6 @@ package com.czg.service.order.service.impl;
|
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
|
|
import com.czg.account.entity.ShopMerchant;
|
|
|
|
|
import com.czg.account.service.ShopMerchantService;
|
|
|
|
|
import com.czg.entity.notify.CzgPayNotifyDTO;
|
|
|
|
|
import com.czg.entity.notify.CzgRefundNotifyDTO;
|
|
|
|
|
import com.czg.entity.req.*;
|
|
|
|
|
import com.czg.entity.resp.*;
|
|
|
|
|
import com.czg.order.entity.OrderInfo;
|
|
|
|
|
@ -14,11 +12,13 @@ import com.czg.order.service.OrderPaymentService;
|
|
|
|
|
import com.czg.resp.CzgResult;
|
|
|
|
|
import com.czg.service.CzgPayService;
|
|
|
|
|
import com.czg.service.order.dto.OrderPayParamDTO;
|
|
|
|
|
import com.czg.service.order.enums.PayEnums;
|
|
|
|
|
import com.czg.service.order.service.PayService;
|
|
|
|
|
import com.czg.system.enums.SysParamCodeEnum;
|
|
|
|
|
import com.czg.system.service.SysParamsService;
|
|
|
|
|
import com.czg.utils.AssertUtil;
|
|
|
|
|
import jakarta.annotation.Resource;
|
|
|
|
|
import jakarta.validation.constraints.NotBlank;
|
|
|
|
|
import lombok.NonNull;
|
|
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@ -51,9 +51,10 @@ public class PayServiceImpl implements PayService {
|
|
|
|
|
public CzgResult<CzgH5PayResp> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
|
|
|
|
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
|
|
|
|
AssertUtil.isNull(orderInfo, "订单不存在");
|
|
|
|
|
String payOrderNO = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
|
|
|
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNO, "", orderInfo.getOrderAmount()));
|
|
|
|
|
return h5Pay(payParam.getShopId(), new CzgH5PayReq(payOrderNO, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
|
|
|
|
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
|
|
|
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
|
|
|
|
upOrderPayInfo(orderInfo.getId(), PayEnums.H5_PAY.getValue(), payOrderNo);
|
|
|
|
|
return h5Pay(payParam.getShopId(), new CzgH5PayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
|
|
|
|
"点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -62,9 +63,10 @@ public class PayServiceImpl implements PayService {
|
|
|
|
|
public CzgResult<CzgJsPayResp> jsPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
|
|
|
|
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
|
|
|
|
AssertUtil.isNull(orderInfo, "订单不存在");
|
|
|
|
|
String payOrderNO = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
|
|
|
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNO, "", orderInfo.getOrderAmount()));
|
|
|
|
|
return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNO, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
|
|
|
|
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
|
|
|
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
|
|
|
|
upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI.getValue() : PayEnums.WECHAT_MINI.getValue(), payOrderNo);
|
|
|
|
|
return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
|
|
|
|
"点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -72,9 +74,10 @@ public class PayServiceImpl implements PayService {
|
|
|
|
|
public CzgResult<CzgLtPayResp> ltPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
|
|
|
|
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
|
|
|
|
AssertUtil.isNull(orderInfo, "订单不存在");
|
|
|
|
|
String payOrderNO = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
|
|
|
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNO, "", orderInfo.getOrderAmount()));
|
|
|
|
|
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNO, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
|
|
|
|
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
|
|
|
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
|
|
|
|
upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI.getValue() : PayEnums.WECHAT_MINI.getValue(), payOrderNo);
|
|
|
|
|
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
|
|
|
|
"点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -82,19 +85,21 @@ public class PayServiceImpl implements PayService {
|
|
|
|
|
public CzgResult<CzgScanPayResp> scanPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
|
|
|
|
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
|
|
|
|
AssertUtil.isNull(orderInfo, "订单不存在");
|
|
|
|
|
String payOrderNO = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
|
|
|
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNO, "", orderInfo.getOrderAmount()));
|
|
|
|
|
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNO, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
|
|
|
|
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
|
|
|
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
|
|
|
|
upOrderPayInfo(orderInfo.getId(), PayEnums.MAIN_SCAN.getValue(), payOrderNo);
|
|
|
|
|
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
|
|
|
|
"点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public CzgResult<CzgMicroPayResp> microPayOrder(OrderPayParamDTO payParam) {
|
|
|
|
|
public CzgResult<Object> microPayOrder(OrderPayParamDTO payParam) {
|
|
|
|
|
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
|
|
|
|
AssertUtil.isNull(orderInfo, "订单不存在");
|
|
|
|
|
String payOrderNO = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
|
|
|
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNO, payParam.getAuthCode(), orderInfo.getOrderAmount()));
|
|
|
|
|
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNO, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
|
|
|
|
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
|
|
|
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, payParam.getAuthCode(), orderInfo.getOrderAmount()));
|
|
|
|
|
upOrderPayInfo(orderInfo.getId(), PayEnums.BACK_SCAN.getValue(), payOrderNo);
|
|
|
|
|
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
|
|
|
|
"点餐支付", payParam.getAuthCode(), payParam.getBuyerRemark(), payJsonExtParam));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -119,11 +124,18 @@ public class PayServiceImpl implements PayService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void initOrderPayment(OrderPayment payment) {
|
|
|
|
|
paymentService.save(payment);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void upOrderPayInfo(@NonNull Long orderId, @NotBlank String payType, @NotBlank String payOrderNo) {
|
|
|
|
|
orderInfoService.updateChain().of(OrderInfo.class)
|
|
|
|
|
.set(OrderInfo::getPayOrderNo, payOrderNo)
|
|
|
|
|
.set(OrderInfo::getPayType, payType)
|
|
|
|
|
.where(OrderInfo::getId).eq(orderId)
|
|
|
|
|
.update();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private CzgResult<CzgH5PayResp> h5Pay(@NonNull Long shopId, CzgH5PayReq bizData) {
|
|
|
|
|
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
|
|
|
|
@ -134,19 +146,19 @@ public class PayServiceImpl implements PayService {
|
|
|
|
|
|
|
|
|
|
private CzgResult<CzgJsPayResp> jsPay(@NonNull Long shopId, @NonNull String payType, CzgJsPayReq bizData) {
|
|
|
|
|
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
|
|
|
|
AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay" .equals(payType) ? "支付宝" : "微信") + "小程序");
|
|
|
|
|
AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay".equals(payType) ? "支付宝" : "微信") + "小程序");
|
|
|
|
|
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
|
|
|
|
|
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
|
|
|
|
|
bizData.setSubAppid("aliPay" .equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid());
|
|
|
|
|
bizData.setSubAppid("aliPay".equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid());
|
|
|
|
|
return czgPayService.jsPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private CzgResult<CzgLtPayResp> ltPay(@NonNull Long shopId, String payType, CzgLtPayReq bizData) {
|
|
|
|
|
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
|
|
|
|
AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay" .equals(payType) ? "支付宝" : "微信") + "小程序");
|
|
|
|
|
AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay".equals(payType) ? "支付宝" : "微信") + "小程序");
|
|
|
|
|
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
|
|
|
|
|
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
|
|
|
|
|
bizData.setSubAppid("aliPay" .equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid());
|
|
|
|
|
bizData.setSubAppid("aliPay".equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid());
|
|
|
|
|
return czgPayService.ltPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -157,7 +169,8 @@ public class PayServiceImpl implements PayService {
|
|
|
|
|
return czgPayService.scanPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private CzgResult<CzgMicroPayResp> microPay(@NonNull Long shopId, CzgMicroPayReq bizData) {
|
|
|
|
|
private CzgResult<Object> microPay(@NonNull Long shopId, CzgMicroPayReq bizData) {
|
|
|
|
|
CzgResult<Object> result = CzgResult.success();
|
|
|
|
|
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
|
|
|
|
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
|
|
|
|
|
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
|
|
|
|
|
@ -175,8 +188,20 @@ public class PayServiceImpl implements PayService {
|
|
|
|
|
//支付宝支付
|
|
|
|
|
bizData.setSubAppid(shopMerchant.getAlipaySmallAppid());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return czgPayService.microPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
|
|
|
|
CzgResult<CzgMicroPayResp> czgScanPayResult = czgPayService.microPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
|
|
|
|
if (czgScanPayResult.getCode() != 200 || czgScanPayResult.getData() == null) {
|
|
|
|
|
result.setCode(500);
|
|
|
|
|
result.setMsg(czgScanPayResult.getMsg());
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
CzgMicroPayResp data = czgScanPayResult.getData();
|
|
|
|
|
result.setMsg(data.getNote());
|
|
|
|
|
if ("TRADE_SUCCESS".equals(data.getState())) {
|
|
|
|
|
result.setCode(200);
|
|
|
|
|
} else {
|
|
|
|
|
result.setCode(500);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private CzgResult<CzgRefundResp> refund(@NonNull Long shopId, CzgRefundReq bizData) {
|
|
|
|
|
|