/// <summary>
        /// 企业付款到银行卡https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=24_2
        /// </summary>
        /// <param name="request"></param>
        public PayBankResponse PayBank(PayBankRequest request)
        {
            var response = new PayBankResponse()
            {
                return_code = "FAI"
            };

            string requestUrl = "https://api.mch.weixin.qq.com/mmpaysptrans/pay_bank";

            PayBankImpl payBank = new PayBankImpl()
            {
                apiKey = request.apiKey
            };

            payBank.Add("mch_id", request.mch_id);
            payBank.Add("nonce_str", request.desc);
            payBank.Add("amount", request.amount.ToString());
            payBank.Add("bank_code", request.bank_code);
            payBank.Add("account_type", request.account_type.ToString());
            payBank.Add("bank_note", request.bank_note);
            payBank.Add("desc", request.desc);
            payBank.Add("enc_bank_no", request.enc_bank_no);
            payBank.Add("enc_true_name", request.enc_true_name);
            payBank.Add("partner_trade_no", request.partner_trade_no);
            var sign = payBank.CreateMd5Sign();

            payBank.Add("sign", sign);

            var data = new HttpUtils().DoPost(requestUrl, payBank.ParseXML(), request.isUseCert, request.cert, request.password);
            var doc  = new XmlDocument();

            doc.LoadXml(data);

            XmlNode xmlNode = doc.DocumentElement;

            if (xmlNode != null)
            {
                response.return_code = xmlNode["return_code"].InnerText;
                if (response.return_code.ToUpper() != "SUCCESS")
                {
                    response.return_msg = xmlNode["return_msg"].InnerText;
                    return(response);
                }

                response.result_code = xmlNode["result_code"].InnerText;
                if (response.result_code.ToUpper() == "FAIL")
                {
                    response.err_code     = xmlNode["err_code"].InnerText;
                    response.err_code_des = xmlNode["err_code_des"].InnerText;
                    return(response);
                }
                response.return_code = "SUCCESS";
            }
            return(response);
        }
        /// <summary>
        /// 提现到银行卡
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <PayBankResponse> PayBank(PayBankRequest request)
        {
            // 获取Rsa值
            // var wxRequest = new WeChatPayRiskGetPublicKeyRequest();
            // var response = await _client.ExecuteAsync(wxRequest, _wechatPayOption);
            var result = new PayBankResponse();

            var wxRequest = new WeChatPayPayBankRequest
            {
                PartnerTradeNo = request.PartnerTradeNo,
                BankNo         = request.BankNo,
                TrueName       = request.TrueName,
                BankCode       = request.BankCode,
                Amount         = request.Amount,
                Desc           = request.Desc
            };

            try
            {
                var response = await _client.ExecuteAsync(wxRequest, _wechatPayOption);

                if (response.ReturnCode == WeChatPayCode.Success)
                {
                    if (response.ResultCode == WeChatPayCode.Success)
                    {
                        result.IsSuccess = true;
                    }
                    result.Message = response.ErrCodeDes;
                }
                else
                {
                    result.Message = response.ReturnMsg;
                }
            }
            catch (Exception ex)
            {
                result.Message = ex.Message;
            }
            return(result);
        }