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.
262 lines
11 KiB
262 lines
11 KiB
using Swift.DAL.BL.System.Utility;
|
|
using Swift.DAL.net.inficare.kumari;
|
|
using Swift.DAL.SwiftDAL;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using System.Web;
|
|
|
|
namespace Swift.DAL.BL.Helper.ThirdParty.KumariBank
|
|
{
|
|
class KumariBankApi
|
|
{
|
|
protected readonly string userName;
|
|
protected readonly string password;
|
|
protected readonly string accessCode;
|
|
protected readonly string complienceAmt;
|
|
public KumariBankApi()
|
|
{
|
|
userName = Utility.GetkumariUserid();
|
|
password = Utility.GetkumariPassword();
|
|
accessCode = Utility.GetkumariAccessCode();
|
|
complienceAmt = Utility.GetComplienceAmount();
|
|
}
|
|
|
|
public Swift.DAL.net.inficare.kumari.iRemitWsPayV49 kumariApi = new Swift.DAL.net.inficare.kumari.iRemitWsPayV49();
|
|
public Return_TXNStatus GetStatus(string user, string refNo, string payTokenId)
|
|
{
|
|
|
|
var _res = new Return_TXNStatus();
|
|
string session = GetAgentSession();
|
|
string signature = GetSignature(session, refNo, payTokenId);
|
|
var requestXml = "refNo=" + refNo + ";payTokenId=" + payTokenId +
|
|
";userSessionId=" + session + ";signature=" + signature;
|
|
var id = ApiUtility.LogRequest(user, "Kumari Bank", "GetStatus", refNo, requestXml).Id;
|
|
try
|
|
{
|
|
_res = kumariApi.GetStatus(accessCode, userName, refNo, session, signature);
|
|
|
|
var responseXml = ApiUtility.ObjectToXML(_res);
|
|
ApiUtility.LogResponse(id, responseXml, "0", "Success");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ApiUtility.LogResponse(id, ex.Message, "999", "Internal Error");
|
|
}
|
|
|
|
return _res;
|
|
}
|
|
|
|
public Return_TXNUnLock TXNUnLock(string user, string refNo, string payTokenId, string subPartnerId)
|
|
{
|
|
string session = GetAgentSession();
|
|
string signature = GetSignature(session, refNo, payTokenId);
|
|
var requestXml = "refNo=" + refNo + ";payTokenId=" + payTokenId +
|
|
";userSessionId=" + session + ";signature=" + signature;
|
|
var _res = new Return_TXNUnLock();
|
|
var id = ApiUtility.LogRequest(user, "Kumari Bank", "TXNUnLock", refNo, requestXml).Id;
|
|
try
|
|
{
|
|
_res = kumariApi.TXNUnLock(accessCode, userName, refNo, session, payTokenId, subPartnerId, signature);
|
|
|
|
var responseXml = ApiUtility.ObjectToXML(_res);
|
|
ApiUtility.LogResponse(id, responseXml, "0", "Success");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ApiUtility.LogResponse(id, ex.Message, "999", "Internal Error");
|
|
}
|
|
|
|
return _res;
|
|
}
|
|
private string GetSignatureForRpt(string value)
|
|
{
|
|
StringBuilder Sb = new StringBuilder();
|
|
using (SHA256 hash = SHA256Managed.Create())
|
|
{
|
|
Encoding enc = Encoding.UTF8;
|
|
Byte[] result = hash.ComputeHash(enc.GetBytes(value));
|
|
|
|
foreach (Byte b in result)
|
|
Sb.Append(b.ToString("x2"));
|
|
}
|
|
return Sb.ToString();
|
|
}
|
|
public Return_TRANSREPORT[] ReconcileReport(string user, string fromDate, string toDate, string reportType)
|
|
{
|
|
string session = GetAgentSession();
|
|
string fromTime = "00:00:00";
|
|
string toTime = "23:59:59";
|
|
string value = accessCode + userName + session + fromDate + fromTime + toDate + toTime + reportType + password;
|
|
string signature = GetSignatureForRpt(value);
|
|
var requestXml = ";userSessionId=" + session + ";signature=" + signature +
|
|
";fromDate=" + fromDate + ";toDate=" + toDate + ";fromTime=" + fromTime + ";toTime=" + toTime +
|
|
";reportType=" + reportType;
|
|
//var _res = new List<Return_TRANSREPORT>();
|
|
var id = ApiUtility.LogRequest(user, "Kumari Bank", "ReconcileReport", "", requestXml).Id;
|
|
try
|
|
{
|
|
var _res = kumariApi.ReconcileReport(accessCode, userName, session, fromDate, fromTime, toDate, toTime, reportType, signature);
|
|
|
|
if (_res == null || _res.Length.Equals(0))
|
|
{
|
|
_res[0].CODE = "1";
|
|
_res[0].MESSAGE = "API Server Could Not Process Your Request.";
|
|
ApiUtility.LogDataError(id, _res[0].CODE, _res[0].MESSAGE);
|
|
return _res;
|
|
}
|
|
else
|
|
{
|
|
var responseXml = ApiUtility.ObjectToXML(_res);
|
|
ApiUtility.LogResponse(id, responseXml, "0", "Success");
|
|
return _res;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ApiUtility.LogResponse(id, ex.Message, "999", "Internal Error");
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public Return_PAYCHECKDetail SelectByPinNo(string user, string branchId, string refNo, string subPartnerId)
|
|
{
|
|
string session = GetAgentSession();
|
|
string signature = GetSignature(session, subPartnerId, refNo);
|
|
var requestXml = "refNo=" + refNo +
|
|
";userSessionId=" + session + ";signature=" + signature;
|
|
var res = new Return_PAYCHECKDetail();
|
|
var id = ApiUtility.LogRequest(user, "Kumari Bank", "PayCheckDetail", refNo, requestXml).Id;
|
|
try
|
|
{
|
|
res = kumariApi.PayTXNCheck(accessCode, userName, refNo, session, subPartnerId, signature);
|
|
|
|
var responseXml = ApiUtility.ObjectToXML(res);
|
|
ApiUtility.LogResponse(id, responseXml, res.CODE, res.MESSAGE);
|
|
|
|
if (res == null)
|
|
{
|
|
ApiUtility.LogDataError(id, "999", "Internal Error");
|
|
}
|
|
else if (res.CODE != "0")
|
|
{
|
|
ApiUtility.LogDataError(id, res.CODE, res.MESSAGE);
|
|
}
|
|
return res;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ApiUtility.LogResponse(id, ex.Message, "999", "Internal Error");
|
|
}
|
|
return res;
|
|
}
|
|
|
|
private string GetSignature(string session, string subPartnerId="", string refNo = "", string payTokenId = "", string pBranch = "", string idType = "", string idNum = "", string idIssuedPlace = "",
|
|
string mobileNum = "", string pAmount = "", string bankName = "", string bankBranchName = "")
|
|
{
|
|
StringBuilder Sb = new StringBuilder();
|
|
string value = "";
|
|
Double amount = Convert.ToDouble(!string.IsNullOrEmpty(pAmount) ? pAmount : "0.00");
|
|
Double complienceAmount = Convert.ToDouble(!string.IsNullOrEmpty(complienceAmt) ? complienceAmt : "0.00");
|
|
if (!string.IsNullOrEmpty(payTokenId))
|
|
{
|
|
if (!string.IsNullOrEmpty(amount.ToString()))
|
|
{
|
|
if (amount <= complienceAmount)
|
|
{
|
|
value = accessCode + userName + refNo + session + payTokenId + pBranch + idType + idNum + idIssuedPlace + mobileNum + subPartnerId + password;
|
|
}
|
|
else
|
|
{
|
|
value = accessCode + userName + refNo + session + subPartnerId + payTokenId + pBranch + idType + idNum + idIssuedPlace + mobileNum + subPartnerId + password;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
value = accessCode + userName + refNo + session + payTokenId + subPartnerId + password;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
value = accessCode + userName + refNo + session + subPartnerId + password;
|
|
}
|
|
|
|
using (SHA256 hash = SHA256Managed.Create())
|
|
{
|
|
Encoding enc = Encoding.UTF8;
|
|
Byte[] result = hash.ComputeHash(enc.GetBytes(value));
|
|
|
|
foreach (Byte b in result)
|
|
Sb.Append(b.ToString("x2"));
|
|
}
|
|
|
|
return Sb.ToString();
|
|
}
|
|
|
|
private string GetAgentSession()
|
|
{
|
|
string session = (DateTime.Now.Ticks + DateTime.Now.Millisecond).ToString();
|
|
return session;
|
|
}
|
|
|
|
internal DbResult PayConfirm(string pBranch, string payTokenId, string refNo, string idType, string idNum, string mobileNum, string idIssuedPlace,
|
|
string bankName, string bankBranchName, string pAmount, string subPartnerId)
|
|
{
|
|
var dr = new DbResult();
|
|
string session = GetAgentSession();
|
|
string signature = GetSignature(session, subPartnerId, refNo, payTokenId, pBranch, idType, idNum, idIssuedPlace, mobileNum, pAmount, bankName, bankBranchName);
|
|
var requestXml = "refNo=" + refNo +
|
|
";userSessionId=" + session + ";signature=" + signature +
|
|
";payTockenId=" + payTokenId + ";pBranch=" + pBranch + ";idType=" + idType + ";idIssuedPlace=" + idIssuedPlace +
|
|
";mobileNumber=" + mobileNum + ";BankName=" + bankName + ";BankBranchName=" + bankBranchName + ";subPartnerId=" + subPartnerId;
|
|
var drApi = ApiUtility.LogRequest(pBranch, "Kumari Bank", "PayConfirm", refNo, requestXml);
|
|
var id = drApi.Id;
|
|
if (!drApi.ErrorCode.Equals("0"))
|
|
{
|
|
dr.SetError(drApi.ErrorCode, "Technical Error. Please try again.", refNo);
|
|
return dr;
|
|
}
|
|
|
|
try
|
|
{
|
|
var res = kumariApi.PayTXNConfirm(accessCode, userName, refNo, session, payTokenId, pBranch, idType, idNum, idIssuedPlace, mobileNum, subPartnerId, "", "",
|
|
bankName, bankBranchName, signature);
|
|
|
|
var responseXml = ApiUtility.ObjectToXML(res);
|
|
ApiUtility.LogResponse(id, responseXml, "0", "Success");
|
|
|
|
if (res.CODE == "0")
|
|
{
|
|
dr.SetError("0", res.MESSAGE, "");
|
|
dr.Extra = res.Confirm_ID;
|
|
dr.Extra2 = res.PayoutCommission;
|
|
}
|
|
else if (res.CODE == "100")
|
|
{
|
|
dr.SetError("0", res.MESSAGE, "");
|
|
dr.Extra = res.Confirm_ID;
|
|
dr.Extra2 = res.PayoutCommission;
|
|
}
|
|
else
|
|
{
|
|
dr.SetError(res.CODE, res.MESSAGE, res.Confirm_ID);
|
|
dr.Extra = res.Confirm_ID;//Api response Code
|
|
ApiUtility.LogDataError(id, dr.ErrorCode, dr.Msg);
|
|
if (subPartnerId.Equals("1"))
|
|
{
|
|
TXNUnLock(pBranch, refNo, payTokenId, subPartnerId);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ApiUtility.LogResponse(id, ex.Message, "999", "Internal Error");
|
|
dr.SetError("1", ex.Message, "");
|
|
}
|
|
return dr;
|
|
}
|
|
}
|
|
}
|