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.
163 lines
7.1 KiB
163 lines
7.1 KiB
using System;
|
|
using System.Net;
|
|
using BankOfCeylon.BOCServiceReference;
|
|
using BankOfCeylon.Model;
|
|
using Common.Models.Bank_Account;
|
|
using Common.Models.RequestResponse;
|
|
using Common.Models.Status;
|
|
using Common.Models.TxnModel;
|
|
using Common.TPService;
|
|
using Common.Utility;
|
|
using log4net;
|
|
|
|
namespace BankOfCeylon.BankOfCeylonAPIService
|
|
{
|
|
public class BankOfCeylonAPI : ITPApiServices
|
|
{
|
|
private readonly ILog _log = LogManager.GetLogger(typeof(BankOfCeylonAPI));
|
|
ServiceComClient _service = new ServiceComClient();
|
|
string UserName = GetStatic.ReadWebConfig("boc_username", "");
|
|
string Password = GetStatic.ReadWebConfig("boc_password", "");
|
|
string BankAccLKR = GetStatic.ReadWebConfig("boc_account_no_lkr", "");
|
|
string BankAccUSD = GetStatic.ReadWebConfig("boc_account_no_usd", "");
|
|
string ChargingType = GetStatic.ReadWebConfig("boc_chargin_type", "");
|
|
string SMSAlertReceiver = GetStatic.ReadWebConfig("boc_sms_alert", "");
|
|
|
|
public BankOfCeylonAPI()
|
|
{
|
|
_service.ClientCredentials.UserName.UserName = UserName;
|
|
_service.ClientCredentials.UserName.Password = Password;
|
|
|
|
ServicePointManager.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072 | (SecurityProtocolType)192 | (SecurityProtocolType)48;
|
|
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
|
|
}
|
|
|
|
public TPResponse GetTPResponse<T>(T model, string MethodName) where T : class
|
|
{
|
|
switch (MethodName)
|
|
{
|
|
case "send":
|
|
return SendTransaction(model as SendTransaction);
|
|
case "verify":
|
|
return AccountValidation(model as AccountValidate);
|
|
case "status":
|
|
return GetTxnStatus(model as GetStatus);
|
|
|
|
default:
|
|
return new TPResponse() { ResponseCode = "1", Msg = "Method Name Not Found !" };
|
|
}
|
|
}
|
|
|
|
private TPResponse SendTransaction(SendTransaction sendTransaction)
|
|
{
|
|
SendMoneyModel requestTxn = SendModelMap(sendTransaction);
|
|
|
|
TPResponse _response = new CustomModelValidaton().IsModelValid(requestTxn);
|
|
if (_response == null)
|
|
{
|
|
_response = new TPResponse();
|
|
|
|
string reqJson = GetStatic.ObjectToJson(requestTxn);
|
|
|
|
_log.Info("SendTransaction | REQUEST :" + GetStatic.ObjectToJson(requestTxn));
|
|
|
|
remittanceRespons response = _service.SendRem(requestTxn.CUSPIN, requestTxn.SENDERACCOUNTNO, requestTxn.CURRENCY, requestTxn.REMITTENCETYPE
|
|
, requestTxn.SENDERNAME, requestTxn.BENEFICIARYNAME, requestTxn.BENEFICIARYADD, requestTxn.BENEFICIARYPHONE
|
|
, requestTxn.BENEFICIARYID, requestTxn.BANKACCTNO, requestTxn.BANKNAME, requestTxn.BANKADDRESS, requestTxn.SENDERPHONE
|
|
, requestTxn.SENDRESINFO, requestTxn.TRANSACTIONREF, requestTxn.SMSALERT, requestTxn.AMOUNT, requestTxn.CHARGE);
|
|
|
|
string resJson = GetStatic.ObjectToJson(response);
|
|
_log.Info("SendTransaction | RESPONSE :" + GetStatic.ObjectToJson(response));
|
|
|
|
_response.ResponseCode = response.responseCode == "456" ? "0" : "1";
|
|
_response.Msg = response.msg;
|
|
//_response.Extra = response.response;
|
|
_response.Data = response;
|
|
}
|
|
else
|
|
{
|
|
_log.Info("SendTransaction | MODEL VALIDATION FAILED :" + GetStatic.ObjectToJson(requestTxn));
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
private TPResponse GetTxnStatus(GetStatus getStatus)
|
|
{
|
|
TPResponse _response = new CustomModelValidaton().IsModelValid(getStatus);
|
|
if (_response == null)
|
|
{
|
|
_response = new TPResponse();
|
|
_log.Info("GetTxnStatus | REQUEST :" + GetStatic.ObjectToJson(getStatus));
|
|
|
|
remittanceRespons response = _service.StatusRem(getStatus.ControlNo);
|
|
|
|
_log.Info("GetTxnStatus | RESPONSE :" + GetStatic.ObjectToJson(response));
|
|
|
|
string paidStatus = "UNPAID";
|
|
if (response.response.responseStatusCode == "514")
|
|
paidStatus = "PAID";
|
|
if (response.response.responseStatusCode == "515")
|
|
paidStatus = "PAID";
|
|
if (response.response.responseStatusCode == "516")
|
|
paidStatus = "PAID";
|
|
if (response.response.responseStatusCode == "615")
|
|
paidStatus = "PAID";
|
|
|
|
_response.ResponseCode = paidStatus == "PAID" ? "0" : "1";
|
|
_response.Msg = response.response.resposnseStatusMsg;
|
|
_response.Extra = paidStatus;
|
|
_response.Extra2 = response.response.responseStatusCode;
|
|
_response.Data = response.response;
|
|
|
|
if (!_response.ResponseCode.Equals("0"))
|
|
{
|
|
_response.ResponseCode = "1";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
_log.Info("GetTxnStatus | MODEL VALIDATION FAILED :" + GetStatic.ObjectToJson(getStatus).ToString());
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
private SendMoneyModel SendModelMap(SendTransaction sendTransaction)
|
|
{
|
|
return new SendMoneyModel {
|
|
CUSPIN = sendTransaction.Transaction.JMEControlNo,
|
|
SENDERACCOUNTNO = sendTransaction.Transaction.PCurr.ToLower() == "lkr" ? BankAccLKR : BankAccUSD,
|
|
CURRENCY = sendTransaction.Transaction.PCurr,
|
|
REMITTENCETYPE = sendTransaction.Transaction.PaymentType,
|
|
SENDERNAME = sendTransaction.Sender.SFullName,
|
|
BENEFICIARYNAME = sendTransaction.Receiver.RFullName,
|
|
BENEFICIARYADD = sendTransaction.Receiver.RAdd1,
|
|
BENEFICIARYPHONE = sendTransaction.Receiver.RMobile,
|
|
BENEFICIARYID = sendTransaction.Receiver.RIdNo,
|
|
BANKACCTNO = sendTransaction.Receiver.RAccountNo,
|
|
BANKNAME = sendTransaction.Agent.PBankId,
|
|
BANKADDRESS = sendTransaction.Receiver.RLocation,
|
|
SENDERPHONE = sendTransaction.Sender.SMobile,
|
|
SENDRESINFO = sendTransaction.Transaction.PayoutMsg,
|
|
TRANSACTIONREF = sendTransaction.TranId.ToString(),
|
|
SMSALERT = SMSAlertReceiver,
|
|
AMOUNT = Convert.ToDouble(sendTransaction.Transaction.PAmt),
|
|
CHARGE = ChargingType
|
|
};
|
|
}
|
|
|
|
private TPResponse AccountValidation(AccountValidate accountValidate)
|
|
{
|
|
TPResponse response = new TPResponse();
|
|
response.SetResponse("1", "Invalid Account", null);
|
|
|
|
verifyAccResponse res = _service.VerifyAccount(accountValidate.AccountNumber);
|
|
|
|
if (res.verifyCode == "028")
|
|
{
|
|
response.ResponseCode = "0";
|
|
response.Msg = res.verifyMsg;
|
|
}
|
|
return response;
|
|
}
|
|
}
|
|
}
|