实时分账

This commit is contained in:
Guoqs
2024-09-12 11:31:04 +08:00
parent f7171d7efe
commit 8859858cab
5 changed files with 18 additions and 29 deletions

View File

@@ -1,5 +1,6 @@
package com.jsowell.adapay.common; package com.jsowell.adapay.common;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -10,14 +11,18 @@ import lombok.Setter;
@Setter @Setter
public class DivMember { public class DivMember {
// 分账用户 Member对象 的 id若是商户本身时传入0 // 分账用户 Member对象 的 id若是商户本身时传入0
private String member_id; @JsonProperty(value = "member_id")
private String memberId;
// 分账金额精确到分如0.501.00等,分账总金额必须等于主交易金额,金额不能为0.00 // 分账金额精确到分如0.501.00等,分账总金额必须等于主交易金额,金额不能为0.00
@JsonProperty(value = "amount")
private String amount; private String amount;
// 是否手续费承担方N-否Y-是,手续费承担方有且只能有一个 // 是否手续费承担方N-否Y-是,手续费承担方有且只能有一个
private String fee_flag; @JsonProperty(value = "fee_flag")
private String feeFlag;
// 控制台 主页面应用的app_id不上送默认取商户自身app_id // 控制台 主页面应用的app_id不上送默认取商户自身app_id
private String app_id; @JsonProperty(value = "app_id")
private String appId;
} }

View File

@@ -975,9 +975,9 @@ public class AdapayService {
confirmParams.put("description", jsonObject.toJSONString()); confirmParams.put("description", jsonObject.toJSONString());
// 分账对象信息 一次最多7个 // 分账对象信息 一次最多7个
DivMember divMember = new DivMember(); DivMember divMember = new DivMember();
divMember.setMember_id(adapayMemberAccount.getAdapayMemberId()); divMember.setMemberId(adapayMemberAccount.getAdapayMemberId());
divMember.setAmount(AdapayUtil.formatAmount(confirmAmt)); divMember.setAmount(AdapayUtil.formatAmount(confirmAmt));
divMember.setFee_flag(Constants.Y); divMember.setFeeFlag(Constants.Y);
confirmParams.put("div_members", Lists.newArrayList(divMember)); confirmParams.put("div_members", Lists.newArrayList(divMember));
Map<String, Object> paymentConfirm = null; Map<String, Object> paymentConfirm = null;
try { try {
@@ -1012,7 +1012,7 @@ public class AdapayService {
// 确认金额必须大于0保留两位小数点如0.10、100.05等。必须小于等于原支付金额-已确认金额-已撤销金额。 // 确认金额必须大于0保留两位小数点如0.10、100.05等。必须小于等于原支付金额-已确认金额-已撤销金额。
confirmParams.put("confirm_amt", AdapayUtil.formatAmount(confirmAmt)); confirmParams.put("confirm_amt", AdapayUtil.formatAmount(confirmAmt));
// 参与分账的会员列表 // 参与分账的会员列表
List<String> collect = adapayMemberAccounts.stream().map(DivMember::getMember_id).collect(Collectors.toList()); List<String> collect = adapayMemberAccounts.stream().map(DivMember::getMemberId).collect(Collectors.toList());
// 附加说明 // 附加说明
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("orderCode", orderCode); jsonObject.put("orderCode", orderCode);

View File

@@ -31,7 +31,7 @@ public class StartChargingCommand {
private String connectorCode; private String connectorCode;
/** /**
* 充电金额 * 充电金额(元)
*/ */
private BigDecimal chargeAmount; private BigDecimal chargeAmount;

View File

@@ -17,14 +17,15 @@ import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Objects; import java.util.Objects;
@Slf4j @Slf4j
@Service @Service
public class EBikeSendCommandServiceImpl implements EBikeSendCommandService { public class EBikeSendCommandServiceImpl implements EBikeSendCommandService {
// 过载功率, 单位0.1W, 2450 * 0.1 = 2450W // 过载功率, 单位0.1W
private final int OVER_LOAD_POWER = 2450; private final int OVER_LOAD_POWER = 9000;
/** /**
* 电单车发送启动充电指令 * 电单车发送启动充电指令
@@ -47,8 +48,9 @@ public class EBikeSendCommandServiceImpl implements EBikeSendCommandService {
EBikeMessageCmd82.SpecificData data = new EBikeMessageCmd82.SpecificData(); EBikeMessageCmd82.SpecificData data = new EBikeMessageCmd82.SpecificData();
// 充电模式 // 充电模式
data.setRateMode(3); data.setRateMode(3);
// 余额或有效期 // 余额(分)或有效期
data.setBalanceOrValidity(1234); int balance = command.getChargeAmount().multiply(new BigDecimal("100")).intValue();
data.setBalanceOrValidity(balance);
// 端口号 // 端口号
data.setPortNumber(Integer.parseInt(connectorCode)); data.setPortNumber(Integer.parseInt(connectorCode));
// 充电命令 // 充电命令

View File

@@ -3165,24 +3165,6 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
logger.info("订单:{}支付成功, 发送启动指令", dto.getOrderCode()); logger.info("订单:{}支付成功, 发送启动指令", dto.getOrderCode());
} }
/**
* 异步发送预约充电指令
*/
// if (StringUtils.equals(orderInfo.getStartType(), StartTypeEnum.RESERVED.getValue())) {
// ReservationChargingCommand command = ReservationChargingCommand.builder()
// .transactionCode(orderInfo.getTransactionCode())
// .pileSn(orderInfo.getPileSn())
// .connectorCode(orderInfo.getConnectorCode())
// .operation(BytesUtil.bcd2Str(new byte[]{0x01}))
// .reservedStartTime(orderInfo.getReservedStartTime())
// .reservedEndTime(orderInfo.getReservedEndTime())
// .amount(new BigDecimal(Constants.FIVE_HUNDRED))
// .build();
// // 发送预约充电指令
// logger.info("订单:{}支付成功, 发送预约充电指令, command:{}", dto.getOrderCode(), JSON.toJSONString(command));
// pileRemoteService.reservationCharging(command);
// }
if (OrderStatusEnum.STAY_RETROACTIVE_AMOUNT.getValue().equals(orderInfo.getOrderStatus())) { if (OrderStatusEnum.STAY_RETROACTIVE_AMOUNT.getValue().equals(orderInfo.getOrderStatus())) {
// 如果订单状态是待补缴,表示已经停止充电了,需要补缴费用,补缴完成订单状态改为订单完成,设置结算时间 // 如果订单状态是待补缴,表示已经停止充电了,需要补缴费用,补缴完成订单状态改为订单完成,设置结算时间
orderInfo.setOrderStatus(OrderStatusEnum.ORDER_COMPLETE.getValue()); orderInfo.setOrderStatus(OrderStatusEnum.ORDER_COMPLETE.getValue());