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.
339 lines
15 KiB
339 lines
15 KiB
using Common.Models.Agent;
|
|
using Common.Models.Bank;
|
|
using Common.Models.RequestResponse;
|
|
using Common.Models.Status;
|
|
using Common.Models.TxnModel;
|
|
using Common.TPService;
|
|
using Common.Utility;
|
|
using JMENepal.com.jmenepal;
|
|
using JMENepal.Model;
|
|
using log4net;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
|
|
namespace JMENepal.JMENepalAPIService
|
|
{
|
|
public class JMENepalAPI : ITPApiServices
|
|
{
|
|
private readonly ILog _log = LogManager.GetLogger(typeof(JMENepalAPI));
|
|
protected readonly iRemitService _jmeService = new iRemitService();
|
|
|
|
public TPResponse GetTPResponse<T>(T model, string MethodName) where T : class
|
|
{
|
|
switch (MethodName)
|
|
{
|
|
case "send":
|
|
return SendTransaction(model as SendTransaction);
|
|
|
|
case "bankList":
|
|
return GetBankList(model as BankRequest);
|
|
|
|
case "agentList":
|
|
return GetAgentList(model as AgentRequest);
|
|
|
|
case "status":
|
|
return GetTxnStatus(model as GetStatus);
|
|
|
|
case "cancelSend":
|
|
return CancelTransaction(model as CancelTxn);
|
|
|
|
case "amendmentRequest":
|
|
return AmendmentRequest(model as TxnAmendment);
|
|
|
|
default:
|
|
return new TPResponse() { ResponseCode = "1", Msg = "Method Name Not Found !" };
|
|
}
|
|
}
|
|
|
|
private TPResponse SendTransaction(SendTransaction sendTransaction)
|
|
{
|
|
JMESendTxn cTI = SendTransactionValidation(sendTransaction);
|
|
TPResponse _response = new CustomModelValidaton().IsModelValid(cTI);
|
|
|
|
if (_response == null)
|
|
{
|
|
_response = new TPResponse();
|
|
string signature = GetSignatureIdForSendTxn(cTI);
|
|
|
|
cTI.SIGNATURE = signature;
|
|
_log.Info("SendTransaction | REQUEST :" + JsonConvert.SerializeObject(cTI));
|
|
Return_CreateTXN _jmeResponse = _jmeService.SendTransaction
|
|
(
|
|
cTI.AGENT_CODE, cTI.USER_ID, cTI.AGENT_SESSION_ID, cTI.AGENT_TXNID, cTI.LOCATION_ID, cTI.SENDER_NAME, cTI.SENDER_ADDRESS
|
|
, cTI.SENDER_MOBILE, cTI.SENDER_CITY, cTI.SENDER_COUNTRY, cTI.SENDER_ID_TYPE, cTI.SENDER_ID_NUMBER, cTI.SENDER_ID_ISSUE_DATE
|
|
, cTI.SENDER_ID_EXPIRE_DATE, cTI.SENDER_DATE_OF_BIRTH, cTI.RECEIVER_NAME, cTI.RECEIVER_ADDRESS, cTI.RECEIVER_CONTACT_NUMBER
|
|
, cTI.RECEIVER_CITY, cTI.RECEIVER_COUNTRY, cTI.TRANSFERAMOUNT, cTI.PAYMENTMODE, cTI.BANKID, cTI.BANK_NAME, cTI.BANK_BRANCH_NAME
|
|
, cTI.BANK_ACCOUNT_NUMBER, cTI.CAL_BY, cTI.AUTHORIZED_REQUIRED, cTI.OURSERVICECHARGE, cTI.TRANSACTION_EXCHANGERATE
|
|
, cTI.SETTLEMENT_DOLLARRATE, cTI.REPRESENTIVE_NAME, cTI.SOURCE_OF_FUND, cTI.PURPOSE_OF_REMITTANCE, cTI.SENDER_OCCUPATION
|
|
, cTI.SENDER_NATIONALITY, cTI.RELATIONSHIP_TO_BENEFICIARY, cTI.PARTNER_USERID, "", signature
|
|
);
|
|
_log.Info("SendTransaction | RESPONSE :" + JsonConvert.SerializeObject(_jmeResponse).ToString());
|
|
|
|
_response.ResponseCode = _jmeResponse.CODE;
|
|
if (!_jmeResponse.CODE.Equals("0"))
|
|
{
|
|
_response.ResponseCode = "1";
|
|
}
|
|
_response.Msg = _jmeResponse.MESSAGE;
|
|
_response.Id = _jmeResponse.PINNO;
|
|
_response.Data = _jmeResponse;
|
|
}
|
|
else
|
|
{
|
|
_log.Info("SendTransaction | MODEL VALIDATION FAILED :" + JsonConvert.SerializeObject(cTI).ToString());
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
private TPResponse GetAgentList(AgentRequest aR)
|
|
{
|
|
JMEAgent jMEAgent = JMEAgentModelConvert(aR);
|
|
TPResponse _response = new CustomModelValidaton().IsModelValid(jMEAgent);
|
|
if (_response == null)
|
|
{
|
|
_response = new TPResponse();
|
|
|
|
string signature = GetStatic.ComputeSha256Hash(jMEAgent.AGENT_CODE + jMEAgent.USER_ID + jMEAgent.AGENT_SESSION_ID + jMEAgent.PAYMENTTYPE + jMEAgent.PAYOUT_COUNTRY + jMEAgent.Ext_Bank_ID + jMEAgent.Password);
|
|
Return_AGENTLIST[] _agentList = _jmeService.GetAgentList(jMEAgent.AGENT_CODE, jMEAgent.USER_ID, jMEAgent.AGENT_SESSION_ID, jMEAgent.PAYMENTTYPE, jMEAgent.PAYOUT_COUNTRY, jMEAgent.Ext_Bank_ID, signature);
|
|
_response.ResponseCode = "0";
|
|
_response.Data = _agentList;
|
|
}
|
|
else
|
|
{
|
|
_log.Info("GetAgentList | MODEL VALIDATION FAILED :" + JsonConvert.SerializeObject(jMEAgent).ToString());
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
private TPResponse GetBankList(BankRequest bR)
|
|
{
|
|
JMEBank jmeStatus = JMEBankModelConvert(bR);
|
|
TPResponse _response = new CustomModelValidaton().IsModelValid(jmeStatus);
|
|
if (_response == null)
|
|
{
|
|
_response = new TPResponse();
|
|
|
|
string signature = GetStatic.ComputeSha256Hash(jmeStatus.AGENT_CODE + jmeStatus.USER_ID + jmeStatus.AGENT_SESSION_ID + jmeStatus.Password);
|
|
|
|
Return_AGENTLIST[] _agentList = _jmeService.GetBankList(jmeStatus.AGENT_CODE, jmeStatus.USER_ID, jmeStatus.AGENT_SESSION_ID, signature);
|
|
_response.ResponseCode = "0";
|
|
_response.Data = _agentList;
|
|
}
|
|
else
|
|
{
|
|
_log.Info("GetBankList | MODEL VALIDATION FAILED :" + JsonConvert.SerializeObject(jmeStatus).ToString());
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
private TPResponse GetTxnStatus(GetStatus gS)
|
|
{
|
|
JMETxStatus jmeStatus = JMETxStatusModelConvert(gS);
|
|
TPResponse _response = new CustomModelValidaton().IsModelValid(jmeStatus);
|
|
if (_response == null)
|
|
{
|
|
_response = new TPResponse();
|
|
|
|
string signature = GetStatic.ComputeSha256Hash(jmeStatus.AGENT_CODE + jmeStatus.USER_ID + jmeStatus.PINNO + jmeStatus.AGENT_SESSION_ID + jmeStatus.AGENT_TXNID + jmeStatus.Password);
|
|
|
|
|
|
|
|
_log.Info("GetTxnStatus | REQUEST :" + JsonConvert.SerializeObject(jmeStatus).ToString());
|
|
Return_TXNStatus _statusResponse = _jmeService.QueryTXNStatus(jmeStatus.AGENT_CODE, jmeStatus.USER_ID, jmeStatus.PINNO, jmeStatus.AGENT_SESSION_ID, jmeStatus.AGENT_TXNID, signature);
|
|
_log.Info("GetTxnStatus | RESPONSE :" + JsonConvert.SerializeObject(_statusResponse).ToString());
|
|
|
|
_response.ResponseCode = _statusResponse.CODE;
|
|
if (!_statusResponse.CODE.Equals("0"))
|
|
{
|
|
_response.ResponseCode = "1";
|
|
}
|
|
_response.Msg = _statusResponse.MESSAGE;
|
|
_response.Id = _statusResponse.AGENT_TXNID;
|
|
_response.Extra = _statusResponse.PINNO;
|
|
if (_statusResponse.STATUS != null)
|
|
{
|
|
_response.Extra2 = _statusResponse.STATUS;
|
|
}
|
|
_response.Data = _statusResponse;
|
|
}
|
|
else
|
|
{
|
|
_log.Info("GetTxnStatus | MODEL VALIDATION FAILED :" + JsonConvert.SerializeObject(jmeStatus).ToString());
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
private TPResponse CancelTransaction(CancelTxn cT)
|
|
{
|
|
JMECancelTransaction jC = JMECancelTransactionModelConvert(cT);
|
|
TPResponse _response = new CustomModelValidaton().IsModelValid(jC);
|
|
if (_response == null)
|
|
{
|
|
_response = new TPResponse();
|
|
|
|
string signature = GetStatic.ComputeSha256Hash(jC.AGENT_CODE + jC.USER_ID + jC.PINNO + jC.AGENT_SESSION_ID + jC.CANCEL_REASON + jC.Password);
|
|
|
|
_log.Info("CancelTransaction | REQUEST :" + JsonConvert.SerializeObject(jC).ToString());
|
|
Return_TXNCancel _cancelTxnResponse = _jmeService.CancelTransaction(jC.AGENT_CODE, jC.USER_ID, jC.PINNO, jC.AGENT_SESSION_ID, jC.CANCEL_REASON, signature);
|
|
_log.Info("CancelTransaction | RESPONSE :" + JsonConvert.SerializeObject(_cancelTxnResponse).ToString());
|
|
|
|
_response.ResponseCode = _cancelTxnResponse.CODE;
|
|
if (!_cancelTxnResponse.CODE.Equals("0"))
|
|
{
|
|
_response.ResponseCode = "1";
|
|
}
|
|
_response.Msg = _cancelTxnResponse.MESSAGE;
|
|
_response.Id = _cancelTxnResponse.PINNO;
|
|
_response.Extra = _cancelTxnResponse.PINNO;
|
|
_response.Data = _cancelTxnResponse;
|
|
}
|
|
else
|
|
{
|
|
_log.Info("CancelTransaction | MODEL VALIDATION FAILED :" + JsonConvert.SerializeObject(jC).ToString());
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
private TPResponse AmendmentRequest(TxnAmendment tA)
|
|
{
|
|
JMEAmendment jA = JMEAmendmentModelConvert(tA);
|
|
TPResponse _response = new CustomModelValidaton().IsModelValid(jA);
|
|
if (_response == null)
|
|
{
|
|
_response = new TPResponse();
|
|
|
|
string signature = GetStatic.ComputeSha256Hash(jA.AGENT_CODE + jA.USER_ID + jA.AGENT_SESSION_ID + jA.PINNO
|
|
+ jA.AMENDMENT_FIELD + jA.AMENDMENT_VALUE + jA.Password);
|
|
|
|
|
|
_log.Info("AmendmentRequest | REQUEST :" + JsonConvert.SerializeObject(jA).ToString());
|
|
Return_TXNAMEND _txnAmendmentResponse = _jmeService.AmendmentRequest(jA.AGENT_CODE, jA.USER_ID, jA.AGENT_SESSION_ID, jA.PINNO
|
|
, jA.AMENDMENT_FIELD, jA.AMENDMENT_VALUE, signature);
|
|
_log.Info("SendTransaction | RESPONSE :" + JsonConvert.SerializeObject(_txnAmendmentResponse).ToString());
|
|
|
|
_response.ResponseCode = _txnAmendmentResponse.CODE;
|
|
if (!_txnAmendmentResponse.CODE.Equals("0"))
|
|
{
|
|
_response.ResponseCode = "1";
|
|
}
|
|
_response.Msg = _txnAmendmentResponse.MESSAGE;
|
|
_response.Id = _txnAmendmentResponse.PINNO;
|
|
_response.Extra = _txnAmendmentResponse.PINNO;
|
|
_response.Data = _txnAmendmentResponse;
|
|
}
|
|
else
|
|
{
|
|
_log.Info("AmendmentRequest | MODEL VALIDATION FAILED :" + JsonConvert.SerializeObject(jA).ToString());
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
private string GetSignatureIdForSendTxn(JMESendTxn cTI)
|
|
{
|
|
string decryptedString = cTI.AGENT_CODE + cTI.USER_ID + cTI.AGENT_SESSION_ID + cTI.AGENT_TXNID + cTI.LOCATION_ID + cTI.SENDER_NAME + cTI.SENDER_ADDRESS
|
|
+ cTI.SENDER_MOBILE + cTI.SENDER_CITY + cTI.SENDER_COUNTRY + cTI.SENDER_ID_TYPE + cTI.SENDER_ID_NUMBER + cTI.SENDER_ID_ISSUE_DATE
|
|
+ cTI.SENDER_ID_EXPIRE_DATE + cTI.SENDER_DATE_OF_BIRTH + cTI.RECEIVER_NAME + cTI.RECEIVER_ADDRESS + cTI.RECEIVER_CONTACT_NUMBER
|
|
+ cTI.RECEIVER_CITY + cTI.RECEIVER_COUNTRY + cTI.TRANSFERAMOUNT + cTI.PAYMENTMODE + cTI.BANKID + cTI.BANK_NAME + cTI.BANK_BRANCH_NAME
|
|
+ cTI.BANK_ACCOUNT_NUMBER + cTI.CAL_BY + cTI.AUTHORIZED_REQUIRED + cTI.OURSERVICECHARGE + cTI.TRANSACTION_EXCHANGERATE
|
|
+ cTI.SETTLEMENT_DOLLARRATE + cTI.REPRESENTIVE_NAME + cTI.SOURCE_OF_FUND + cTI.PURPOSE_OF_REMITTANCE + cTI.SENDER_OCCUPATION
|
|
+ cTI.SENDER_NATIONALITY + cTI.RELATIONSHIP_TO_BENEFICIARY + cTI.PARTNER_USERID + cTI.Password;
|
|
|
|
return GetStatic.ComputeSha256Hash(decryptedString);
|
|
}
|
|
|
|
private JMESendTxn SendTransactionValidation(SendTransaction st)
|
|
{
|
|
JMESendTxn jMESendTxn = new JMESendTxn()
|
|
{
|
|
AGENT_SESSION_ID = st.SessionId,
|
|
AGENT_TXNID = st.Transaction.JMEControlNo,
|
|
LOCATION_ID = st.Receiver.RLocation,
|
|
SENDER_NAME = st.Sender.SFullName,
|
|
SENDER_ADDRESS = st.Sender.SAddress,
|
|
SENDER_MOBILE = st.Sender.SMobile,
|
|
SENDER_CITY = st.Sender.SCityId,
|
|
SENDER_COUNTRY = st.Sender.SCountryName,
|
|
SENDER_ID_TYPE = st.Sender.SIdType,
|
|
SENDER_ID_NUMBER = st.Sender.SIdNo,
|
|
SENDER_ID_ISSUE_DATE = st.Sender.SIdIssueDate,
|
|
SENDER_ID_EXPIRE_DATE = st.Sender.SIdExpiryDate,
|
|
SENDER_DATE_OF_BIRTH = st.Sender.SBirthDate,
|
|
RECEIVER_NAME = st.Receiver.RFullName,
|
|
RECEIVER_ADDRESS = st.Receiver.RAdd1,
|
|
RECEIVER_CONTACT_NUMBER = st.Receiver.RMobile,
|
|
RECEIVER_CITY = st.Receiver.RCity,
|
|
RECEIVER_COUNTRY = st.Receiver.RCountry,
|
|
TRANSFERAMOUNT = Convert.ToString(st.Transaction.PAmt),
|
|
PAYMENTMODE = st.Transaction.PaymentType,
|
|
BANKID = Convert.ToString(st.Agent.PBankId),
|
|
BANK_NAME = st.Agent.PBankName,
|
|
BANK_BRANCH_NAME = st.Agent.PBankBranchName,
|
|
BANK_ACCOUNT_NUMBER = st.Receiver.RAccountNo,
|
|
OURSERVICECHARGE = Convert.ToString(st.Transaction.ServiceCharge),
|
|
TRANSACTION_EXCHANGERATE = Convert.ToString(st.Transaction.ExRate),
|
|
SETTLEMENT_DOLLARRATE = Convert.ToString(st.Transaction.SettlementDollarRate),
|
|
SOURCE_OF_FUND = st.Sender.SourceOfFund,
|
|
PURPOSE_OF_REMITTANCE = st.Transaction.PurposeOfRemittanceName,
|
|
SENDER_OCCUPATION = Convert.ToString(st.Sender.SOccuptionName),
|
|
PARTNER_USERID = st.UserName,
|
|
RELATIONSHIP_TO_BENEFICIARY = st.Receiver.RelWithSenderName,
|
|
REPRESENTIVE_NAME = "",
|
|
SENDER_NATIONALITY = st.Sender.SNativeCountry,
|
|
CAL_BY = "P",
|
|
AUTHORIZED_REQUIRED = "N"
|
|
};
|
|
return jMESendTxn;
|
|
}
|
|
|
|
private JMEAgent JMEAgentModelConvert(AgentRequest aR)
|
|
{
|
|
JMEAgent jMEAgent = new JMEAgent()
|
|
{
|
|
AGENT_SESSION_ID = aR.SessionId,
|
|
Ext_Bank_ID = aR.ExternalBankId,
|
|
PAYMENTTYPE = aR.PaymentType,
|
|
PAYOUT_COUNTRY = aR.PayoutCountry,
|
|
};
|
|
return jMEAgent;
|
|
}
|
|
|
|
private JMETxStatus JMETxStatusModelConvert(GetStatus gS)
|
|
{
|
|
return new JMETxStatus()
|
|
{
|
|
AGENT_SESSION_ID = gS.SessionId,
|
|
AGENT_TXNID = gS.ControlNo,
|
|
PINNO = "",
|
|
};
|
|
}
|
|
|
|
private JMECancelTransaction JMECancelTransactionModelConvert(CancelTxn txn)
|
|
{
|
|
return new JMECancelTransaction()
|
|
{
|
|
AGENT_SESSION_ID = txn.SessionId,
|
|
CANCEL_REASON = txn.CancelReason,
|
|
PINNO = txn.PartnerPinNo,
|
|
};
|
|
}
|
|
|
|
private JMEAmendment JMEAmendmentModelConvert(TxnAmendment am)
|
|
{
|
|
return new JMEAmendment()
|
|
{
|
|
AGENT_SESSION_ID = am.SessionId,
|
|
PINNO = am.PartnerPinNo,
|
|
AMENDMENT_FIELD = am.AmendmentField,
|
|
AMENDMENT_VALUE = am.AmendmentValue,
|
|
};
|
|
}
|
|
|
|
private JMEBank JMEBankModelConvert(BankRequest bR)
|
|
{
|
|
return new JMEBank()
|
|
{
|
|
AGENT_SESSION_ID = bR.SessionId,
|
|
};
|
|
}
|
|
}
|
|
}
|