订单分账逻辑

This commit is contained in:
2023-08-26 16:41:59 +08:00
parent 37b5eb7a51
commit 3c6ff40d8d
4 changed files with 143 additions and 24 deletions

View File

@@ -13,6 +13,7 @@ import com.jsowell.adapay.common.DivMember;
import com.jsowell.adapay.config.AbstractAdapayConfig;
import com.jsowell.adapay.dto.*;
import com.jsowell.adapay.factory.AdapayConfigFactory;
import com.jsowell.adapay.operation.PaymentConfirmOperation;
import com.jsowell.adapay.response.*;
import com.jsowell.adapay.vo.*;
import com.jsowell.common.constant.CacheConstants;
@@ -785,13 +786,51 @@ public class AdapayService {
return null;
}
/**
* 创建交易确认请求/创建分账请求
* 这个方法只适用于给一个用户分账
*/
public PaymentConfirmResponse createPaymentConfirmRequest(PaymentConfirmOperation operation) {
// 调汇付的分账接口 确认交易
Map<String, Object> confirmParams = Maps.newHashMap();
// Adapay生成的支付对象id
confirmParams.put("payment_id", operation.getPaymentId());
// 请求订单号只能为英文、数字或者下划线的一种或多种组合保证在app_id下唯一
confirmParams.put("order_no", "PC" + System.currentTimeMillis());
// 确认金额必须大于0保留两位小数点如0.10、100.05等。必须小于等于原支付金额-已确认金额-已撤销金额。
String amount = AdapayUtil.formatAmount(operation.getConfirmAmt());
confirmParams.put("confirm_amt", amount);
// 附加说明
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderCode", operation.getOrderCode());
jsonObject.put("adapayMemberId", operation.getAdapayMemberId());
confirmParams.put("description", jsonObject.toJSONString());
// 分账对象信息 一次最多7个
DivMember divMember = new DivMember();
divMember.setMember_id(operation.getAdapayMemberId());
divMember.setAmount(amount);
divMember.setFee_flag(Constants.Y);
confirmParams.put("div_members", Lists.newArrayList(divMember));
Map<String, Object> paymentConfirm = null;
try {
paymentConfirm = PaymentConfirm.create(confirmParams, operation.getMerchantKey());
} catch (BaseAdaPayException e) {
log.error("创建交易确认请求error", e);
}
String jsonString = JSON.toJSONString(paymentConfirm);
log.info("调分账接口param:{}, result:{}", JSON.toJSONString(confirmParams), jsonString);
return JSONObject.parseObject(jsonString, PaymentConfirmResponse.class);
}
/**
* 创建交易确认请求/创建分账请求
* 这个方法只适用于给一个用户分账
*
* @param paymentId 支付对象id
* @param adapayMemberAccount 收到该的汇付会员信息
* @param adapayMemberAccount 收到该的汇付会员信息
* @param confirmAmt 确认的金额
* @param orderCode 订单编号
*/