From 82a9d1cdbca11495b51e0faf59d829123a44ec98 Mon Sep 17 00:00:00 2001 From: Hawking Date: Mon, 29 May 2023 23:26:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85Adapay=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/adapay/model/PaymentConfirm.java | 68 +++++++++++++ .../ghy/common/adapay/model/PaymentDTO.java | 96 +++++++++++++++++-- .../ghy/payment/domain/PaymentRelation.java | 28 ++++++ .../com/ghy/payment/mapper/PaymentMapper.java | 5 +- .../ghy/payment/service/AdapayService.java | 5 +- 5 files changed, 191 insertions(+), 11 deletions(-) create mode 100644 ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentConfirm.java create mode 100644 ghy-payment/src/main/java/com/ghy/payment/domain/PaymentRelation.java diff --git a/ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentConfirm.java b/ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentConfirm.java new file mode 100644 index 00000000..f4c456bc --- /dev/null +++ b/ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentConfirm.java @@ -0,0 +1,68 @@ +package com.ghy.common.adapay.model; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; + +/** + * 支付确认对象 + * https://docs.adapay.tech/api/trade.html#payment-confirm-object + */ +@Data +public class PaymentConfirm { + + private String id; + + @JSONField(name = "order_no") + private String orderNo; + + /** + * 创建时的时间戳(Adapay) + */ + @JSONField(name = "created_time") + private String createdTime; + + /** + * 确认金额 + */ + @JSONField(name = "confirm_amt") + private String confirmAmt; + + /** + * 原支付对象已确认金额 + */ + @JSONField(name = "confirmed_amt") + private String confirmedAmt; + + /** + * 原支付对象已撤销金额,包括已撤销完成金额和撤销处理中的金额 + */ + @JSONField(name = "reserved_amt") + private String reservedAmt; + + /** + * 当前支付确认对象已退款金额,包括已退款完成金额和退款处理中的金额 + */ + @JSONField(name = "refunded_amt") + private String refundedAmt; + + /** + * 支付确认手续费金额 + */ + @JSONField(name = "fee_amt") + private String feeAmt; + + @JSONField(name = "fee_mode") + private String feeMode; + + @JSONField(name = "description") + private String description; + + @JSONField(name = "prod_mode") + private String prodMode; + + @JSONField(name = "app_id") + private String appId; + + @JSONField(name = "status") + private String status; +} diff --git a/ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentDTO.java b/ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentDTO.java index 78942673..db5ef7dd 100644 --- a/ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentDTO.java +++ b/ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentDTO.java @@ -1,27 +1,76 @@ package com.ghy.common.adapay.model; import com.alibaba.fastjson.annotation.JSONField; -import com.huifu.adapay.model.Payment; import lombok.Data; -import lombok.EqualsAndHashCode; import java.time.LocalDateTime; @Data -@EqualsAndHashCode(callSuper = true) -public class PaymentDTO extends Payment { +public class PaymentDTO { /** - * 用户账单上的商户订单号 + * Adapay 生成的支付对象 id */ + @JSONField(name = "id") + private String id; + + /** + * 请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一 + */ + @JSONField(name = "order_no") + private String orderNo; + + @JSONField(name = "prod_mode") + private String prodMode; + + /** + * 支付模式,delay: 延时分账模式;值为空时,表示实时分账。 + */ + @JSONField(name = "pay_mode") + private String payMode; + + @JSONField(name = "app_id") + private String appId; + + @JSONField(name = "pay_channel") + private String payChannel; + @JSONField(name = "party_order_id") private String partyOrderId; + @JSONField(name = "query_url") + private String queryUrl; + + @JSONField(name = "reason") + private String reason; + /** * 当前交易状态 + * pending 交易处理中 + * succeeded 交易成功 + * failed 交易失败 */ + @JSONField(name = "status") private String status; + /** + * 若为微信渠道,则为微信openid,若为支付宝渠道,则为buyerid + */ + @JSONField(name = "open_id") + private String openId; + + /** + * 交易金额 + */ + @JSONField(name = "pay_amt") + private String payAmt; + + /** + * 优惠金额 + */ + @JSONField(name = "discount_amt") + private String discountAmt; + /** * 手续费 */ @@ -29,7 +78,42 @@ public class PaymentDTO extends Payment { private String feeAmt; /** - * 支付时间 + * 若为延时分账时,已发起支付确认的总金额 + */ + @JSONField(name = "confirmed_amt") + private String confirmedAmt; + + /** + * 若为延时分账时,已发起支付撤销的总金额 + */ + @JSONField(name = "reserved_amt") + private String reservedAmt; + + /** + * 若为实时分账时,已发起退款的总金额 + */ + @JSONField(name = "refunded_amt") + private String refundedAmt; + + /** + * 创建时间(Adapay) + */ + @JSONField(name = "created_time") + private String createdTime; + + /** + * 用户支付完成时间(Adapay) + */ + @JSONField(name = "end_time") + private String endTime; + + /** + * 用户支付完成时间(我方生成) */ private LocalDateTime payTime; + + /** + * 更新时间(我方生成/更新) + */ + private LocalDateTime updateTime; } diff --git a/ghy-payment/src/main/java/com/ghy/payment/domain/PaymentRelation.java b/ghy-payment/src/main/java/com/ghy/payment/domain/PaymentRelation.java new file mode 100644 index 00000000..fce5f177 --- /dev/null +++ b/ghy-payment/src/main/java/com/ghy/payment/domain/PaymentRelation.java @@ -0,0 +1,28 @@ +package com.ghy.payment.domain; + +import lombok.Data; + +/** + * 支付单关联表 + */ +@Data +public class PaymentRelation { + + /** + * 支付ID + */ + private String paymentId; + + /** + * 关联ID + */ + private Long relationId; + + /** + * 关联ID类型 + * financial_master: 主财务单 + * financial_change: 加价单 + * order_add: 订单追加单 + */ + private String relationIdType; +} diff --git a/ghy-payment/src/main/java/com/ghy/payment/mapper/PaymentMapper.java b/ghy-payment/src/main/java/com/ghy/payment/mapper/PaymentMapper.java index 96944f80..9b3979c0 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/mapper/PaymentMapper.java +++ b/ghy-payment/src/main/java/com/ghy/payment/mapper/PaymentMapper.java @@ -1,7 +1,6 @@ package com.ghy.payment.mapper; import com.ghy.common.adapay.model.PaymentDTO; -import com.huifu.adapay.model.Payment; /** * 支付记录 Mapper @@ -10,9 +9,9 @@ import com.huifu.adapay.model.Payment; */ public interface PaymentMapper { - int insertPayment(Payment payment); + int insertPayment(PaymentDTO payment); - int updatePayment(Payment payment); + int updatePayment(PaymentDTO payment); PaymentDTO selectById(String id); } diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/AdapayService.java b/ghy-payment/src/main/java/com/ghy/payment/service/AdapayService.java index d41249c7..3ec635ae 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/AdapayService.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/AdapayService.java @@ -8,6 +8,7 @@ import com.ghy.common.adapay.model.*; import com.ghy.common.enums.RefundType; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.model.*; +import com.huifu.adapay.model.PaymentConfirm; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -91,9 +92,9 @@ public class AdapayService { * * @param deptId [必填]商户ID * @param paymentId [必填] String(64) Adapay生成的支付对象id - * @return 支付对象 + * @return 支付对象 https://docs.adapay.tech/api/trade.html#id21 */ - public JSONObject paymentList(@NotNull Long deptId, @NotNull String paymentId) { + public JSONObject paymentList(@NotNull Long deptId, String paymentId) { try { // 获取商户的appId String appId = AdapayConfig.getAppId(deptId);