/// <summary>
        /// 退款
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public override bool Refund(PaylineEntity info)
        {
            string url           = "https://api.mch.weixin.qq.com/secapi/pay/refund";
            var    requsetParams = new SortedDictionary <string, string>();

            requsetParams.Add("total_fee", Math.Abs(info.Amount * 100).Convert <int>().ToString());
            requsetParams.Add("refund_fee", Math.Abs(info.Amount * 100).Convert <int>().ToString());
            requsetParams.Add("out_refund_no", info.Number);
            requsetParams.Add("transaction_id", info.OutNumber);
            requsetParams.Add("appid", AppId);
            requsetParams.Add("mch_id", MchId);
            requsetParams.Add("nonce_str", Guid.NewGuid().ToString().Replace("-", ""));//随机字符串
            requsetParams.Add("sign", MakeSign(requsetParams, MchKey));
            string xml        = ToRequestXml(requsetParams);
            var    webRequest = (HttpWebRequest)WebRequestHelper.CreateWebRequestWithCertificate(url, CertPath, MchId);
            string response   = WebRequestHelper.SendPostRequest(webRequest, Encoding.UTF8, xml);
            var    result     = FromResponseXml(response);

            LogHelper.AddEcho(new EchoEntity
            {
                Method   = "Beeant.Repository.Services.Finance.WechatPaylineRepository.Refund",
                Request  = xml,
                Response = result.SerializeJson(),
                Remark   = "",
                Url      = HttpContext.Current.Request.Url.ToString(),
                Key      = info.Number,
                SaveType = SaveType.Add
            });
            if (result == null || !result.ContainsKey("return_code") || result["return_code"] != "SUCCESS")
            {
                return(false);
            }
            info.Status    = PaylineStatusType.Success;
            info.OutNumber = result.ContainsKey("refund_id") ? result["refund_id"] : "";
            return(true);
        }