using Newtonsoft.Json;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace LifePayment.Domain
{
    public class FundBatchUniTransferInput
    {
        /// <summary>
        /// 商户的批次号
        /// </summary>
        [JsonProperty("out_batch_no", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string OutBatchNo
        {
            set;
            get;
        }

        /// <summary>
        /// 销售产品码,商家和支付宝签约的产品码
        /// </summary>
        [JsonProperty("product_code", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string ProductCode
        {
            set;
            get;
        }


        /// <summary>
        /// 业务场景。不同场景值不同,具体值联系支付宝确认。	MESSAGE_BATCH_PAY
        /// </summary>
        [JsonProperty("biz_scene", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string BizScene
        {
            set;
            get;
        }

        /// <summary>
        /// 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,9999999999999.99]
        /// </summary>
        [JsonProperty("total_trans_amount", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public double TotaltransAmount
        {
            set;
            get;
        }


        /// <summary>
        /// 批次总笔数
        /// </summary>
        [JsonProperty("total_count", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string TotalCount
        {
            set;
            get;
        }

        /// <summary>
        /// 付款方信息
        /// </summary>
        [JsonProperty("payer_info", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public Participant PayerInfo
        {
            set;
            get;
        }

        /// <summary>
        /// 收款信息列表
        /// </summary>
        [JsonProperty("trans_order_list", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public List<TransOrderDetail> TransOrderList
        {
            set;
            get;
        }

        /// <summary>
        /// 转账备注
        /// </summary>
        [JsonProperty("remark", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string Remark
        {
            set;
            get;
        }



        /// <summary>
        /// 支付绝对超时时间,格式为yyyy-MM-dd HH:mm
        /// </summary>
        [JsonProperty("time_expire", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string TimeExpire
        {
            set;
            get;
        }


        /// <summary>
        /// JSON格式,传递业务扩展参数,使用前请与支付宝工程师联系! {"agreement_no":"2019000000000"} 授权协议号
        /// </summary>
        [JsonProperty("business_params", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string BusinessParams
        {
            set;
            get;
        }
    }

    public class TransOrderDetail
    {

        /// <summary>
        /// 商户订单号
        /// </summary>
        [JsonProperty("out_biz_no", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string OutBizNo
        {
            set;
            get;
        }

        /// <summary>
        /// 转账金额
        /// </summary>
        [JsonProperty("trans_amount", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string TransAmount
        {
            set;
            get;
        }

        /// <summary>
        /// 收款方信息
        /// </summary>
        [JsonProperty("payee_info", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public Participant PayeeInfo
        {
            set;
            get;
        }

        /// <summary>
        /// 转账订单的标题,用于在收银台和消费记录展示
        /// </summary>
        [JsonProperty("order_title", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string OrderTitle
        {
            set;
            get;
        }

        /// <summary>
        /// 转账备注,收、付款方均可见,收款方如果是支付宝账号,会展示在收款方账单里。
        /// </summary>
        [JsonProperty("remark", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string Remark
        {
            set;
            get;
        }
    }



}