/// <summary>
        /// 诊所创建支付
        /// </summary>
        /// <param name="shopId">诊所ID</param>
        /// <param name="balance">支付金额</param>
        /// <param name="webRoot">站点URL</param>
        /// <returns></returns>
        public static ChargePayModel PaymentList(long shopId, decimal balance, string webRoot)
        {
            ChargeDetailShopInfo model = new ChargeDetailShopInfo()
            {
                ChargeAmount = balance,
                ChargeStatus = Himall.Model.ChargeDetailInfo.ChargeDetailStatus.WaitPay,
                CreateTime   = DateTime.Now,
                ShopId       = shopId
            };
            long orderIds = MemberCapitalApplication.AddChargeDetailShop(model);

            ChargePayModel viewmodel = new ChargePayModel();

            //获取同步返回地址
            string returnUrl = webRoot + "/SellerAdmin/Pay/CapitalChargeReturn/{0}";

            //获取异步通知地址
            string payNotify = webRoot + "/SellerAdmin/Pay/CapitalChargeNotify/{0}";

            var payments = Core.PluginsManagement.GetPlugins <IPaymentPlugin>(true).Where(item => item.Biz.SupportPlatforms.Contains(PlatformType.PC));

            const string RELATEIVE_PATH = "/Plugins/Payment/";

            var models = payments.Select(item =>
            {
                string requestUrl = string.Empty;
                try
                {
                    requestUrl = item.Biz.GetRequestUrl(string.Format(returnUrl, EncodePaymentId(item.PluginInfo.PluginId)), string.Format(payNotify, EncodePaymentId(item.PluginInfo.PluginId)), orderIds.ToString(), model.ChargeAmount, "预付款充值");
                }
                catch (Exception ex)
                {
                    Core.Log.Error("支付页面加载支付插件出错", ex);
                }
                return(new PaymentModel()
                {
                    Logo = RELATEIVE_PATH + item.PluginInfo.ClassFullName.Split(',')[1] + "/" + item.Biz.Logo,
                    RequestUrl = requestUrl,
                    UrlType = item.Biz.RequestUrlType,
                    Id = item.PluginInfo.PluginId
                });
            });

            models                  = models.Where(item => !string.IsNullOrEmpty(item.RequestUrl) && item.Id != "Himall.Plugin.Payment.WeiXinPay" && item.Id != "Himall.Plugin.Payment.WeiXinPay_Native");//只选择正常加载的插件
            viewmodel.OrderIds      = orderIds.ToString();
            viewmodel.TotalAmount   = model.ChargeAmount;
            viewmodel.Step          = 1;
            viewmodel.UnpaidTimeout = SiteSettingApplication.GetSiteSettings().UnpaidTimeout;
            viewmodel.models        = models.ToList();
            return(viewmodel);
        }
        /// <summary>
        /// 诊所充值
        /// </summary>
        /// <param name="Id">充值流水预约单ID</param>
        /// <param name="TradNo">支付流水号</param>
        /// <param name="ChargeWay">支付方式</param>
        public static void ShopRecharge(long Id, string TradNo, string ChargeWay)
        {
            //处理充值流水记录
            var model = MemberCapitalApplication.GetChargeDetailShop(Id);

            if (model.ChargeStatus != ChargeDetailInfo.ChargeDetailStatus.ChargeSuccess)
            {
                model.ChargeStatus = ChargeDetailInfo.ChargeDetailStatus.ChargeSuccess;
                model.ChargeTime   = DateTime.Now;
                model.ChargeWay    = ChargeWay;
                MemberCapitalApplication.UpdateChargeDetailShop(model);

                //资金处理
                _iBillingService.UpdateAccount(model.ShopId, model.ChargeAmount, Himall.CommonModel.ShopAccountType.Recharge, TradNo, ChargeWay, Id);
            }
        }
        /// <summary>
        /// 支付提现
        /// </summary>
        public static void PaymentWithdraw(long withdrawId)
        {
            var model = Service.GetWithdraw(withdrawId);

            try
            {
                switch (model.WithdrawType)
                {
                case DistributionWithdrawType.Alipay:
                    var result = Payment(DistributionWithdrawType.Alipay, model.WithdrawAccount, model.Amount, $"(单号 {withdrawId})", model.Id.ToString(), model.WithdrawName);
                    Service.SuccessWithdraw(withdrawId, result.TradNo.ToString());
                    break;

                case DistributionWithdrawType.Capital:
                    var no = MemberCapitalApplication.BrokerageTransfer(model.MemberId, model.Amount, $"(单号 {withdrawId})", model.Id.ToString());
                    Service.SuccessWithdraw(withdrawId, no.ToString());
                    break;

                case DistributionWithdrawType.WeChat:
                    var resultWechat = Payment(DistributionWithdrawType.WeChat, model.WithdrawAccount, model.Amount, $"(单号 {withdrawId})", model.Id.ToString());
                    Service.SuccessWithdraw(withdrawId, resultWechat.TradNo.ToString());
                    break;
                }
            }
            catch (Exception ex)
            {
                //支付失败(回滚提现状态)
                Service.FailWithdraw(withdrawId, ex.Message);
                throw ex;
            }
            //发送消息
            var member  = MemberApplication.GetMember(model.MemberId);
            var message = new MessageWithDrawInfo();

            message.UserName  = member != null ? member.UserName : "";
            message.Amount    = model.Amount;
            message.ApplyType = model.WithdrawType.GetHashCode();
            message.ApplyTime = model.ApplyTime;
            message.Remark    = model.Remark;
            message.SiteName  = SiteSettingApplication.SiteSettings.SiteName;
            Task.Factory.StartNew(() => ServiceProvider.Instance <IMessageService> .Create.SendMessageOnDistributionMemberWithDrawSuccess(model.MemberId, message));
        }