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.
591 lines
25 KiB
591 lines
25 KiB
using Cebuana.Model;
|
|
using Common.Models.RequestResponse;
|
|
using Common.Models.Status;
|
|
using Common.Models.TxnAmendModel;
|
|
using Common.Models.TxnModel;
|
|
using Common.TPService;
|
|
using Common.Utility;
|
|
using log4net;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.IO;
|
|
using System.Net;
|
|
using System.Text;
|
|
using System.Xml;
|
|
using System.Xml.Serialization;
|
|
|
|
namespace Cebuana.ApiService
|
|
{
|
|
public class CebuanaApi : ITPApiServices
|
|
{
|
|
|
|
private readonly ILog _log = LogManager.GetLogger(typeof(CebuanaApi));
|
|
protected string baseCPU_Url { get; set; }
|
|
protected string baseRTA_Url { get; set; }
|
|
protected string partnerCode { get; set; }
|
|
protected string password { get; set; }
|
|
protected string userid { get; set; }
|
|
|
|
protected string baseCPU_Update_Url { get; set; }
|
|
|
|
private const string PUSH_RTA_TXN = "/ProcessRTATransaction";
|
|
private const string PUSH_CPU_TXN = "/ws/PushRemittanceTransactionViaRest";
|
|
private const string CANCEL_CPU_TXN = "/UpdateRemittanceTransaction";
|
|
private const string AMEND_CPU_TXN = "/UpdateRemittanceTransaction";
|
|
|
|
private const string CPU_TRANSFER_STATUS = "/ws/LookUpRemittanceTransactionViaRest";
|
|
private const string RTA_TRANSFER_STATUS = "/InquireRTATransaction";
|
|
|
|
private const string RTA_GET_BANK_LIST = "/GetListOfBanks";
|
|
|
|
public CebuanaApi()
|
|
{
|
|
baseCPU_Url = GetStatic.ReadWebConfig("Cebuana_base_cpu_url", "");
|
|
baseRTA_Url = GetStatic.ReadWebConfig("Cebuana_base_rta_url", "");
|
|
partnerCode = GetStatic.ReadWebConfig("Cebuana_partner_Code", "");
|
|
password = GetStatic.ReadWebConfig("Cebuana_Password", "");
|
|
userid = GetStatic.ReadWebConfig("Cebuana_userid", "");
|
|
|
|
baseCPU_Update_Url = GetStatic.ReadWebConfig("Cebuana_base_cpu_update", "");
|
|
}
|
|
|
|
public TPResponse GetTPResponse<T>(T model, string MethodName) where T : class
|
|
{
|
|
switch (MethodName)
|
|
{
|
|
case "send":
|
|
return SendTransaction(model as SendTransaction);
|
|
case "status":
|
|
return GetStatus(model as GetStatus);
|
|
case "bankList":
|
|
return GetBankList(model as TxnAgent);
|
|
case "cancelSend":
|
|
return CancelTransaction(model as CancelTxn);
|
|
case "amendment":
|
|
return AmendTransaction(model as AmendTransaction);
|
|
default:
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
}
|
|
|
|
private TPResponse SendTransaction(SendTransaction model)
|
|
{
|
|
TPResponse _response = new TPResponse() { ResponseCode = "1" };
|
|
try
|
|
{
|
|
string sendTxnURL = "";
|
|
string requestXml = "";
|
|
string apiType = "";
|
|
|
|
if (model.Transaction.PaymentType.ToLower().Contains("cash"))
|
|
{
|
|
sendTxnURL = $"{baseCPU_Url}{PUSH_CPU_TXN}";
|
|
apiType = "CPU";
|
|
requestXml = MapSendTransactionDataCPU(model, apiType);
|
|
}
|
|
else
|
|
{
|
|
sendTxnURL = $"{baseRTA_Url}{PUSH_RTA_TXN}";
|
|
apiType = "RTA";
|
|
TransactionRequestRTA requestTxn = MapTransactionRequestRTA(model);
|
|
requestXml = JsonConvert.SerializeObject(requestTxn, Newtonsoft.Json.Formatting.None);
|
|
}
|
|
|
|
_log.Info($"{sendTxnURL}|REQUEST : {requestXml}");
|
|
|
|
HttpWebRequest httpWebRequest = WebRequest.Create(@sendTxnURL) as HttpWebRequest;
|
|
byte[] data = Encoding.UTF8.GetBytes(requestXml);
|
|
MemoryStream stm = new MemoryStream(data);
|
|
|
|
httpWebRequest.Method = "POST";
|
|
httpWebRequest.ContentType = apiType.Equals("CPU") ? "text/plain" : "text/json";
|
|
httpWebRequest.ContentLength = data.Length;
|
|
Stream httpstream = httpWebRequest.GetRequestStream();
|
|
httpstream.Write(data, 0, data.Length);
|
|
httpstream.Close();
|
|
|
|
HttpWebResponse resp = (HttpWebResponse)httpWebRequest.GetResponse();
|
|
StreamReader reader = new StreamReader(resp.GetResponseStream());
|
|
String result = reader.ReadToEnd();
|
|
|
|
_log.Info($"{sendTxnURL}|RESPONSE : {result}");
|
|
|
|
if (apiType.Equals("CPU"))
|
|
{
|
|
var objResult = ParseXml<PushRemittanceResult>(result);
|
|
if (objResult.Code.Equals("00"))
|
|
{
|
|
_response.ResponseCode = "0";
|
|
}
|
|
else
|
|
{
|
|
_response.Id = objResult.TransactionID;
|
|
_response.Msg = objResult.Message;
|
|
_response.Extra = objResult.Code;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var objResult = JsonConvert.DeserializeObject<TransactionResult>(result.ToString());
|
|
if (objResult.Code.Equals("00"))
|
|
{
|
|
_response.ResponseCode = "0";
|
|
}
|
|
else
|
|
{
|
|
_response.Id = objResult.ReferenceNumber;
|
|
_response.Msg = objResult.Message;
|
|
_response.Extra = objResult.Code;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_response.ResponseCode = "999";
|
|
_response.Msg = ex.ToString();
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
private string MapSendTransactionDataCPU(SendTransaction model, string type)
|
|
{
|
|
PushRemittanceRequest pushRemittance = new PushRemittanceRequest()
|
|
{
|
|
Amount = model.Transaction.PAmt.ToString(),
|
|
BeneficiaryFirstName = model.Receiver.RFirstName,
|
|
BeneficiaryLastName = $"{(!string.IsNullOrEmpty(model.Receiver.RMiddleName) ? $"{ model.Receiver.RMiddleName}{" "} " : "")}{model.Receiver.RLastName}",
|
|
ControlNumber = model.Transaction.JMEControlNo,
|
|
PartnerCode = partnerCode,
|
|
PayoutCountry = model.Receiver.RCountry.ToString(),
|
|
PayoutCurrency = model.Transaction.PCurr,
|
|
SenderFirstName = $"{(!string.IsNullOrEmpty(model.Sender.SMiddleName) ? $"{ model.Sender.SMiddleName}{" "} " : "")}{model.Sender.SFirstName}",
|
|
SenderLastName = model.Sender.SLastName1,
|
|
SendingCountry = model.Sender.SCountryName,
|
|
SendingCurrency = model.Transaction.CollCurr,
|
|
Password = password,
|
|
UserID = userid
|
|
};
|
|
return XmlSerialize<PushRemittanceRequest>(pushRemittance);
|
|
}
|
|
|
|
private string MapStatusRequestData(GetStatus model, string type)
|
|
{
|
|
LookUpRemittanceRequest lookUpRemittanceRequest = new LookUpRemittanceRequest()
|
|
{
|
|
ControlNumber = model.ControlNo,
|
|
PartnerCode = partnerCode,
|
|
Password = password,
|
|
UserID = userid
|
|
};
|
|
|
|
return XmlSerialize<LookUpRemittanceRequest>(lookUpRemittanceRequest);
|
|
}
|
|
|
|
private TPResponse GetBankList(TxnAgent model)
|
|
{
|
|
// BankList bankResponse = new BankList();
|
|
TPResponse bankResponse = new TPResponse();
|
|
try
|
|
{
|
|
string url = "";
|
|
string requestXml = "";
|
|
url = $"{baseRTA_Url}{RTA_GET_BANK_LIST}";
|
|
requestXml = MapBankList(model);
|
|
|
|
_log.Info($"{RTA_GET_BANK_LIST}|REQUEST : {requestXml}");
|
|
|
|
HttpWebRequest httpWebRequest = WebRequest.Create(@url) as HttpWebRequest;
|
|
byte[] data = Encoding.UTF8.GetBytes(requestXml);
|
|
MemoryStream stm = new MemoryStream(data);
|
|
|
|
httpWebRequest.Method = "POST";
|
|
httpWebRequest.ContentType = "application/xml";
|
|
httpWebRequest.ContentLength = data.Length;
|
|
Stream httpstream = httpWebRequest.GetRequestStream();
|
|
httpstream.Write(data, 0, data.Length);
|
|
httpstream.Close();
|
|
HttpWebResponse resp = (HttpWebResponse)httpWebRequest.GetResponse();
|
|
StreamReader reader = new StreamReader(resp.GetResponseStream());
|
|
String result = reader.ReadToEnd();
|
|
|
|
var objResult = ParseXml<GetListOfBanksResult>(result);
|
|
if (objResult.BankCollection != null)
|
|
{
|
|
bankResponse.Data = objResult;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
bankResponse.ResponseCode = "999";
|
|
bankResponse.Msg = ex.Message;
|
|
}
|
|
return bankResponse;
|
|
}
|
|
|
|
private string MapBankList(TxnAgent model)
|
|
{
|
|
StringBuilder stringBuilder = new StringBuilder($@"<TransactionRequest xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/CebuanaPushRTAWCFServices"" i:type=""RTATransactionRequest"">");
|
|
PartnerCredentials partner = new PartnerCredentials()
|
|
{
|
|
PartnerCode = partnerCode,
|
|
UserID = userid,
|
|
Password = password
|
|
};
|
|
|
|
stringBuilder.Append(XmlSerialize<PartnerCredentials>(partner));
|
|
return stringBuilder.Append("</TransactionRequest>").ToString();
|
|
}
|
|
private TPResponse GetStatus(GetStatus model)
|
|
{
|
|
TPResponse _response = new TPResponse();
|
|
try
|
|
{
|
|
string url = "";
|
|
string requestXml = "";
|
|
string apiType = "";
|
|
if (model.PaymentMethod.ToLower().Contains("cash payment"))
|
|
{
|
|
url = $"{baseCPU_Url}{CPU_TRANSFER_STATUS}";
|
|
apiType = "CPU";
|
|
requestXml = MapStatusRequestData(model, apiType);
|
|
}
|
|
else
|
|
{
|
|
url = $"{baseRTA_Url}{RTA_TRANSFER_STATUS}";
|
|
apiType = "RTA";
|
|
RTAGetStatus requestStatus = MapRTAStatus(model);
|
|
requestXml = JsonConvert.SerializeObject(requestStatus, Newtonsoft.Json.Formatting.None);
|
|
}
|
|
|
|
_log.Info($"{url} | REQUEST : {requestXml}");
|
|
|
|
HttpWebRequest httpWebRequest = WebRequest.Create(@url) as HttpWebRequest;
|
|
byte[] data = Encoding.UTF8.GetBytes(requestXml);
|
|
MemoryStream stm = new MemoryStream(data);
|
|
|
|
httpWebRequest.Method = "POST";
|
|
httpWebRequest.ContentType = apiType.Equals("CPU") ? "text/plain" : "text/json";
|
|
httpWebRequest.ContentLength = data.Length;
|
|
Stream httpstream = httpWebRequest.GetRequestStream();
|
|
httpstream.Write(data, 0, data.Length);
|
|
httpstream.Close();
|
|
HttpWebResponse resp = (HttpWebResponse)httpWebRequest.GetResponse();
|
|
StreamReader reader = new StreamReader(resp.GetResponseStream());
|
|
String result = reader.ReadToEnd();
|
|
|
|
_log.Info($"{url} | RESPONSE : {result}");
|
|
|
|
string paidStatus = "UNPAID";
|
|
|
|
if (apiType.Equals("CPU"))
|
|
{
|
|
var objResult = ParseXml<LookUpRemittanceResult>(result);
|
|
|
|
_response.Data = objResult;
|
|
_response.Extra2 = objResult.Code;
|
|
|
|
if (objResult.Code.Equals("02")) //Paid
|
|
{
|
|
paidStatus = "PAID";
|
|
_response.Extra3 = objResult.PayoutDate;
|
|
}
|
|
if (objResult.Code.Equals("03")) //cancelld
|
|
paidStatus = "CANCELLED";
|
|
|
|
_response.ResponseCode = paidStatus == "PAID" ? "0" : "1";
|
|
_response.Extra = paidStatus;
|
|
_response.Msg = objResult.Message;
|
|
|
|
}
|
|
else
|
|
{
|
|
var objResult = JsonConvert.DeserializeObject<TransactionResult>(result.ToString());
|
|
_response.Data = objResult;
|
|
_response.Extra2 = objResult.Code;
|
|
|
|
if (objResult.Code.Equals("04")) //Paid
|
|
paidStatus = "PAID";
|
|
|
|
_response.ResponseCode = paidStatus == "PAID" ? "0" : "1";
|
|
_response.Extra = paidStatus;
|
|
_response.Msg = objResult.Message;
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_response.ResponseCode = "999";
|
|
_response.Msg = ex.ToString();
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
private static string XmlSerialize<T>(T entity) where T : class
|
|
{
|
|
// removes version
|
|
XmlWriterSettings settings = new XmlWriterSettings();
|
|
settings.OmitXmlDeclaration = true;
|
|
|
|
XmlSerializer xsSubmit = new XmlSerializer(typeof(T));
|
|
using (StringWriter sw = new StringWriter())
|
|
using (XmlWriter writer = XmlWriter.Create(sw, settings))
|
|
{
|
|
// removes namespace
|
|
var xmlns = new XmlSerializerNamespaces();
|
|
xmlns.Add(string.Empty, string.Empty);
|
|
|
|
xsSubmit.Serialize(writer, entity, xmlns);
|
|
return sw.ToString(); // Your XML
|
|
}
|
|
}
|
|
|
|
private static string ObjectToXML(object input)
|
|
{
|
|
try
|
|
{
|
|
StringWriter stringwriter = new StringWriter();
|
|
XmlSerializer serializer = new XmlSerializer(input.GetType());
|
|
serializer.Serialize(stringwriter, input);
|
|
return stringwriter.ToString();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (ex.InnerException != null)
|
|
ex = ex.InnerException;
|
|
|
|
return "Could not convert: " + ex.Message;
|
|
}
|
|
}
|
|
|
|
private T ParseXml<T>(string value) where T : class
|
|
{
|
|
var xmlSerializer = new XmlSerializer(typeof(T));
|
|
using (var textReader = new StringReader(value))
|
|
{
|
|
return (T)xmlSerializer.Deserialize(textReader);
|
|
}
|
|
}
|
|
|
|
private TPResponse CancelTransaction(CancelTxn model)
|
|
{
|
|
TPResponse _response = new TPResponse() { ResponseCode = "1" };
|
|
try
|
|
{
|
|
string cancelTxnURL = "";
|
|
string requestXml = "";
|
|
|
|
cancelTxnURL = $"{baseCPU_Update_Url}{CANCEL_CPU_TXN}";
|
|
requestXml = MapCancelTransaction(model);
|
|
|
|
_log.Info($"{cancelTxnURL}|REQUEST : {requestXml}");
|
|
|
|
HttpWebRequest httpWebRequest = WebRequest.Create(@cancelTxnURL) as HttpWebRequest;
|
|
byte[] data = Encoding.UTF8.GetBytes(requestXml);
|
|
MemoryStream stm = new MemoryStream(data);
|
|
|
|
httpWebRequest.Method = "POST";
|
|
httpWebRequest.ContentType = "application/xml";
|
|
httpWebRequest.ContentLength = data.Length;
|
|
Stream httpstream = httpWebRequest.GetRequestStream();
|
|
httpstream.Write(data, 0, data.Length);
|
|
httpstream.Close();
|
|
|
|
HttpWebResponse resp = (HttpWebResponse)httpWebRequest.GetResponse();
|
|
StreamReader reader = new StreamReader(resp.GetResponseStream());
|
|
String result = reader.ReadToEnd();
|
|
|
|
_log.Info($"{cancelTxnURL}|RESPONSE : {result}");
|
|
|
|
var objResult = ParseXml<CancelTransaction.TransactionResult>(result);
|
|
if (objResult.Code.Equals("00"))
|
|
{
|
|
_response.ResponseCode = "0";
|
|
_response.Msg = "Transaction has been cancelled";
|
|
}
|
|
else
|
|
{
|
|
_response.Msg = objResult.Message;
|
|
_response.Extra = objResult.Code.ToString();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_response.ResponseCode = "999";
|
|
_response.Msg = ex.ToString();
|
|
}
|
|
return _response;
|
|
}
|
|
|
|
private string MapCancelTransaction(CancelTxn model)
|
|
{
|
|
StringBuilder stringBuilder = new StringBuilder($@"<TransactionRequest xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/CebuanaRemittanceDirectUpdater"" i:type=""CancelRemittanceRequest"" >");
|
|
CancelTransaction cancelTransaction = new CancelTransaction()
|
|
{
|
|
PartnerCredentials = new PartnerCredentials()
|
|
{
|
|
PartnerCode = partnerCode,
|
|
UserID = userid,
|
|
Password = password
|
|
},
|
|
TranDetail = new CancelTransaction.TransactionDetails()
|
|
{
|
|
ControlNumber = model.PartnerPinNo,
|
|
Reason = model.CancelReason
|
|
}
|
|
//, __type= "AmendRemittanceRequest:#CebuanaRemittanceDirectUpdater"
|
|
};
|
|
//return JsonConvert.SerializeObject(cancelTransaction, Newtonsoft.Json.Formatting.None);
|
|
stringBuilder.Append(XmlSerialize<PartnerCredentials>(cancelTransaction.PartnerCredentials));
|
|
stringBuilder.Append(XmlSerialize<CancelTransaction.TransactionDetails>(cancelTransaction.TranDetail));
|
|
return stringBuilder.Append("</TransactionRequest>").ToString();
|
|
}
|
|
|
|
private TransactionRequestRTA MapTransactionRequestRTA(SendTransaction model)
|
|
{
|
|
var r = new TransactionRequestRTA
|
|
{
|
|
BeneficiaryDetails = new TransactionRequestRTA.BeneficiaryDetailsData()
|
|
{
|
|
BeneficiaryAddress1 = model.Receiver.RAdd1.Trim(),
|
|
BeneficiaryAddress2 = !string.IsNullOrEmpty(model.Receiver.RLocationName) ? model.Receiver.RLocationName : model.Receiver.RCountry,
|
|
BeneficiaryCity = model.Receiver.RCity.Trim(),
|
|
BeneficiaryFirstName = model.Receiver.RFirstName.Trim(),
|
|
BeneficiaryLastName = model.Receiver.RLastName.Trim(),
|
|
BeneficiaryMiddleName = model.Receiver.RMiddleName.Trim(),
|
|
BeneficiaryMobile = model.Receiver.RMobile,
|
|
BeneficiaryProvince = model.Receiver.RStateId,
|
|
BeneficiaryRelationshipWithSender = model.Receiver.RelWithSenderName.Trim(),
|
|
BeneficiaryZipcode = model.Receiver.RCityCode
|
|
},
|
|
PartnerCredentials = new TransactionRequestRTA.PartnerCredentialsData()
|
|
{
|
|
PartnerCode = partnerCode,
|
|
UserID = userid,
|
|
Password = password
|
|
},
|
|
RemitterDetails = new TransactionRequestRTA.RemitterDetailsData()
|
|
{
|
|
RemitterAddress1 = model.Sender.SAddress.Trim(),
|
|
RemitterAddress2 = model.Sender.SNativeCountry.Trim(),
|
|
RemitterCity = model.Sender.SCityId,
|
|
RemitterCountry = model.Sender.SCountryName.Trim(),
|
|
RemitterFirstName = model.Sender.SFirstName.Trim(),
|
|
RemitterLastName = model.Sender.SLastName1.Trim(),
|
|
RemitterMiddleName = model.Sender.SMiddleName.Trim(),
|
|
RemitterProvince = model.Sender.SState.Trim(),
|
|
RemitterZipcode = model.Sender.SZipCode
|
|
},
|
|
TransactionDetails = new TransactionRequestRTA.TransactionDetailsData()
|
|
{
|
|
AccountNumber = model.Receiver.RAccountNo,
|
|
Amount = String.Format("{0:0.00}", model.Transaction.PAmt),
|
|
Currency = model.Transaction.PCurr,
|
|
PurposeOfTransaction = model.Transaction.PurposeOfRemittanceName
|
|
},
|
|
BankCode = model.Agent.PBankId,
|
|
ReferenceNumber = model.Transaction.JMEControlNo,
|
|
__type = "RTATransactionRequest:#CebuanaPushRTAWCFServices"
|
|
};
|
|
return r;
|
|
}
|
|
|
|
private RTAGetStatus MapRTAStatus(GetStatus model)
|
|
{
|
|
var r = new RTAGetStatus
|
|
{
|
|
__type = "RTATransactionRequest:#CebuanaPushRTAWCFServices",
|
|
PartnerCredentials = new PartnerCredentials()
|
|
{
|
|
PartnerCode = partnerCode,
|
|
Password = password,
|
|
UserID = userid
|
|
},
|
|
ReferenceNumber = model.ControlNo
|
|
};
|
|
return r;
|
|
}
|
|
|
|
private TPResponse AmendTransaction(AmendTransaction model)
|
|
{
|
|
TPResponse _response = new TPResponse() { ResponseCode = "1" };
|
|
try
|
|
{
|
|
string amendTxnURL = "";
|
|
string requestXml = "";
|
|
|
|
amendTxnURL = $"{baseCPU_Update_Url}{AMEND_CPU_TXN}";
|
|
requestXml = MapAmendTransaction(model);
|
|
|
|
_log.Info($"{amendTxnURL}|REQUEST : {requestXml}");
|
|
|
|
HttpWebRequest httpWebRequest = WebRequest.Create(@amendTxnURL) as HttpWebRequest;
|
|
byte[] data = Encoding.UTF8.GetBytes(requestXml);
|
|
MemoryStream stm = new MemoryStream(data);
|
|
|
|
httpWebRequest.Method = "POST";
|
|
httpWebRequest.ContentType = "application/xml";
|
|
httpWebRequest.ContentLength = data.Length;
|
|
Stream httpstream = httpWebRequest.GetRequestStream();
|
|
httpstream.Write(data, 0, data.Length);
|
|
httpstream.Close();
|
|
|
|
HttpWebResponse resp = (HttpWebResponse)httpWebRequest.GetResponse();
|
|
StreamReader reader = new StreamReader(resp.GetResponseStream());
|
|
String result = reader.ReadToEnd();
|
|
|
|
_log.Info($"{amendTxnURL}|RESPONSE : {result}");
|
|
|
|
var objResult = ParseXml<AmendTransactionPartner.TransactionResult>(result);
|
|
if (objResult.Code.Equals("00"))
|
|
{
|
|
_response.ResponseCode = "0";
|
|
}
|
|
else
|
|
{
|
|
// _response.Id = objResult.TransactionID;
|
|
_response.Msg = objResult.Message.Replace("'", "");
|
|
_response.Extra = objResult.Code;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_response.ResponseCode = "999";
|
|
_response.Msg = ex.Message;
|
|
|
|
_log.Error(ex.ToString());
|
|
}
|
|
return _response;
|
|
}
|
|
private string MapAmendTransaction(AmendTransaction model)
|
|
{
|
|
StringBuilder stringBuilder = new StringBuilder($@"<TransactionRequest xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/CebuanaRemittanceDirectUpdater"" i:type=""AmendRemittanceRequest"" >");
|
|
|
|
|
|
AmendTransactionPartner amend = new AmendTransactionPartner()
|
|
{
|
|
PartnerCredentials = new PartnerCredentials()
|
|
{
|
|
PartnerCode = partnerCode,
|
|
UserID = userid,
|
|
Password = password
|
|
},
|
|
TranDetail = new AmendTransactionPartner.TransactionDetails()
|
|
{
|
|
ControlNumber = model.TfPinno,
|
|
Reason = model.Reason
|
|
},
|
|
BeneficiaryFirstName = $"{model.AmendReceiver.RFirstName.Trim()}{(!string.IsNullOrEmpty(model.AmendReceiver.RMiddleName) ? $"{" "}{ model.AmendReceiver.RMiddleName.Trim()}" : "")}",
|
|
BeneficiaryLastName = model.AmendReceiver.RLastName
|
|
};
|
|
|
|
|
|
stringBuilder.Append(XmlSerialize<PartnerCredentials>(amend.PartnerCredentials));
|
|
stringBuilder.Append(XmlSerialize<AmendTransactionPartner.TransactionDetails>(amend.TranDetail));
|
|
stringBuilder.Append($"<BeneficiaryFirstName>{amend.BeneficiaryFirstName}</BeneficiaryFirstName>");
|
|
stringBuilder.Append($"<BeneficiaryLastName>{amend.BeneficiaryLastName}</BeneficiaryLastName>");
|
|
|
|
return stringBuilder.Append("</TransactionRequest>").ToString();
|
|
}
|
|
}
|
|
}
|