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