package com.yonge.toolset.payment.base.model;

import com.yonge.toolset.payment.base.enums.OpenEnum;
import com.yonge.toolset.payment.base.enums.PayChannelEnum;
import com.yonge.toolset.payment.base.enums.PaymentClientEnum;
import com.yonge.toolset.payment.base.model.callback.ExecutePaymentCallBack;

import java.util.List;
import java.util.Map;

/**
 * 统一支付对象
 *
 * @Author: liweifan
 * @Data: 2022/5/10 15:06
 */
public class Payment extends Base {
    /***
     * 三方支付流水号(请求后才有) 查询订单必传
     * @author liweifan
     * @updateTime 2022/3/31 11:00
     */
    private String id;
    /***
     * 支付订单号(必填) 查询订单必传
     * @author liweifan
     * @updateTime 2022/3/31 11:00
     */
    private String paymentNo;
    /***
     * 原始订单号(可选)
     * @author liweifan
     * @updateTime 2022/3/31 11:00
     */
    private String orderNo;
    /***
     * 商品标题(必填)
     * @author liweifan
     * @updateTime 2022/3/31 11:01
     */
    private String orderTitle;
    /***
     * 商品描述信息(必填)
     * @author liweifan
     * @updateTime 2022/3/31 11:01
     */
    private String orderDesc;
    /***
     * 商品详情（可选）
     * @author liweifan
     * @updateTime 2022/5/12 15:31
     */
    private List<OrderDetil> orderDetils;
    /***
     * 交易金额，必须大于0，保留两位小数点，如0.10、100.05等(必填)
     * @author liweifan
     * @updateTime 2022/3/31 11:01
     */
    private String payAmt;
    /***
     * 订单附加说明(可选)
     * @author liweifan
     * @updateTime 2022/3/31 11:01
     */
    private String description;
    /***
     * 分账对象信息列表(可选)
     * @author liweifan
     * @updateTime 2022/3/31 11:01
     */
    private List<DivMember> divMembers;
    /***
     * 前端设备信息(可选)
     * @author liweifan
     * @updateTime 2022/3/31 11:01
     */
    private DeviceInfo deviceInfo;
    /***
     * 支付渠道额外参数(可选)
     * @author liweifan
     * @updateTime 2022/3/31 11:01
     */
    private Map<String, Object> expend;
    /***
     * 三方拉起支付字符串(请求后才有)
     * @author liweifan
     * @updateTime 2022/5/11 19:27
     */
    private String payInfo;
    /**
     * 支付方法回调对象
     */
    private ExecutePaymentCallBack executePaymentCallBack;

    public Payment(OpenEnum openType, PaymentClientEnum paymentClient, PayChannelEnum payChannel) {
        super(openType, paymentClient, payChannel);
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPaymentNo() {
        return paymentNo;
    }

    public void setPaymentNo(String paymentNo) {
        this.paymentNo = paymentNo;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getOrderTitle() {
        return orderTitle;
    }

    public void setOrderTitle(String orderTitle) {
        this.orderTitle = orderTitle;
    }

    public String getOrderDesc() {
        return orderDesc;
    }

    public void setOrderDesc(String orderDesc) {
        this.orderDesc = orderDesc;
    }

    public String getPayAmt() {
        return payAmt;
    }

    public void setPayAmt(String payAmt) {
        this.payAmt = payAmt;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public List<DivMember> getDivMembers() {
        return divMembers;
    }

    public void setDivMembers(List<DivMember> divMembers) {
        this.divMembers = divMembers;
    }

    public DeviceInfo getDeviceInfo() {
        return deviceInfo;
    }

    public void setDeviceInfo(DeviceInfo deviceInfo) {
        this.deviceInfo = deviceInfo;
    }

    public Map<String, Object> getExpend() {
        return expend;
    }

    public void setExpend(Map<String, Object> expend) {
        this.expend = expend;
    }

    public String getPayInfo() {
        return payInfo;
    }

    public void setPayInfo(String payInfo) {
        this.payInfo = payInfo;
    }

    public List<OrderDetil> getOrderDetils() {
        return orderDetils;
    }

    public void setOrderDetils(List<OrderDetil> orderDetils) {
        this.orderDetils = orderDetils;
    }

    public ExecutePaymentCallBack getExecutePaymentCallBack() {
        return executePaymentCallBack;
    }

    public void setExecutePaymentCallBack(ExecutePaymentCallBack executePaymentCallBack) {
        this.executePaymentCallBack = executePaymentCallBack;
    }
}
