using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace WayneCloud.Models.Models
{
    public class WxPayConfig
    {
        //=======【基本信息设置】=====================================
        /* 微信公众号信息配置
        * APPID：绑定支付的APPID（必须配置）
        * SUBAPPID: 子商户的APPID
        * MCHID：商户号（必须配置）
        * SUBMCHID：子商户号
        * KEY：商户支付密钥，参考开户邮件设置（必须配置）
        * APPSECRET：公众帐号secert（仅JSAPI支付的时候需要配置）
        */
        public string APPID { get; set; }
        public string SUBAPPID { get; set; }
        public string MCHID { get; set; }
        public string SUBMCHID { get; set; }
        public string KEY { get; set; }
        public string APPSECRET { get; set; }

        //=======【证书设置】===================================== 
        /* 证书文件名（仅退款、撤销订单时需要）
        */
        public string SSLCERT { get; set; }
        public string SSLCERT_PASSWORD { get; set; }

        //=======【支付结果通知url】===================================== 
        /* 支付结果通知回调url，用于商户接收支付结果
        */
        public string NOTIFY_URL { get; set; }

        //=======【商户系统后台机器IP】===================================== 
        /* 此参数可手动配置也可在程序中自动获取
        */
        public string IP { get; set; }

        //=======【代理服务器设置】===================================
        /* 默认IP和端口号分别为0.0.0.0和0，此时不开启代理（如有需要才设置）
        */
        public string PROXY_URL { get; set; }

        //=======【上报信息配置】===================================
        /* 测速上报等级，0.关闭上报; 1.仅错误时上报; 2.全量上报
        */
        public int REPORT_LEVENL { get; set; }
        public string MINI_PROGRAM_APPID { get; set; }

    }

    public class WxPayConfigInfo
    {
        public WxPayConfig Config { get; set; }
        public string HashValue { get; set; }
    }
    public class WxPayCertificationInfo
    {
        public X509Certificate2 Certification { get; set; }
        public string HashValue { get; set; }
    }
    public class WxPayConfigAndCertification
    {
        public WxPayConfigInfo ConfigInfo { get; set; }
        public WxPayCertificationInfo CertificationInfo { get; set;}
    }
}
