using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Central.Control.WebApi.Models.Request
{
    /// <summary>
    /// 支付宝支付回调实体
    /// </summary>
    public class AliPayNotifyRequestDto
    {
        /// <summary>
        /// 通知时间
        /// </summary>
        public DateTime Notify_Time { set; get; }
        /// <summary>
        /// 通知类型trade_status_sync
        /// </summary>
        public string Notify_Type { set; get; }
        /// <summary>
        /// 通知校验 ID
        /// </summary>
        public string Notify_Id { set; get; }
        /// <summary>
        /// 签名类型。
        /// 商户生成签名字符串所使用的签名算法类型
        /// 目前支持 RSA2 和 RSA,推荐使用 RSA2(如果开发者手动验签,不使用 SDK 验签,可以不传此参数)
        /// </summary>
        public string Sign_Type { set; get; }
        /// <summary>
        /// 签名。请参考异步返回结果的验签(如果开发者手动验签,不使用 SDK 验签,可以不传此参数)
        /// </summary>
        public string Sign { set; get; }
        /// <summary>
        /// 支付宝交易号。支付宝交易凭证号
        /// </summary>
        public string Trade_No { set; get; }
        /// <summary>
        /// 开发者的 app_id。支付宝分配给开发者的应用 APPID
        /// </summary>
        public string App_Id { set; get; }
        /// <summary>
        /// 商户订单号
        /// </summary>
        public string Out_Trade_No { set; get; }
        /// <summary>
        /// 商户业务号。商户业务 ID,主要是退款通知中返回退款申请的流水号。(6823789339978248)
        /// </summary>
        public string Out_Biz_No { set; get; }
        /// <summary>
        /// 买家支付宝用户号。买家支付宝账户对应的支付宝唯一用户号。(2088102122524333)
        /// </summary>
        public string Buyer_Id { set; get; }
        /// <summary>
        /// 买家支付宝账号(180****0062)
        /// </summary>
        public string Buyer_Logon_Id { set; get; }
        /// <summary>
        /// 卖家支付宝用户号(2088101106499364)
        /// </summary>
        public string Seller_Id { set; get; }
        /// <summary>
        /// 卖家支付宝账号(zhuzhanghu@alitest.com)
        /// </summary>
        public string Seller_Email { set; get; }
        /// <summary>
        /// 交易状态。咨询目前所处的状态。(TRADE_CLOSED)
        /// </summary>
        public string Trade_Status { set; get; }
        /// <summary>
        /// 订单金额。本次交易支付的订单金额,单位为人民币(元)。支持小数点后两位。
        /// </summary>
        public decimal Total_Amount { set; get; }
        /// <summary>
        /// 实收金额。商户在交易中实际收到的款项,单位为人民币(元)。支持小数点后两位。
        /// </summary>
        public decimal Receipt_Amount { set; get; }
        /// <summary>
        /// 开票金额。用户在交易中支付的可开发票的金额。支持小数点后两位。
        /// </summary>
        public decimal Invoice_Amount { set; get; }
        /// <summary>
        /// 付款金额。用户在咨询中支付的金额。支持小数点后两位。
        /// </summary>
        public decimal Buyer_Pay_Amount { set; get; }
        /// <summary>
        /// 集分宝金额。使用集分宝支付的金额。支持小数点后两位。
        /// </summary>
        public decimal Point_Amount { set; get; }
        /// <summary>
        /// 总退款金额。退款通知中,返回总退款金额,单位为元,支持两位小数。支持小数点后两位。
        /// </summary>
        public decimal Refund_Fee { set; get; }
        /// <summary>
        /// 实际退款金额。商户实际退款给用户的金额,单位为元,支持两位小数。支持小数点后两位。
        /// </summary>
        public decimal Send_Back_Fee { set; get; }
        /// <summary>
        /// 订单标题。商品的标题/交易标题/订单标题/订单关键字等,是请求时对应的参数,原样通知回来。
        /// </summary>
        public string Subject { set; get; }
        /// <summary>
        /// 商品描述。该订单的备注、描述、明细等。对应请求时的 body 参数,原样通知回来。
        /// </summary>
        public string Body { set; get; }
        /// <summary>
        /// 交易创建时间。该笔交易创建的时间。格式 为 yyyy-MM-dd HH:mm:ss。
        /// </summary>
        public DateTime Gmt_Create { set; get; }
        /// <summary>
        /// 交易 付款时间。该笔交易的买家付款时间。格式为 yyyy-MM-dd HH:mm:ss。
        /// </summary>
        public DateTime Gmt_Payment { set; get; }
        /// <summary>
        /// 交易退款时间。该笔交易的退款时间。格式 为 yyyy-MM-dd HH:mm:ss.S。
        /// </summary>
        public DateTime Gmt_Refund { set; get; }
        /// <summary>
        /// 交易结束时间。该笔交易结束时间。格式为 yyyy-MM-dd HH:mm:ss。
        /// </summary>
        public DateTime Gmt_Close { set; get; }

        /// <summary>
        /// 支付金额信息。支付成功的各个渠道金额信息,详见下表 资金明细信息说明。
        /// </summary>
        public List<AliFundBillDto> Fund_Bill_List { set; get; }
        /// <summary>
        /// 优惠券信息。本交易支付时所使用的所有优惠券信息,详见下表 优惠券信息说明。
        /// </summary>
        public List<AliVoucherDetailDto> voucher_detail_list { set; get; }
    }

    /// <summary>
    /// 支付金额信息。支付成功的各个渠道金额信息,详见下表 资金明细信息说明。
    /// </summary>
    public class AliFundBillDto
    {
        /// <summary>
        /// 
        /// </summary>
        public string Amount { set; get; }
        /// <summary>
        /// 
        /// </summary>
        public string FundChannel { set; get; }
    }

    /// <summary>
    /// 优惠券信息。本交易支付时所使用的所有优惠券信息,详见下表 优惠券信息说明。
    /// </summary>
    public class AliVoucherDetailDto
    {
        /// <summary>
        /// 0.20
        /// </summary>
        public string Amount { set; get; }
        /// <summary>
        /// 0.00
        /// </summary>
        public string merchantContribute { set; get; }
        /// <summary>
        /// 一键创建券模板的券名称
        /// </summary>
        public string Name { set; get; }
        /// <summary>
        /// 0.20
        /// </summary>
        public string OtherContribute { set; get; }
        /// <summary>
        /// ALIPAY_BIZ_VOUCHER
        /// </summary>
        public string Type { set; get; }
        /// <summary>
        /// 学生8折优惠
        /// </summary>
        public string Memo { set; get; }
    }

}