package com.ghy.common.adapay.model;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.time.LocalDateTime;

@Data
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;

    /**
     * 当前交易状态
     * 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;

    /**
     * 手续费
     */
    @JSONField(name = "fee_amt")
    private String feeAmt;

    /**
     * 若为延时分账时，已发起支付确认的总金额
     */
    @JSONField(name = "confirmed_amt")
    private String confirmedAmt;

    /**
     * 若为延时分账时，已发起支付撤销的总金额
     */
    @JSONField(name = "reserved_amt")
    private String reservedAmt;

    /**
     * 若为实时分账时，已发起退款的总金额
     */
    @JSONField(name = "refunded_amt")
    private String refundedAmt;

    /**
     * 现金支付金额
     */
    @JSONField(name = "cash_pay_amt")
    private String cashPayAmt;

    /**
     * 创建时间(Adapay)
     */
    @JSONField(name = "created_time")
    private String createdTime;

    /**
     * 用户支付完成时间(Adapay)
     */
    @JSONField(name = "end_time")
    private String endTime;

    // --------- 以上为Adapay原生字段 ---------
    // --------- 以下为扩展字段 ---------

    private Long deptId;
    private String payStatus;
    private String availableAmt;

    /**
     * 用户支付完成时间
     */
    private LocalDateTime payTime;

    private LocalDateTime updateTime;

    private LocalDateTime createTime;
}
