You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
573 lines
22 KiB
573 lines
22 KiB
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();
|
|
}
|
|
}
|
|
}
|