/// <summary>
        /// 设置商户自己的支付方式
        /// </summary>
        /// <param name="pRequest"></param>
        /// <returns></returns>
        public string SetPayChannel(string pRequest)
        {
            var rp = pRequest.DeserializeJSONTo <APIRequest <SetPayChannel> >();

            if (rp.Parameters.AddPayChannelData.Length == 0)
            {
                throw new APIException("请求参数中缺少AddPayChannelData或值为空.")
                      {
                          ErrorCode = 121
                      };
            }
            var paymentTypeId = rp.Parameters.AddPayChannelData[0].PaymentTypeId;

            CheckCustomerMapping(paymentTypeId);//判断是否重复配置同类型支付信息

            var loggingSessionInfo             = new SessionManager().CurrentUserLoginInfo;
            var tPaymentTypeCustomerMappingBll = new TPaymentTypeCustomerMappingBLL(loggingSessionInfo);

            var customerId = loggingSessionInfo.ClientID;


            //获取该支付通道的信息
            var tPaymeentTypeCusMapEntity = tPaymentTypeCustomerMappingBll.QueryByEntity(new TPaymentTypeCustomerMappingEntity()
            {
                ChannelId  = Convert.ToString(rp.Parameters.AddPayChannelData[0].ChannelId),
                CustomerId = customerId
            }, null);

            //if (tPaymeentTypeCusMapEntity != null && tPaymeentTypeCusMapEntity.Length > 0)
            //{
            //    var payDeloyType = tPaymeentTypeCusMapEntity[0].PayDeplyType;

            //    //如果该支付通道之前为默认配置,将channelId设置为0,这样支付中心会生成一条新的数据
            //    if (payDeloyType == 0)
            //    {
            //        rp.Parameters.AddPayChannelData[0].ChannelId = 0;
            //    }
            //}

            var tPaymentTypeCustomerMappingEntityList =
                tPaymentTypeCustomerMappingBll.QueryByEntity(new TPaymentTypeCustomerMappingEntity()
            {
                PaymentTypeID = rp.Parameters.AddPayChannelData[0].PaymentTypeId,
                CustomerId    = customerId
            }, null);

            if (rp.Parameters.AddPayChannelData[0].PayType > 0) //非货到付款
            {
                var paychannelUrl = ConfigurationManager.AppSettings["payChannelUrl"];

                string reqs = "request" + pRequest;

                string str = "{\"ClientID\":\"" + loggingSessionInfo.ClientID + "\","
                             + "\"UserID\":\"" + loggingSessionInfo.UserID + "\","
                             + "\"Token\":null,\"AppID\":1,"
                             + "\"Parameters\":" + rp.Parameters.ToJSON() + "}";
                var result = HttpWebClient.DoHttpRequest(paychannelUrl + "Gateway.ashx?action=SetPayChannel", "request=" +
                                                         HttpUtility.UrlEncode(str));

                string loggerStr = paychannelUrl + "Gateway.ashx?action=SetPayChannel&" +
                                   str;
                Loggers.Debug(new DebugLogInfo()
                {
                    Message = loggerStr
                });

                var channelList = result.DeserializeJSONTo <PayChannelReturnResult>();

                if (channelList.Datas == null)
                {
                    throw new APIException("创建失败:" + result)
                          {
                              ErrorCode = 122
                          };
                }

                if (channelList.Datas.PayChannelIdList[0].ChannelId == 0)
                {
                    throw new APIException("创建失败:" + result)
                          {
                              ErrorCode = 122
                          };
                }
                else
                {
                    if (tPaymentTypeCustomerMappingEntityList != null && tPaymentTypeCustomerMappingEntityList.Length > 0)
                    {
                        tPaymentTypeCustomerMappingBll.Delete(tPaymentTypeCustomerMappingEntityList);
                    }


                    var tPaymentTypeCustomerMappingEntity = new TPaymentTypeCustomerMappingEntity();

                    tPaymentTypeCustomerMappingEntity.MappingId     = Guid.NewGuid();
                    tPaymentTypeCustomerMappingEntity.CustomerId    = loggingSessionInfo.ClientID;
                    tPaymentTypeCustomerMappingEntity.PaymentTypeID = rp.Parameters.AddPayChannelData[0].PaymentTypeId;
                    tPaymentTypeCustomerMappingEntity.APPId         = "1";
                    tPaymentTypeCustomerMappingEntity.Currency      = 1;
                    tPaymentTypeCustomerMappingEntity.PayDeplyType  = 1;

                    tPaymentTypeCustomerMappingBll.Create(tPaymentTypeCustomerMappingEntity);


                    var payTypeId = rp.Parameters.AddPayChannelData[0].PayType;

                    var updateSql = "";
                    if (payTypeId == 1 || payTypeId == 2)
                    {
                        var unionPayData = rp.Parameters.AddPayChannelData[0].UnionPayData;

                        var merchantId                 = unionPayData.MerchantID;
                        var certificateFilePath        = unionPayData.CertificateFilePath;
                        var certificateFilePassword    = unionPayData.CertificateFilePassword;
                        var decryptCertificateFilePath = unionPayData.DecryptCertificateFilePath;
                        var packetEncryptKey           = unionPayData.PacketEncryptKey;

                        updateSql = "PayAccountNumber = '" + merchantId + "',"
                                    + "EncryptionCertificate = '" + certificateFilePath + "',"
                                    + "EncryptionPwd ='" + certificateFilePassword + "',"
                                    + "DecryptionCertificate ='" + decryptCertificateFilePath + "',"
                                    + "DecryptionPwd ='" + packetEncryptKey + "',"
                                    + "PayDeplyType=1";
                    }
                    if (payTypeId == 3 || payTypeId == 4)
                    {
                        var wapData = rp.Parameters.AddPayChannelData[0].WapData;

                        var partner           = wapData.Partner;
                        var sellerAccountName = wapData.SellerAccountName;
                        var RSA_PublicKey     = wapData.RSA_PublicKey;
                        var RSA_PrivateKey    = wapData.RSA_PrivateKey;
                        var MD5Key            = wapData.MD5Key;
                        var SCAN_AppID        = wapData.SCAN_AppID;
                        var PayEncryptedPwd   = wapData.PayEncryptedPwd;


                        updateSql = "PayAccountNumber ='" + partner + "',"
                                    + "PayAccounPublic='" + RSA_PublicKey + "',"
                                    + "PayPrivate='" + RSA_PrivateKey + "',"
                                    + "SalesTBAccess='" + sellerAccountName + "',"
                                    + "ApplyMD5Key='" + MD5Key + "',"
                                    + "EncryptionCertificate='" + SCAN_AppID + "',"
                                    + "PayEncryptedPwd='" + PayEncryptedPwd + "',"
                                    + "PayDeplyType=1";
                    }
                    if (payTypeId == 5 || payTypeId == 6)
                    {
                        var wxData = rp.Parameters.AddPayChannelData[0].WxPayData;
                        var appID  = wxData.AppID;
                        //var appSecret = wxData.AppSecret;
                        //var parnterID = wxData.ParnterID;
                        //var parnterKey = wxData.ParnterKey;
                        //var PaySignKey = wxData.PaySignKey;
                        var mch_id  = wxData.Mch_ID;
                        var signKey = wxData.SignKey;

                        updateSql = "AccountIdentity='" + appID + "',"
                                    //+ "PublicKey='" + appSecret + "',"
                                    //+ "TenPayIdentity='" + parnterID + "',"
                                    //+ "TenPayKey='" + parnterKey + "',"
                                    //+ "PayEncryptedPwd='" + PaySignKey + "',"
                                    + "TenPayIdentity='" + mch_id + "',"
                                    + "TenPayKey='" + signKey + "',"
                                    + "PayDeplyType=1";
                    }

                    tPaymentTypeCustomerMappingBll.UpdatePaymentMap(updateSql, channelList.Datas.PayChannelIdList[0].ChannelId + 1
                                                                    , rp.Parameters.AddPayChannelData[0].PaymentTypeId, customerId);
                }
            }
            else //货到付款
            {
                if (tPaymentTypeCustomerMappingEntityList != null && tPaymentTypeCustomerMappingEntityList.Length > 0)
                {
                    tPaymentTypeCustomerMappingBll.Delete(tPaymentTypeCustomerMappingEntityList);
                }


                var tPaymentTypeCustomerMappingEntity = new TPaymentTypeCustomerMappingEntity();

                tPaymentTypeCustomerMappingEntity.MappingId     = Guid.NewGuid();
                tPaymentTypeCustomerMappingEntity.CustomerId    = loggingSessionInfo.ClientID;
                tPaymentTypeCustomerMappingEntity.PaymentTypeID = rp.Parameters.AddPayChannelData[0].PaymentTypeId;
                tPaymentTypeCustomerMappingEntity.APPId         = "1";
                tPaymentTypeCustomerMappingEntity.Currency      = 1;
                tPaymentTypeCustomerMappingEntity.PayDeplyType  = 1;

                tPaymentTypeCustomerMappingBll.Create(tPaymentTypeCustomerMappingEntity);
            }
            var rd  = new EmptyResponseData();
            var rsp = new SuccessResponse <IAPIResponseData>(rd);

            return(rsp.ToJSON());
        }
        /// <summary>
        /// 启用连锁掌柜默认的支付方式
        /// </summary>
        /// <param name="pRequest"></param>
        /// <returns></returns>
        public string SetDefaultPayChannel(string pRequest)
        {
            var rp = pRequest.DeserializeJSONTo <APIRequest <SetPayChannel> >();

            if (rp.Parameters.AddPayChannelData.Length == 0)
            {
                throw new APIException("请求参数中缺少AddPayChannelData或值为空.")
                      {
                          ErrorCode = 121
                      };
            }
            var paymentTypeId = rp.Parameters.AddPayChannelData[0].PaymentTypeId;

            CheckCustomerMapping(paymentTypeId);//判断是否重复配置同类型支付信息
            var loggingSessionInfo             = new SessionManager().CurrentUserLoginInfo;
            var tPaymentTypeCustomerMappingBll = new TPaymentTypeCustomerMappingBLL(loggingSessionInfo);
            var customerId = loggingSessionInfo.ClientID;

            //获取要修改的支付方式
            var tPaymentTypeCustomerMappingEntityList =
                tPaymentTypeCustomerMappingBll.QueryByEntity(new TPaymentTypeCustomerMappingEntity()
            {
                PaymentTypeID = rp.Parameters.AddPayChannelData[0].PaymentTypeId,
                CustomerId    = customerId
            }, null);

            //从ap库里面获取该支付方式的channelID
            var channelId = tPaymentTypeCustomerMappingBll.GetChannelIdByPaymentTypeAndCustomer(paymentTypeId, customerId);

            if (channelId == "-1")
            {
                throw new APIException("未找到默认的支付通道.")
                      {
                          ErrorCode = 122
                      };
            }
            else
            {
                //逻辑删除原有配置
                if (tPaymentTypeCustomerMappingEntityList != null && tPaymentTypeCustomerMappingEntityList.Length > 0)
                {
                    tPaymentTypeCustomerMappingBll.Delete(tPaymentTypeCustomerMappingEntityList);
                }
                //重新启用
                var tPaymentTypeCustomerMappingEntity = new TPaymentTypeCustomerMappingEntity();
                tPaymentTypeCustomerMappingEntity.MappingId     = Guid.NewGuid();
                tPaymentTypeCustomerMappingEntity.PaymentTypeID = paymentTypeId;
                tPaymentTypeCustomerMappingEntity.CustomerId    = customerId;
                tPaymentTypeCustomerMappingEntity.ChannelId     = channelId;
                tPaymentTypeCustomerMappingEntity.APPId         = "1";
                tPaymentTypeCustomerMappingEntity.Currency      = 1;
                tPaymentTypeCustomerMappingEntity.PayDeplyType  = 0;
                tPaymentTypeCustomerMappingBll.Create(tPaymentTypeCustomerMappingEntity);
                //设置默认的channelID数据,不需要设置
                //string updateSql =  " PayDeplyType=0 ";
                //tPaymentTypeCustomerMappingBll.UpdatePaymentMap(updateSql, Convert.ToInt32(channelId)
                //   , paymentTypeId, customerId);
            }


            var rd  = new EmptyResponseData();
            var rsp = new SuccessResponse <IAPIResponseData>(rd);

            return(rsp.ToJSON());
        }