mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-19 18:45:03 +08:00
实时分账
This commit is contained in:
@@ -51,10 +51,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -996,6 +993,54 @@ public class AdapayService {
|
|||||||
return JSONObject.parseObject(jsonString, PaymentConfirmResponse.class);
|
return JSONObject.parseObject(jsonString, PaymentConfirmResponse.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建交易确认请求/创建分账请求
|
||||||
|
* 这个方法只适用于多用户分账
|
||||||
|
*
|
||||||
|
* @param paymentId 支付对象id
|
||||||
|
* @param adapayMemberAccounts 收到该账的汇付会员信息
|
||||||
|
* @param confirmAmt 确认的金额
|
||||||
|
* @param orderCode 订单编号
|
||||||
|
*/
|
||||||
|
public PaymentConfirmResponse createPaymentConfirmRequestMultiuser(String paymentId, List<DivMember> adapayMemberAccounts, BigDecimal confirmAmt, String orderCode, String wechatAppId) {
|
||||||
|
// 调汇付的分账接口 确认交易
|
||||||
|
Map<String, Object> confirmParams = Maps.newHashMap();
|
||||||
|
// Adapay生成的支付对象id
|
||||||
|
confirmParams.put("payment_id", paymentId);
|
||||||
|
// 请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一
|
||||||
|
confirmParams.put("order_no", IdUtils.get16UUID("PC"));
|
||||||
|
// 确认金额,必须大于0,保留两位小数点,如0.10、100.05等。必须小于等于原支付金额-已确认金额-已撤销金额。
|
||||||
|
confirmParams.put("confirm_amt", AdapayUtil.formatAmount(confirmAmt));
|
||||||
|
// 参与分账的会员列表
|
||||||
|
List<String> collect = adapayMemberAccounts.stream().map(DivMember::getMember_id).collect(Collectors.toList());
|
||||||
|
// 附加说明
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.put("orderCode", orderCode);
|
||||||
|
jsonObject.put("adapayMemberIds", StringUtils.join(collect, ","));
|
||||||
|
confirmParams.put("description", jsonObject.toJSONString());
|
||||||
|
// 分账对象信息 一次最多7个
|
||||||
|
// DivMember divMember = new DivMember();
|
||||||
|
// divMember.setMember_id(adapayMemberAccount.getAdapayMemberId());
|
||||||
|
// divMember.setAmount(AdapayUtil.formatAmount(confirmAmt));
|
||||||
|
// divMember.setFee_flag(Constants.Y);
|
||||||
|
if (adapayMemberAccounts.size() > 7) {
|
||||||
|
throw new BusinessException("", "分账人数不能超过7人");
|
||||||
|
}
|
||||||
|
confirmParams.put("div_members", adapayMemberAccounts);
|
||||||
|
Map<String, Object> paymentConfirm = null;
|
||||||
|
try {
|
||||||
|
paymentConfirm = PaymentConfirm.create(confirmParams, wechatAppId);
|
||||||
|
} catch (BaseAdaPayException e) {
|
||||||
|
log.error("创建交易确认请求error", e);
|
||||||
|
}
|
||||||
|
String jsonString = JSON.toJSONString(paymentConfirm);
|
||||||
|
log.info("调分账接口param:{}, result:{}", JSON.toJSONString(confirmParams), jsonString);
|
||||||
|
|
||||||
|
// 删除支付确认信息缓存
|
||||||
|
redisCache.deleteObject(CacheConstants.PAYMENT_CONFIRM_LIST + paymentId);
|
||||||
|
return JSONObject.parseObject(jsonString, PaymentConfirmResponse.class);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建余额支付请求
|
* 创建余额支付请求
|
||||||
* 汇付余额转账
|
* 汇付余额转账
|
||||||
|
|||||||
@@ -1451,7 +1451,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 延迟交易订单 交易确认
|
* 延迟交易订单 交易确认
|
||||||
*
|
* 订单分账
|
||||||
* @param orderBasicInfo 订单
|
* @param orderBasicInfo 订单
|
||||||
* @param adapayMemberAccount 结算账户
|
* @param adapayMemberAccount 结算账户
|
||||||
*/
|
*/
|
||||||
@@ -1478,9 +1478,6 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
|
|
||||||
List<String> paymentIds = paymentInfos.stream().map(PaymentInfo::getPaymentId).collect(Collectors.toList());
|
List<String> paymentIds = paymentInfos.stream().map(PaymentInfo::getPaymentId).collect(Collectors.toList());
|
||||||
|
|
||||||
// 查询该笔订单的支付交易回调
|
|
||||||
// AdapayCallbackRecord adapayCallbackRecord = selectAdapayCallbackRecordByPaymentId(paymentInfos.get(0).getPaymentId());
|
|
||||||
|
|
||||||
// 支付id
|
// 支付id
|
||||||
String paymentId = paymentInfos.get(0).getPaymentId();
|
String paymentId = paymentInfos.get(0).getPaymentId();
|
||||||
|
|
||||||
@@ -1504,6 +1501,24 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单实时分账方法
|
||||||
|
*/
|
||||||
|
public OrderSettleResult doPaymentConfirmWithRealTime(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException {
|
||||||
|
// 订单编号
|
||||||
|
String orderCode = orderBasicInfo.getOrderCode();
|
||||||
|
// 订单结算金额
|
||||||
|
BigDecimal settleAmount = orderBasicInfo.getSettleAmount();
|
||||||
|
// 查询订单支付记录
|
||||||
|
List<OrderPayRecord> orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderCode);
|
||||||
|
// 选出需要分账的支付id
|
||||||
|
List<PaymentInfo> paymentInfos = Lists.newArrayList();
|
||||||
|
for (OrderPayRecord orderPayRecord : orderPayRecordList) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验订单分账金额
|
* 校验订单分账金额
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user