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

namespace LifePayment.Domain
{
    public class FundTransUniTransferInput
    {
        /// <summary>
        /// 商户端的唯一订单号,对于同一笔转账请求,商户需保证该订单号唯一。
        /// </summary>
        [JsonProperty("out_biz_no", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string OutBizNo
        {
            get;
            set;
        }

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

        /// <summary>
        /// 产品码,单笔无密转账到银行卡固定为TRANS_BANKCARD_NO_PWD
        /// </summary>
        [JsonProperty("product_code", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string ProductCode
        {
            get;
            set;
        }

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

        /// <summary>
        /// Participant类型,付款方信息
        /// </summary>
        [JsonProperty("payer_info", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public Participant PayerInfo
        {
            get;
            set;
        }
        /// <summary>
        /// C2C现金红包-红包领取时,必传此字段。传红包支付时返回的支付宝单号;B2C现金红包、单笔无密转账到支付宝不需要该参数。
        /// </summary>
        [JsonProperty("original_order_id", NullValueHandling = NullValueHandling.Ignore)]
        public string OriginalOrderId
        {
            get;
            set;
        }

        /// <summary>
        /// 业务场景,单笔无密转账到银行卡固定为DIRECT_TRANSFER
        /// </summary>
        [JsonProperty("biz_scene", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string BizScene
        {
            get;
            set;
        }

        /// <summary>
        /// 转账业务的标题,用于在支付宝用户的账单里显示。
        /// </summary>
        [JsonProperty("order_title", NullValueHandling = NullValueHandling.Ignore)]
        [Required]
        public string OrderTitle
        {
            get;
            set;
        }

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

        /// <summary>
        /// 转账业务请求的扩展参数,支持传入的扩展参数如下:
        /// 1)withdraw_timeliness为转账到银行卡的预期到账时间,可选(不传入则默认为T1),T0表示预期T+0到账,T1表示预期T+1到账,到账时效受银行机构处理影响,支付宝无法保证一定是T0或者T1到账;
        /// 2)sub_merchant_info为二级商户信息,可选,对应值为json字符串(subMerchantName是二级商户企业名称、subMerchantMCC是二级商户MCC行业码)
        /// </summary>
        [JsonProperty("business_params", NullValueHandling = NullValueHandling.Ignore)]
        public string BusinessParams
        {
            get;
            set;
        }
    }
}