|
|
using Common.Models.Agent; using Common.Models.Bank; using Common.Models.ExchangeRate; using Common.Models.RequestResponse; using Common.Models.Status; using Common.Models.TxnModel; using Common.TPService; using Common.Utility; using GMENepal.GMEReference; using log4net; using Newtonsoft.Json; using System; using System.IO; using System.Xml.Serialization; using TPApiServices.GCCReference;
namespace TPService.GCC.Services {
public class GCCAPI : ITPApiServices { //private readonly ISendAPI _sendAPI;
private readonly ILog _log = LogManager.GetLogger(typeof(GCCAPI)); private readonly SendAPIClient _sendAPI = new SendAPIClient(); string PartnerId = GetStatic.ReadWebConfig("gcc_partnerId", ""); string Password = GetStatic.ReadWebConfig("gcc_password", ""); string SecurityKey = GetStatic.ReadWebConfig("gcc_securityKey", "");
public TPResponse GetTPResponse<T>(T model, string MethodName) where T : class { switch (MethodName) { case "getCountryList": return GetCountryList(model as CountryListRequest);
case "currencyList": return GetCurrencyList(model as CurrencyListRequest);
case "paymentModeList": return GetPaymentModeList(model as PaymentModeListRequest);
case "agentList": return GetCityList(model as AgentRequest);
case "bankList": return GetBranchList(model as BankRequest);
case "exchangeRate": return GetExRate(model as ExchangeRate);
case "serviceCharge": return GetServiceCharges(model as ServiceChargesRequest);
case "send": return SendTransaction(model as SendTransaction);
case "release": return ApproveTransfer(model as TFReleaseTxnRequest); case "status": return GetTransferStatus(model as GetStatus); case "cancelTransfer": return CancelTransfer(model as CancelTransferRequest); case "refundTransfer": return RefundTransfer(model as RefundTransferRequest); case "modifyTransfer": return ModifyTransfer(model as ModifyTransferRequest); case "modifyTransferStatus": return GetModifyTransferStatus(model as ModifyTransferStatusRequest);
case "transferFinancialsList": return GetTransferFinancialsList(model as TransferFinancialsRequest); case "exchangeRateList": return GetExchangeRateList(model as ExchangeRateListRequest); case "availableBalance": return GetAvailableBalance(model as AvailableBalanceRequest); case "idTypeList": return GetIDTypeList(model as IDTypeListRequest); case "purposeList": return GetPurposeList(model as PurposeListRequest); case "incomeSourceList": return GetIncomeSourceList(model as IncomeSourceListRequest); case "relationshipList": return GetRelationshipList(model as RelationshipListRequest); case "ChangePassword": return ChangePassword(model as ChangePasswordRequest); default: return new TPResponse() { ResponseCode = "1", Msg = "Method Name Not Found !" }; } }
private TPResponse GetCityList(AgentRequest getCity) { TPResponse _response = new TPResponse(); CityListRequest req = new CityListRequest() { UniqueID = PartnerId, Password = Password, SecurityKey = SecurityKey, CountryCode = getCity.PayoutCountry, CurrencyCode = getCity.ExternalBankId, PaymentModeCode = getCity.PaymentType, //PayoutBranchCode = exRate.PAgentId
};
try { _log.Info("GetExchangeRate | REQUEST :" + JsonConvert.SerializeObject(req)); CityListResponse res = _sendAPI.GetCityList(req); _log.Info("GetExchangeRate | RESPONSE :" + JsonConvert.SerializeObject(res)); _response.ResponseCode = res.ResponseCode; _response.Msg = res.ResponseMessage; //_response.Extra = res.g;
//_response.Extra2 = res.CostRate;
//_response.Id = res.CustomerRate;
_response.Data = res; } catch (Exception ex) { _response.ResponseCode = "1"; _response.Msg = "Unknown error!"; _log.ErrorFormat("ExchangeRateResponse | Exception occured On ExchangeRat Method At GCCREMITApi ! Details :" + ex.Message); } return _response; }
private TPResponse GetBranchList(BankRequest getbranch) { TPResponse _response = new TPResponse(); BranchListRequest req = new BranchListRequest() { UniqueID = PartnerId, Password = Password, SecurityKey = SecurityKey, CountryCode = getbranch.CountryCode, CurrencyCode = getbranch.BankName, PaymentModeCode = getbranch.PaymentMethod, CityCode = getbranch.CityId.ToString(), Search = "", //PayoutBranchCode = exRate.PAgentId
};
try { _log.Info("GetExchangeRate | REQUEST :" + JsonConvert.SerializeObject(req)); BranchListResponse res = _sendAPI.GetBranchList(req); _log.Info("GetExchangeRate | RESPONSE :" + JsonConvert.SerializeObject(res)); _response.ResponseCode = res.ResponseCode; _response.Msg = res.ResponseMessage; //_response.Extra = res.g;
//_response.Extra2 = res.CostRate;
//_response.Id = res.CustomerRate;
_response.Data = res; } catch (Exception ex) { _response.ResponseCode = "1"; _response.Msg = "Unknown error!"; _log.ErrorFormat("ExchangeRateResponse | Exception occured On ExchangeRat Method At GCCREMITApi ! Details :" + ex.Message); } return _response; } private TPResponse GetExRate(ExchangeRate exRate) { TPResponse _response = new TPResponse(); ExchangeRateRequest req = new ExchangeRateRequest() { UniqueID = PartnerId, Password = Password, SecurityKey = SecurityKey, PayoutBranchCode = exRate.PAgentId };
try { _log.Info("GetExchangeRate | REQUEST :" + JsonConvert.SerializeObject(req)); ExchangeRateResponse res = _sendAPI.GetExchangeRate(req); _log.Info("GetExchangeRate | RESPONSE :" + JsonConvert.SerializeObject(res)); _response.ResponseCode = res.ResponseCode; _response.Msg = res.ResponseMessage; _response.Extra = res.PayoutBranchCode; _response.Extra2 = res.CostRate; _response.Id = res.CustomerRate; _response.Data = res; } catch (Exception ex) { _response.ResponseCode = "1"; _response.Msg = "Unknown error!"; _log.ErrorFormat("ExchangeRateResponse | Exception occured On ExchangeRat Method At GCCREMITApi ! Details :" + ex.Message); } return _response; } private static string ObjectToXML(object input) { try { StringWriter stringwriter = new StringWriter(); XmlSerializer serializer = new XmlSerializer(input.GetType()); serializer.Serialize(stringwriter, input); return stringwriter.ToString(); } catch (Exception ex) { if (ex.InnerException != null) ex = ex.InnerException;
return "Could not convert: " + ex.Message; } } private TPResponse SendTransaction(SendTransaction sendTransferRequest) { TPResponse _response = new TPResponse();
SendTransferRequest mapreq = SendTransferMap(sendTransferRequest); ExchangeRate exrate = new ExchangeRate() { PAgentId = mapreq.PayoutBranchCode }; TPResponse exrateRes = GetExRate(exrate); mapreq.CostRate = exrateRes.Extra2;
var costR = Convert.ToDecimal(mapreq.CostRate); var payoutA = Convert.ToDecimal(mapreq.PayoutAmount); var paingA = payoutA / costR; mapreq.PayinAmount = paingA.ToString();
try { _log.Info("SendTransferRequest | REQUEST :" + JsonConvert.SerializeObject(mapreq)); // _log.Info("SendTransferRequest | REQUEST :" + ObjectToXML(mapreq));
SendTransferResponse res = _sendAPI.SendTransfer(mapreq);
// _log.Info("SendTransferResponse | RESPONSE :" + ObjectToXML(res));
_log.Info("SendTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(res));
_response.ResponseCode = res.ResponseCode == "001" ? "0" : "1"; _response.Id = res.TransactionNo; //_response.Extra = res.PayoutCountryName;
_response.Msg = res.ResponseMessage; //_response.Extra1 =
_response.Data = res; } catch (Exception ex) { _response.ResponseCode = "1"; _response.Msg = "Unknown error!"; _log.ErrorFormat("SendTransferResponse | Exception occured On SendTransfer Method At GCCREMITApi ! Details :" + ex.Message); } return _response; } private SendTransferRequest SendTransferMap(SendTransaction sT) { return new SendTransferRequest() { UniqueID = PartnerId, Password = Password, SecurityKey = SecurityKey, PayoutBranchCode = sT.Agent.PBranchId, BankAccountNo = sT.Receiver.RAccountNo, BankAddress = sT.Receiver.RCountry,//"India",
BankBranchCode = sT.Agent.PAgentName, // get IFSC code
BankBranchName = sT.Agent.PBankBranchName, BankCity = sT.Agent.PBranchCity, BankCountry = sT.Receiver.RCountryId.ToString(), BankName = sT.Agent.PBankName, BankState = "",//sT.BankState,
BankZipCode = "",//sT.BankZipCode,
PayoutAmount = sT.Transaction.PAmt.ToString(), PayinAmount = sT.Transaction.TAmt.ToString(), //ExtensionData = '',
PayoutCurrencyCode = sT.Transaction.PCurr, CostRate = sT.Transaction.ExRate.ToString(), PurposeCode = sT.Transaction.PurposeOfRemittanceName, ReceiverAddress = sT.Receiver.RAdd1, ReceiverDOB = sT.Receiver.RDob, ReceiverFirstName = sT.Receiver.RFirstName, ReceiverMiddleName = sT.Receiver.RMiddleName, ReceiverLastName = sT.Receiver.RLastName, ReceiverFourthName = "",//sT.Receiver.,
ReceiverIDExpiryDate = sT.Receiver.RIdValidDate, ReceiverIDNumber = sT.Receiver.RIdNo, ReceiverIDPlaceOfIssue = "",//sT.Receiver.reid,
ReceiverIDType = sT.Receiver.RIdType, ReceiverMessage = "",//sT.Receiver.me,,
ReceiverMobileNo = sT.Receiver.RMobile, //ReceiverNationality = "IN",// sT.Receiver.RCountry,//
ReceiverNationality = sT.Receiver.RNativeCountry, ReceiverTelephoneNo = sT.Receiver.RTel, ReceiverRelationship = sT.Receiver.RelWithSenderName,//"Self",
ReceiverZipCode = "",//sT.Receiver,
ReferenceNo = sT.Transaction.JMEControlNo, SenderDOB = sT.Sender.SBirthDate, SenderEmail = sT.Sender.SEmail, SenderFirstName = sT.Sender.SFirstName, SenderMiddleName = sT.Sender.SMiddleName, SenderLastName = sT.Sender.SLastName1, SenderFourthName = sT.Sender.SLastName2, SenderTelephoneNo = "", SenderIDExpiryDate = sT.Sender.SIdExpiryDate, SenderIDNumber = sT.Sender.SIdNo, // SenderIDPlaceOfIssue = "GB",//sT.Sender.SZipCode,
SenderIDPlaceOfIssue = sT.Sender.SZipCode, SenderIDType = sT.Sender.SIdType, SenderMobileNo = sT.Sender.SMobile, SenderNationality = sT.Sender.SCountryName, //SenderTelephoneNo = sT.Sender.STel,
//SenderEmail = sT.Sender.SEmail,
SenderZipCode = "", //sT.Sender.SZipCode,
SenderAddress = sT.Sender.SAddress, TransactionNo = "",//sT.TranId.ToString(),
}; }
private TPResponse ApproveTransfer(TFReleaseTxnRequest approve) { //DbResult response = new DbResult();
//TPResponse _response = new TPResponse();
TPResponse _response = new TPResponse(); ApproveTransferRequest req = new ApproveTransferRequest() { UniqueID = PartnerId, Password = Password, SecurityKey = SecurityKey, TransactionNo = approve.TxnId, }; ///ApproveTransferRequest appMap = ApproveTransferMap(approveTransferRequest);
try { // _log.Info("ApproveTransferRequest | REQUEST :" + JsonConvert.SerializeObject(appMap));
_log.Info("ApproveTransferRequest | REQUEST :" + ObjectToXML(req));
var res = _sendAPI.ApproveTransfer(req);
//_log.Info("ApproveTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(res));
_log.Info("ApproveTransferResponse | RESPONSE :" + ObjectToXML(res)); _response.ResponseCode = res.ResponseCode == "001" ? "0" : "1";
_response.Msg = res.ResponseMessage; _response.Data = res;
} catch (Exception ex) { _response.ResponseCode = "1"; _response.Msg = "Unknown error!"; _log.ErrorFormat("ApproveTransferResponse | Exception occured On ApproveTransfer Method At GCCREMITApi ! Details :" + ex.Message); } return _response; }
private TPResponse GetTransferStatus(GetStatus status) {
TPResponse _response = new TPResponse(); TransferStatusRequest req = new TransferStatusRequest() { UniqueID = PartnerId, Password = Password, SecurityKey = SecurityKey, TransactionNo = status.PartnerPinNo, };
try {
_log.Info("StatusTransferRequest | REQUEST :" + ObjectToXML(req));
var res = _sendAPI.GetTransferStatus(req);
_log.Info("StatusTransferResponse | RESPONSE :" + ObjectToXML(res)); _response.ResponseCode = res.ResponseCode == "001" ? "0" : "1";
_response.Msg = res.ResponseMessage; _response.Data = res;
} catch (Exception ex) { _response.ResponseCode = "1"; _response.Msg = "Unknown error!"; _log.ErrorFormat("StatusrResponse | Exception occured On ApproveTransfer Method At GCCREMITApi ! Details :" + ex.Message); } return _response; } //private ApproveTransferRequest ApproveTransferMap(TFReleaseTxnRequest ap)
//{
// return new ApproveTransferRequest()
// {
// UniqueID = PartnerId,
// Password = Password,
// SecurityKey = SecurityKey,
// //TransactionNo = ap.TxnId
// };
//}
private TPResponse CancelTransfer(CancelTransferRequest cancelTransferRequest) { DbResult response = new DbResult(); TPResponse _response = new TPResponse(); CancelTransferRequest cancMap = CancelTransferMap(cancelTransferRequest); try { _log.Info("CancelTransferRequest | REQUEST :" + JsonConvert.SerializeObject(cancelTransferRequest));
var req = _sendAPI.CancelTransfer(cancMap);
_log.Info("CancelTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(req));
_response.Data = response; _response.Msg = req.ResponseMessage; _response.ResponseCode = "0"; } catch (Exception ex) { _response.ResponseCode = "1"; _response.Msg = "Unknown error!"; _log.ErrorFormat("SendTransferResponse | Exception occured On ApproveTransfer Method At GCCREMITApi ! Details :" + ex.Message); } return _response; } private CancelTransferRequest CancelTransferMap(CancelTransferRequest tc) { return new CancelTransferRequest() { TransactionNo = tc.TransactionNo, Remarks = tc.Remarks
}; } private TPResponse RefundTransfer(RefundTransferRequest refundTransferRequest) { DbResult response = new DbResult(); TPResponse _response = new TPResponse(); RefundTransferRequest cancMap = RefundTransferMap(refundTransferRequest); try { _log.Info("RefundTransferRequest | REQUEST :" + JsonConvert.SerializeObject(refundTransferRequest));
var req = _sendAPI.RefundTransfer(cancMap);
_log.Info("RefundTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(req));
_response.Data = response; _response.Msg = req.ResponseMessage; _response.ResponseCode = "0"; } catch (Exception ex) { _response.ResponseCode = "1"; _response.Msg = "Unknown error!"; _log.ErrorFormat("RefundTransfer | Exception occured On RefundTransfer Method At GCCREMITApi ! Details :" + ex.Message); } return _response; }
private RefundTransferRequest RefundTransferMap(RefundTransferRequest rt) { return new RefundTransferRequest() { TransactionNo = rt.TransactionNo, Remarks = rt.Remarks }; }
private TPResponse ModifyTransfer(ModifyTransferRequest modifyTransferRequest) { throw new NotImplementedException(); }
private TPResponse GetModifyTransferStatus(ModifyTransferStatusRequest modifyTransferStatusRequest) { throw new NotImplementedException(); }
//private TPResponse GetTransferStatus(TransferStatusRequest transferStatusRequest)
//{
// throw new NotImplementedException();
//}
private TPResponse GetTransferFinancialsList(TransferFinancialsRequest transferFinancialsRequest) { throw new NotImplementedException(); }
private TPResponse GetExchangeRateList(ExchangeRateListRequest exchangeRateListRequest) { throw new NotImplementedException(); }
private TPResponse GetAvailableBalance(AvailableBalanceRequest availableBalanceRequest) { throw new NotImplementedException(); }
private TPResponse GetIDTypeList(IDTypeListRequest iDTypeListRequest) { throw new NotImplementedException(); }
private TPResponse GetPurposeList(PurposeListRequest purposeListRequest) { throw new NotImplementedException(); }
private TPResponse GetIncomeSourceList(IncomeSourceListRequest incomeSourceListRequest) { throw new NotImplementedException(); }
private TPResponse GetRelationshipList(RelationshipListRequest relationshipListRequest) { throw new NotImplementedException(); }
private TPResponse ChangePassword(ChangePasswordRequest changePasswordRequest) { throw new NotImplementedException(); } private TPResponse GetServiceCharges(ServiceChargesRequest serviceChargesRequest) { throw new NotImplementedException(); }
private TPResponse GetBranchList(BranchListRequest branchListRequest) { throw new NotImplementedException(); }
private TPResponse GetCityList(CityListRequest cityListRequest) { throw new NotImplementedException(); }
private TPResponse GetPaymentModeList(PaymentModeListRequest paymentModeListRequest) { throw new NotImplementedException(); }
private TPResponse GetCurrencyList(CurrencyListRequest currencyListRequest) { throw new NotImplementedException(); } private TPResponse GetCountryList(CountryListRequest countryListRequest) { throw new NotImplementedException(); } } }
|