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

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,
};
}
}
}