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

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