public async Task <string> Upload1(string fileName, byte[] buffer)
        {
            var hashValueStr = string.Empty;

            using (var mySHA256 = SHA256.Create())
            {
                try
                {
                    var sha      = new SHA256Managed();
                    var checksum = sha.ComputeHash(buffer);
                    hashValueStr = BitConverter.ToString(checksum).Replace("-", String.Empty);
                }
                catch (IOException e)
                {
                    Console.WriteLine($"I/O Exception: {e.Message}");
                }
                catch (UnauthorizedAccessException e)
                {
                    Console.WriteLine($"Access Exception: {e.Message}");
                }
            }

            var boundary = $"{DateTime.Now.Ticks:x}";

            var meta = new
            {
                filename = fileName,
                sha256   = hashValueStr
            };

            var jsonStr = JsonSerializer.Serialize(meta);

            var mchid     = _configuration.GetValue <string>("WxPay:MchId");
            var serial_no = _configuration.GetValue <string>("WxPay:SerialNo");

            var nonce_str = Guid.NewGuid().ToString();

            var path = _hostEnvironment.ContentRootPath + _configuration.GetValue <string>("WxPay:CertPath");

            var httpHandler = new HttpHandler(mchid, serial_no, privateKey, jsonStr);
            var client      = new HttpClient(httpHandler);

            var request = new HttpRequestMessage(HttpMethod.Post, "https://api.mch.weixin.qq.com/v3/merchant/media/upload");

            var requestContent = new MultipartFormDataContent("--" + boundary);

            requestContent.Add(new StringContent(jsonStr, Encoding.UTF8, "application/json"), "\"meta\"");

            var byteArrayContent = new ByteArrayContent(buffer);

            byteArrayContent.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");
            requestContent.Add(byteArrayContent, "\"file\"", "\"" + meta.filename + "\"");

            //client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("WECHATPAY2-SHA256-RSA2048", await BuildAuthAsync(request, mchid, serial_no, nonce_str, jsonStr));
            //client.DefaultRequestHeaders.Add("Wechatpay-Serial", _configuration.GetValue<string>("WxPay:SerialNo"));
            //client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36");
            //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var response = await client.PostAsync("https://api.mch.weixin.qq.com/v3/merchant/media/upload", requestContent);              // await client.SendAsync(request);

            var result = await response.Content.ReadAsStringAsync();

            if (response.StatusCode != HttpStatusCode.OK)
            {
                //logger.Error($"GetAsync End, url:{url}, HttpStatusCode:{response.StatusCode}, result:{result}");
                // return new T();
            }

            return(null);
        }
        public async Task <object> ApplyMent()
        {
            var nonce = GenerateNonce();

            #region  入数据

            var applyment = new ApplyMentDto();
            applyment.BusinessCode = "X00000000001";
            applyment.ContactInfo  = new ApplyMentContactInfoDto()
            {
                ContactName = "张三",
                // OpenId = "1312321",
                ContactIdNumber = "511111111111111111",
                MobilePhone     = "13333333333",
                ContactEmail    = "*****@*****.**",
            };
            applyment.SubjectInfo = new ApplyMentSubjectInfo()
            {
                SubjectType         = "SUBJECT_TYPE_INDIVIDUAL",
                BusinessLicenseInfo = new ApplyMentBusinessLicenseInfo()
                {
                    LicenseCopy   = "tV7icXfN8VX58X0D187-NV08cFGRlx6LPg261cpQDI-asaq-0MXen3N7OVE5lDbStaS8nBBbBlv6hL3er8bDK-djRp4PtWGArfr9Numqxsk",
                    LicenseNumber = "91440300MA5EYUKH2K",
                    MerchantName  = "张三餐饮店",
                    LegalPerson   = "张三"
                },
                IdentityInfo = new ApplyMentIdentityInfo()
                {
                    IdDocType  = "IDENTIFICATION_TYPE_IDCARD",
                    IdCardInfo = new ApplyMentIdCardInfo()
                    {
                        IdCardCopy      = "tV7icXfN8VX58X0D187-NV08cFGRlx6LPg261cpQDI-asaq-0MXen3N7OVE5lDbStaS8nBBbBlv6hL3er8bDK-djRp4PtWGArfr9Numqxsk",
                        IdCardNational  = "tV7icXfN8VX58X0D187-NV08cFGRlx6LPg261cpQDI-asaq-0MXen3N7OVE5lDbStaS8nBBbBlv6hL3er8bDK-djRp4PtWGArfr9Numqxsk",
                        IdCardName      = "张三",
                        IdCardNumber    = "511111111111111111",
                        CardPeriodBegin = "2010-01-01",
                        CardPeriodEnd   = "长期",
                    },
                    Owner = true
                },
            };
            applyment.BusinessInfo = new ApplyMentBusinessInfo()
            {
                MerchantShortName = "张三餐饮店",
                ServicePhone      = "13333333333",
                SalesInfo         = new ApplyMentSalesInfo()
                {
                    SalesScenesType = new List <string>()
                    {
                        "SALES_SCENES_STORE"
                    },
                    BizStorInfo = new ApplyMentBizStorInfo()
                    {
                        BizStoreName     = "张三餐饮店",
                        BizAddressCode   = "440305",
                        BizStoreAddress  = "南山区xx大厦x层xxxx室",
                        StoreEntrancePic = new List <string>()
                        {
                            "tV7icXfN8VX58X0D187-NV08cFGRlx6LPg261cpQDI-asaq-0MXen3N7OVE5lDbStaS8nBBbBlv6hL3er8bDK-djRp4PtWGArfr9Numqxsk"
                        },
                        IndoorPic = new List <string>()
                        {
                            "tV7icXfN8VX58X0D187-NV08cFGRlx6LPg261cpQDI-asaq-0MXen3N7OVE5lDbStaS8nBBbBlv6hL3er8bDK-djRp4PtWGArfr9Numqxsk"
                        }
                    }
                }
            };
            applyment.SettlementInfo = new ApplyMentSettlementInfo()
            {
                SettlementId      = "719",
                QualificationType = "餐饮",
                Qualifications    = new List <string>()
                {
                    "tV7icXfN8VX58X0D187-NV08cFGRlx6LPg261cpQDI-asaq-0MXen3N7OVE5lDbStaS8nBBbBlv6hL3er8bDK-djRp4PtWGArfr9Numqxsk"
                },
                ActivitiesAdditions = new List <string>(),
            };
            applyment.Encrypt(GetPublicCertificate().PublicKey.Key as RSA);

            #endregion  入数据

            var jsonContent = JsonConvert.SerializeObject(applyment);             //.Serialize(applyment);

            var httpHandler = new HttpHandler(_mchId, _serialNo, GetPublicCertificate().SerialNumber, GetPrivateCertificate(), GetMerchantCertificate());
            var client      = new HttpClient(httpHandler);

            var request = new HttpRequestMessage(HttpMethod.Post,
                                                 "https://api.mch.weixin.qq.com/v3/applyment4sub/applyment/")
            {
                Content = new StringContent(jsonContent, Encoding.UTF8, "application/json")
            };

            var response = await client.SendAsync(request);

            var result = await response.Content.ReadAsStringAsync();

            if (response.StatusCode != HttpStatusCode.OK)
            {
            }

            return(string.Empty);
        }