From bd01807460b8af33d6fa15f096ad9686f530b860 Mon Sep 17 00:00:00 2001 From: HH Date: Fri, 13 May 2022 09:05:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E7=94=A8=E4=BA=8E=E5=BB=B6=E6=97=B6?= =?UTF-8?q?=E5=88=86=E8=B4=A6=E5=9C=BA=E6=99=AF=E7=9A=84=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ghy/common/adapay/AdapayService.java | 40 +++++++++++++++++++ .../com/ghy/common/adapay/model/PayParam.java | 17 +++++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/ghy-common/src/main/java/com/ghy/common/adapay/AdapayService.java b/ghy-common/src/main/java/com/ghy/common/adapay/AdapayService.java index f24dacb6..9cbdbecc 100644 --- a/ghy-common/src/main/java/com/ghy/common/adapay/AdapayService.java +++ b/ghy-common/src/main/java/com/ghy/common/adapay/AdapayService.java @@ -21,6 +21,7 @@ import javax.annotation.Resource; import javax.validation.constraints.NotNull; import java.util.Collection; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -34,6 +35,45 @@ public class AdapayService { @Resource private AdapayProperties adapayProperties; + /** + * 支付确认 + * 适用于延时分账的场景。只有已支付完成且延时分账的Payment对象,才支持调用创建支付确认对象。 + * 支持一次全额或多次部分确认,多次部分确认时,当前确认金额 + 已确认金额 + 已撤销金额不能大于原支付金额。 + * + * @param paymentId [必填] String(64) Adapay生成的支付对象id + * @param orderNo [必填] String(64) 请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一 + * @param confirmAmt [必填] String(14) 确认金额,必须大于0,保留两位小数点,如0.10、100.05等。必须小于等于原支付金额-已确认金额-已撤销金额 + * @return 成功时同步返回一个包含 支付确认对象的JSON https://docs.adapay.tech/api/trade.html#id54 + */ + public Map paymentConfirm(@NotNull String paymentId, @NotNull String orderNo, @NotNull String confirmAmt) throws BaseAdaPayException { + return paymentConfirm(paymentId, orderNo, confirmAmt, null, null, null); + } + + /** + * 支付确认 + * 适用于延时分账的场景。只有已支付完成且延时分账的Payment对象,才支持调用创建支付确认对象。 + * 支持一次全额或多次部分确认,多次部分确认时,当前确认金额 + 已确认金额 + 已撤销金额不能大于原支付金额。 + * + * @param paymentId [必填] String(64) Adapay生成的支付对象id + * @param orderNo [必填] String(64) 请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一 + * @param confirmAmt [必填] String(14) 确认金额,必须大于0,保留两位小数点,如0.10、100.05等。必须小于等于原支付金额-已确认金额-已撤销金额 + * @param description String(128) 附加说明 + * @param feeMode String(1) 手续费收取模式:O-商户手续费账户扣取手续费,I-交易金额中扣取手续费;值为空时,默认值为I;若为O时,分账对象列表中不支持传入手续费承担方 + * @param divMembers 分账对象信息列表,一次请求最多仅支持7个分账方。json对象 形式,详见 分账对象信息列表 + * @return 成功时同步返回一个包含 支付确认对象的JSON https://docs.adapay.tech/api/trade.html#id54 + */ + public Map paymentConfirm(@NotNull String paymentId, @NotNull String orderNo, @NotNull String confirmAmt, + String description, String feeMode, List divMembers) throws BaseAdaPayException { + Map confirmParams = new HashMap<>(); + confirmParams.put("payment_id", paymentId); + confirmParams.put("order_no", orderNo); + confirmParams.put("confirm_amt", confirmAmt); + confirmParams.put("div_members", divMembers); + confirmParams.put("fee_mode", feeMode); + confirmParams.put("description", description); + return PaymentConfirm.create(confirmParams); + } + /** * 创建余额支付请求 * 商户利用该接口进行余额支付,支持同一商户下的商户-用户,用户-商户,用户-用户间的账户余额支付 diff --git a/ghy-common/src/main/java/com/ghy/common/adapay/model/PayParam.java b/ghy-common/src/main/java/com/ghy/common/adapay/model/PayParam.java index b4ba0a93..67955be1 100644 --- a/ghy-common/src/main/java/com/ghy/common/adapay/model/PayParam.java +++ b/ghy-common/src/main/java/com/ghy/common/adapay/model/PayParam.java @@ -60,7 +60,7 @@ public class PayParam { private String feeMode; /** - * 包含所有必填参数的构造器,其它参数按需set + * 包含所有[必填参数]的构造器,其它参数按需set * * @param orderNo [必填项]请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一 * @param payAmt [必填项]交易金额,必须大于0,保留两位小数点,如"0.10"、"100.05" @@ -80,4 +80,19 @@ public class PayParam { String jsonString = JSON.toJSONString(this); return JSON.parseObject(jsonString); } + + /** + * 构造一个延迟分账的支付参数 + * + * @param orderNo [必填项]请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一 + * @param payAmt [必填项]交易金额,必须大于0,保留两位小数点,如"0.10"、"100.05" + * @param goodsTittle [必填项]商品名称 + * @param goodsDesc [必填项]商品描述信息,微信小程序和微信公众号该字段最大长度42个字符 + * @return 支付参数 + */ + public static PayParam createDelayPay(String orderNo, String payAmt, String goodsTittle, String goodsDesc) { + PayParam payParam = new PayParam(orderNo, payAmt, goodsTittle, goodsDesc); + payParam.setPayMode("delay"); + return payParam; + } }