/// <summary>
        /// 判断是否重复配置同类型支付信息
        /// </summary>
        public void CheckCustomerMapping(string paymentTypeId)
        {
            var loggingSessionInfo             = new SessionManager().CurrentUserLoginInfo;
            var tPaymentTypeCustomerMappingBll = new TPaymentTypeCustomerMappingBLL(loggingSessionInfo);
            var tPaymentTypeBll = new T_Payment_TypeBLL(loggingSessionInfo);

            //查询参数
            List <IWhereCondition> complexCondition = new List <IWhereCondition> {
            };

            //商户条件
            //complexCondition.Add(new EqualsCondition() { FieldName = "customerid", Value = loggingSessionInfo.ClientID });
            complexCondition.Add(new DirectCondition("Payment_Type_Code in ('CCAlipayWap','AlipayWap')"));
            var paymentTypeList        = tPaymentTypeBll.Query(complexCondition.ToArray(), null); //支付宝支付和平台支付宝支付配置信息
            var currentPaymentTypeInfo = tPaymentTypeBll.GetByID(paymentTypeId);                  //当前支付方式信息

            foreach (var paymentType in paymentTypeList)
            {
                var ptCustomerMapping = tPaymentTypeCustomerMappingBll.QueryByEntity(new TPaymentTypeCustomerMappingEntity()
                {
                    CustomerId = loggingSessionInfo.ClientID, PaymentTypeID = paymentType.Payment_Type_Id
                }, null).FirstOrDefault();
                if (ptCustomerMapping != null && ptCustomerMapping.PaymentTypeID != paymentTypeId && currentPaymentTypeInfo.Payment_Type_Code != "WXJS" && currentPaymentTypeInfo.Payment_Type_Code != "GetToPay")
                {
                    throw new APIException("同类型的支付方式只能启用一个.")
                          {
                              ErrorCode = 121
                          }
                }
                ;
            }
        }
Пример #2
0
        public string GetMapingbyPayMentTypeId(HttpRequest requst)
        {
            string paymentTypeId = requst.Form["paymentTypeId"];

            if (string.IsNullOrWhiteSpace(paymentTypeId))
            {
                paymentTypeId = requst.QueryString["paymentTypeId"].ToString();
            }


            TPaymentTypeCustomerMappingBLL    server = new TPaymentTypeCustomerMappingBLL(this.CurrentUserInfo);
            TPaymentTypeCustomerMappingEntity entity = new TPaymentTypeCustomerMappingEntity();

            entity.IsDelete      = 0;
            entity.PaymentTypeID = paymentTypeId;
            entity.CustomerId    = this.CurrentUserInfo.ClientID;
            TPaymentTypeCustomerMappingEntity[] entitylist = server.QueryByEntity(entity, null);
            if (entitylist != null && entitylist.Length > 0)
            {
                entitylist[0].url = ConfigurationManager.AppSettings["payMentUrl"];
                return(entitylist[0].ToJSON());
            }
            else
            {
                entity.url = ConfigurationManager.AppSettings["payMentUrl"];
                return(entity.ToJSON());
            }
            return("");
        }
Пример #3
0
        protected override SetRewardOrderRD ProcessRequest(DTO.Base.APIRequest <SetRewardOrderRP> pRequest)
        {
            var    rd         = new SetRewardOrderRD();
            string customerId = CurrentUserInfo.ClientID;
            var    trrBll     = new T_RewardRecordBLL(CurrentUserInfo);

            var tptcmBll = new TPaymentTypeCustomerMappingBLL(CurrentUserInfo);

            var employeeId   = pRequest.Parameters.EmployeeID;//员工ID
            var rewardAmount = pRequest.Parameters.RewardAmount;

            if (string.IsNullOrEmpty(employeeId))
            {
                throw new APIException("员工ID无效")
                      {
                          ErrorCode = 121
                      };
            }

            //生成打赏单
            var trrEntity = new T_RewardRecordEntity()
            {
                RewardId = Guid.NewGuid(),
                //RewardCode = "哪来的?",
                RewardOPType   = 1,               //会员(打赏人)
                RewardOP       = pRequest.UserID, //会员ID
                RewardedOPType = 2,               //员工(被打赏人)
                RewardedOP     = employeeId,
                RewardAmount   = rewardAmount,
                //Remark = string.Empty,
                PayStatus  = 0, //默认未支付,等待支付回调接口来修改
                RewardType = 1, //1=现金,2=积分
                CustomerId = customerId
            };

            trrBll.Create(trrEntity);//创建打赏单

            rd.RewardOrderID = "REWARD|" + trrEntity.RewardId;

            var tptcmEntity = tptcmBll.QueryByEntity(new TPaymentTypeCustomerMappingEntity()
            {
                PaymentTypeID = "DFD3E26D5C784BBC86B075090617F44B", CustomerId = customerId
            }, null).FirstOrDefault();

            rd.paymentId = tptcmEntity != null ? tptcmEntity.PaymentTypeID : string.Empty;

            return(rd);
        }
        /// <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());
        }