using System;
using System.Collections.Generic;
using System.Text;

namespace Edu.Common.WeChatPayAPIv3.Model.WxPayCallback
{
    /// <summary>
    /// 微信支付回调通知结果解密实体
    /// </summary>
    public class WxPayResourceDecryptModel
    {
        /// <summary>
        /// 直连商户申请的公众号或移动应用appid
        /// </summary>
        public string appid { set; get; }

        /// <summary>
        /// 商户的商户号，由微信支付生成并下发。
        /// </summary>
        public string mchid { set; get; }

        /// <summary>
        /// 商户系统内部订单号，只能是数字、大小写字母_-*且在同一个商户号下唯一。特殊规则：最小字符长度为6
        /// </summary>
        public string out_trade_no { set; get; }

        /// <summary>
        /// 微信支付系统生成的订单号。
        /// </summary>
        public string transaction_id { set; get; }


        /// <summary>
        /// 交易类型，枚举值：
        ///JSAPI：公众号支付
        ///  NATIVE：扫码支付
        /// APP：APP支付
        /// MICROPAY：付款码支付
        /// MWEB：H5支付
        ///  FACEPAY：刷脸支付
        /// </summary>
        public string trade_type { get; set; }
        /// <summary>
        /// 交易状态，枚举值：
        /// SUCCESS：支付成功
        /// REFUND：转入退款
        /// NOTPAY：未支付
        /// CLOSED：已关闭
        /// REVOKED：已撤销（付款码支付）
        /// USERPAYING：用户支付中（付款码支付）
        /// PAYERROR：支付失败(其他原因，如银行返回失败)
        /// ACCEPT：已接收，等待扣款
        /// </summary>
        public string trade_state { get; set; }

        /// <summary>
        /// 交易状态描述
        /// </summary>
        public string trade_state_desc { get; set; }

        /// <summary>
        /// 银行类型，采用字符串类型的银行标识
        /// </summary>
        public string bank_type { get; set; }

        /// <summary>
        /// 附加数据，在查询API和支付通知中原样返回
        /// </summary>
        public string attach { get; set; }

        /// <summary>
        /// 支付完成时间 示例值：2018-06-08T10:34:56+08:00
        /// </summary>
        public string success_time { get; set; }

        /// <summary>
        /// 订单金额信息
        /// </summary>
        public WxPayerResourceAmountModel amount { get; set; }

        /// <summary>
        /// 支付者信息
        /// </summary>
        public WxPayerResourceDecryptModel payer { set; get; }

    }

    /// <summary>
    /// 订金支付金额实体
    /// </summary>
    public class WxPayerResourceAmountModel {

        /// <summary>
        /// 订单总金额，单位为分。
        /// </summary>
        public int total { get; set; }

        /// <summary>
        /// 用户支付金额，单位为分。
        /// </summary>
        public int payer_total { get; set; }

        /// <summary>
        /// CNY：人民币，境内商户号仅支持人民币
        /// </summary>
        public string currency { get; set; }

        /// <summary>
        /// 用户支付币种
        /// </summary>
        public string payer_currency { get; set; }


    }

    /// <summary>
    /// 支付用户信息实体
    /// </summary>
    public class WxPayerResourceDecryptModel
    {
        /// <summary>
        /// 用户在直连商户appid下的唯一标识。
        /// </summary>
        public string openid { get; set; }
    }
}
