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.

573 lines
22 KiB

6 months ago
  1. using Common.Models.Agent;
  2. using Common.Models.Bank;
  3. using Common.Models.ExchangeRate;
  4. using Common.Models.RequestResponse;
  5. using Common.Models.Status;
  6. using Common.Models.TxnModel;
  7. using Common.TPService;
  8. using Common.Utility;
  9. using GMENepal.GMEReference;
  10. using log4net;
  11. using Newtonsoft.Json;
  12. using System;
  13. using System.IO;
  14. using System.Xml.Serialization;
  15. using TPApiServices.GCCReference;
  16. namespace TPService.GCC.Services
  17. {
  18. public class GCCAPI : ITPApiServices
  19. {
  20. //private readonly ISendAPI _sendAPI;
  21. private readonly ILog _log = LogManager.GetLogger(typeof(GCCAPI));
  22. private readonly SendAPIClient _sendAPI = new SendAPIClient();
  23. string PartnerId = GetStatic.ReadWebConfig("gcc_partnerId", "");
  24. string Password = GetStatic.ReadWebConfig("gcc_password", "");
  25. string SecurityKey = GetStatic.ReadWebConfig("gcc_securityKey", "");
  26. public TPResponse GetTPResponse<T>(T model, string MethodName) where T : class
  27. {
  28. switch (MethodName)
  29. {
  30. case "getCountryList":
  31. return GetCountryList(model as CountryListRequest);
  32. case "currencyList":
  33. return GetCurrencyList(model as CurrencyListRequest);
  34. case "paymentModeList":
  35. return GetPaymentModeList(model as PaymentModeListRequest);
  36. case "agentList":
  37. return GetCityList(model as AgentRequest);
  38. case "bankList":
  39. return GetBranchList(model as BankRequest);
  40. case "exchangeRate":
  41. return GetExRate(model as ExchangeRate);
  42. case "serviceCharge":
  43. return GetServiceCharges(model as ServiceChargesRequest);
  44. case "send":
  45. return SendTransaction(model as SendTransaction);
  46. case "release":
  47. return ApproveTransfer(model as TFReleaseTxnRequest);
  48. case "status":
  49. return GetTransferStatus(model as GetStatus);
  50. case "cancelTransfer":
  51. return CancelTransfer(model as CancelTransferRequest);
  52. case "refundTransfer":
  53. return RefundTransfer(model as RefundTransferRequest);
  54. case "modifyTransfer":
  55. return ModifyTransfer(model as ModifyTransferRequest);
  56. case "modifyTransferStatus":
  57. return GetModifyTransferStatus(model as ModifyTransferStatusRequest);
  58. case "transferFinancialsList":
  59. return GetTransferFinancialsList(model as TransferFinancialsRequest);
  60. case "exchangeRateList":
  61. return GetExchangeRateList(model as ExchangeRateListRequest);
  62. case "availableBalance":
  63. return GetAvailableBalance(model as AvailableBalanceRequest);
  64. case "idTypeList":
  65. return GetIDTypeList(model as IDTypeListRequest);
  66. case "purposeList":
  67. return GetPurposeList(model as PurposeListRequest);
  68. case "incomeSourceList":
  69. return GetIncomeSourceList(model as IncomeSourceListRequest);
  70. case "relationshipList":
  71. return GetRelationshipList(model as RelationshipListRequest);
  72. case "ChangePassword":
  73. return ChangePassword(model as ChangePasswordRequest);
  74. default:
  75. return new TPResponse() { ResponseCode = "1", Msg = "Method Name Not Found !" };
  76. }
  77. }
  78. private TPResponse GetCityList(AgentRequest getCity)
  79. {
  80. TPResponse _response = new TPResponse();
  81. CityListRequest req = new CityListRequest()
  82. {
  83. UniqueID = PartnerId,
  84. Password = Password,
  85. SecurityKey = SecurityKey,
  86. CountryCode = getCity.PayoutCountry,
  87. CurrencyCode = getCity.ExternalBankId,
  88. PaymentModeCode = getCity.PaymentType,
  89. //PayoutBranchCode = exRate.PAgentId
  90. };
  91. try
  92. {
  93. _log.Info("GetExchangeRate | REQUEST :" + JsonConvert.SerializeObject(req));
  94. CityListResponse res = _sendAPI.GetCityList(req);
  95. _log.Info("GetExchangeRate | RESPONSE :" + JsonConvert.SerializeObject(res));
  96. _response.ResponseCode = res.ResponseCode;
  97. _response.Msg = res.ResponseMessage;
  98. //_response.Extra = res.g;
  99. //_response.Extra2 = res.CostRate;
  100. //_response.Id = res.CustomerRate;
  101. _response.Data = res;
  102. }
  103. catch (Exception ex)
  104. {
  105. _response.ResponseCode = "1";
  106. _response.Msg = "Unknown error!";
  107. _log.ErrorFormat("ExchangeRateResponse | Exception occured On ExchangeRat Method At GCCREMITApi ! Details :" + ex.Message);
  108. }
  109. return _response;
  110. }
  111. private TPResponse GetBranchList(BankRequest getbranch)
  112. {
  113. TPResponse _response = new TPResponse();
  114. BranchListRequest req = new BranchListRequest()
  115. {
  116. UniqueID = PartnerId,
  117. Password = Password,
  118. SecurityKey = SecurityKey,
  119. CountryCode = getbranch.CountryCode,
  120. CurrencyCode = getbranch.BankName,
  121. PaymentModeCode = getbranch.PaymentMethod,
  122. CityCode = getbranch.CityId.ToString(),
  123. Search = "",
  124. //PayoutBranchCode = exRate.PAgentId
  125. };
  126. try
  127. {
  128. _log.Info("GetExchangeRate | REQUEST :" + JsonConvert.SerializeObject(req));
  129. BranchListResponse res = _sendAPI.GetBranchList(req);
  130. _log.Info("GetExchangeRate | RESPONSE :" + JsonConvert.SerializeObject(res));
  131. _response.ResponseCode = res.ResponseCode;
  132. _response.Msg = res.ResponseMessage;
  133. //_response.Extra = res.g;
  134. //_response.Extra2 = res.CostRate;
  135. //_response.Id = res.CustomerRate;
  136. _response.Data = res;
  137. }
  138. catch (Exception ex)
  139. {
  140. _response.ResponseCode = "1";
  141. _response.Msg = "Unknown error!";
  142. _log.ErrorFormat("ExchangeRateResponse | Exception occured On ExchangeRat Method At GCCREMITApi ! Details :" + ex.Message);
  143. }
  144. return _response;
  145. }
  146. private TPResponse GetExRate(ExchangeRate exRate)
  147. {
  148. TPResponse _response = new TPResponse();
  149. ExchangeRateRequest req = new ExchangeRateRequest()
  150. {
  151. UniqueID = PartnerId,
  152. Password = Password,
  153. SecurityKey = SecurityKey,
  154. PayoutBranchCode = exRate.PAgentId
  155. };
  156. try
  157. {
  158. _log.Info("GetExchangeRate | REQUEST :" + JsonConvert.SerializeObject(req));
  159. ExchangeRateResponse res = _sendAPI.GetExchangeRate(req);
  160. _log.Info("GetExchangeRate | RESPONSE :" + JsonConvert.SerializeObject(res));
  161. _response.ResponseCode = res.ResponseCode;
  162. _response.Msg = res.ResponseMessage;
  163. _response.Extra = res.PayoutBranchCode;
  164. _response.Extra2 = res.CostRate;
  165. _response.Id = res.CustomerRate;
  166. _response.Data = res;
  167. }
  168. catch (Exception ex)
  169. {
  170. _response.ResponseCode = "1";
  171. _response.Msg = "Unknown error!";
  172. _log.ErrorFormat("ExchangeRateResponse | Exception occured On ExchangeRat Method At GCCREMITApi ! Details :" + ex.Message);
  173. }
  174. return _response;
  175. }
  176. private static string ObjectToXML(object input)
  177. {
  178. try
  179. {
  180. StringWriter stringwriter = new StringWriter();
  181. XmlSerializer serializer = new XmlSerializer(input.GetType());
  182. serializer.Serialize(stringwriter, input);
  183. return stringwriter.ToString();
  184. }
  185. catch (Exception ex)
  186. {
  187. if (ex.InnerException != null)
  188. ex = ex.InnerException;
  189. return "Could not convert: " + ex.Message;
  190. }
  191. }
  192. private TPResponse SendTransaction(SendTransaction sendTransferRequest)
  193. {
  194. TPResponse _response = new TPResponse();
  195. SendTransferRequest mapreq = SendTransferMap(sendTransferRequest);
  196. ExchangeRate exrate = new ExchangeRate()
  197. {
  198. PAgentId = mapreq.PayoutBranchCode
  199. };
  200. TPResponse exrateRes = GetExRate(exrate);
  201. mapreq.CostRate = exrateRes.Extra2;
  202. var costR = Convert.ToDecimal(mapreq.CostRate);
  203. var payoutA = Convert.ToDecimal(mapreq.PayoutAmount);
  204. var paingA = payoutA / costR;
  205. mapreq.PayinAmount = paingA.ToString();
  206. try
  207. {
  208. _log.Info("SendTransferRequest | REQUEST :" + JsonConvert.SerializeObject(mapreq));
  209. // _log.Info("SendTransferRequest | REQUEST :" + ObjectToXML(mapreq));
  210. SendTransferResponse res = _sendAPI.SendTransfer(mapreq);
  211. // _log.Info("SendTransferResponse | RESPONSE :" + ObjectToXML(res));
  212. _log.Info("SendTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(res));
  213. _response.ResponseCode = res.ResponseCode == "001" ? "0" : "1";
  214. _response.Id = res.TransactionNo;
  215. //_response.Extra = res.PayoutCountryName;
  216. _response.Msg = res.ResponseMessage;
  217. //_response.Extra1 =
  218. _response.Data = res;
  219. }
  220. catch (Exception ex)
  221. {
  222. _response.ResponseCode = "1";
  223. _response.Msg = "Unknown error!";
  224. _log.ErrorFormat("SendTransferResponse | Exception occured On SendTransfer Method At GCCREMITApi ! Details :" + ex.Message);
  225. }
  226. return _response;
  227. }
  228. private SendTransferRequest SendTransferMap(SendTransaction sT)
  229. {
  230. return new SendTransferRequest()
  231. {
  232. UniqueID = PartnerId,
  233. Password = Password,
  234. SecurityKey = SecurityKey,
  235. PayoutBranchCode = sT.Agent.PBranchId,
  236. BankAccountNo = sT.Receiver.RAccountNo,
  237. BankAddress = sT.Receiver.RCountry,//"India",
  238. BankBranchCode = sT.Agent.PAgentName, // get IFSC code
  239. BankBranchName = sT.Agent.PBankBranchName,
  240. BankCity = sT.Agent.PBranchCity,
  241. BankCountry = sT.Receiver.RCountryId.ToString(),
  242. BankName = sT.Agent.PBankName,
  243. BankState = "",//sT.BankState,
  244. BankZipCode = "",//sT.BankZipCode,
  245. PayoutAmount = sT.Transaction.PAmt.ToString(),
  246. PayinAmount = sT.Transaction.TAmt.ToString(),
  247. //ExtensionData = '',
  248. PayoutCurrencyCode = sT.Transaction.PCurr,
  249. CostRate = sT.Transaction.ExRate.ToString(),
  250. PurposeCode = sT.Transaction.PurposeOfRemittanceName,
  251. ReceiverAddress = sT.Receiver.RAdd1,
  252. ReceiverDOB = sT.Receiver.RDob,
  253. ReceiverFirstName = sT.Receiver.RFirstName,
  254. ReceiverMiddleName = sT.Receiver.RMiddleName,
  255. ReceiverLastName = sT.Receiver.RLastName,
  256. ReceiverFourthName = "",//sT.Receiver.,
  257. ReceiverIDExpiryDate = sT.Receiver.RIdValidDate,
  258. ReceiverIDNumber = sT.Receiver.RIdNo,
  259. ReceiverIDPlaceOfIssue = "",//sT.Receiver.reid,
  260. ReceiverIDType = sT.Receiver.RIdType,
  261. ReceiverMessage = "",//sT.Receiver.me,,
  262. ReceiverMobileNo = sT.Receiver.RMobile,
  263. //ReceiverNationality = "IN",// sT.Receiver.RCountry,//
  264. ReceiverNationality = sT.Receiver.RNativeCountry,
  265. ReceiverTelephoneNo = sT.Receiver.RTel,
  266. ReceiverRelationship = sT.Receiver.RelWithSenderName,//"Self",
  267. ReceiverZipCode = "",//sT.Receiver,
  268. ReferenceNo = sT.Transaction.JMEControlNo,
  269. SenderDOB = sT.Sender.SBirthDate,
  270. SenderEmail = sT.Sender.SEmail,
  271. SenderFirstName = sT.Sender.SFirstName,
  272. SenderMiddleName = sT.Sender.SMiddleName,
  273. SenderLastName = sT.Sender.SLastName1,
  274. SenderFourthName = sT.Sender.SLastName2,
  275. SenderTelephoneNo = "",
  276. SenderIDExpiryDate = sT.Sender.SIdExpiryDate,
  277. SenderIDNumber = sT.Sender.SIdNo,
  278. // SenderIDPlaceOfIssue = "GB",//sT.Sender.SZipCode,
  279. SenderIDPlaceOfIssue = sT.Sender.SZipCode,
  280. SenderIDType = sT.Sender.SIdType,
  281. SenderMobileNo = sT.Sender.SMobile,
  282. SenderNationality = sT.Sender.SCountryName,
  283. //SenderTelephoneNo = sT.Sender.STel,
  284. //SenderEmail = sT.Sender.SEmail,
  285. SenderZipCode = "", //sT.Sender.SZipCode,
  286. SenderAddress = sT.Sender.SAddress,
  287. TransactionNo = "",//sT.TranId.ToString(),
  288. };
  289. }
  290. private TPResponse ApproveTransfer(TFReleaseTxnRequest approve)
  291. {
  292. //DbResult response = new DbResult();
  293. //TPResponse _response = new TPResponse();
  294. TPResponse _response = new TPResponse();
  295. ApproveTransferRequest req = new ApproveTransferRequest()
  296. {
  297. UniqueID = PartnerId,
  298. Password = Password,
  299. SecurityKey = SecurityKey,
  300. TransactionNo = approve.TxnId,
  301. };
  302. ///ApproveTransferRequest appMap = ApproveTransferMap(approveTransferRequest);
  303. try
  304. {
  305. // _log.Info("ApproveTransferRequest | REQUEST :" + JsonConvert.SerializeObject(appMap));
  306. _log.Info("ApproveTransferRequest | REQUEST :" + ObjectToXML(req));
  307. var res = _sendAPI.ApproveTransfer(req);
  308. //_log.Info("ApproveTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(res));
  309. _log.Info("ApproveTransferResponse | RESPONSE :" + ObjectToXML(res));
  310. _response.ResponseCode = res.ResponseCode == "001" ? "0" : "1";
  311. _response.Msg = res.ResponseMessage;
  312. _response.Data = res;
  313. }
  314. catch (Exception ex)
  315. {
  316. _response.ResponseCode = "1";
  317. _response.Msg = "Unknown error!";
  318. _log.ErrorFormat("ApproveTransferResponse | Exception occured On ApproveTransfer Method At GCCREMITApi ! Details :" + ex.Message);
  319. }
  320. return _response;
  321. }
  322. private TPResponse GetTransferStatus(GetStatus status)
  323. {
  324. TPResponse _response = new TPResponse();
  325. TransferStatusRequest req = new TransferStatusRequest()
  326. {
  327. UniqueID = PartnerId,
  328. Password = Password,
  329. SecurityKey = SecurityKey,
  330. TransactionNo = status.PartnerPinNo,
  331. };
  332. try
  333. {
  334. _log.Info("StatusTransferRequest | REQUEST :" + ObjectToXML(req));
  335. var res = _sendAPI.GetTransferStatus(req);
  336. _log.Info("StatusTransferResponse | RESPONSE :" + ObjectToXML(res));
  337. _response.ResponseCode = res.ResponseCode == "001" ? "0" : "1";
  338. _response.Msg = res.ResponseMessage;
  339. _response.Data = res;
  340. }
  341. catch (Exception ex)
  342. {
  343. _response.ResponseCode = "1";
  344. _response.Msg = "Unknown error!";
  345. _log.ErrorFormat("StatusrResponse | Exception occured On ApproveTransfer Method At GCCREMITApi ! Details :" + ex.Message);
  346. }
  347. return _response;
  348. }
  349. //private ApproveTransferRequest ApproveTransferMap(TFReleaseTxnRequest ap)
  350. //{
  351. // return new ApproveTransferRequest()
  352. // {
  353. // UniqueID = PartnerId,
  354. // Password = Password,
  355. // SecurityKey = SecurityKey,
  356. // //TransactionNo = ap.TxnId
  357. // };
  358. //}
  359. private TPResponse CancelTransfer(CancelTransferRequest cancelTransferRequest)
  360. {
  361. DbResult response = new DbResult();
  362. TPResponse _response = new TPResponse();
  363. CancelTransferRequest cancMap = CancelTransferMap(cancelTransferRequest);
  364. try
  365. {
  366. _log.Info("CancelTransferRequest | REQUEST :" + JsonConvert.SerializeObject(cancelTransferRequest));
  367. var req = _sendAPI.CancelTransfer(cancMap);
  368. _log.Info("CancelTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(req));
  369. _response.Data = response;
  370. _response.Msg = req.ResponseMessage;
  371. _response.ResponseCode = "0";
  372. }
  373. catch (Exception ex)
  374. {
  375. _response.ResponseCode = "1";
  376. _response.Msg = "Unknown error!";
  377. _log.ErrorFormat("SendTransferResponse | Exception occured On ApproveTransfer Method At GCCREMITApi ! Details :" + ex.Message);
  378. }
  379. return _response;
  380. }
  381. private CancelTransferRequest CancelTransferMap(CancelTransferRequest tc)
  382. {
  383. return new CancelTransferRequest()
  384. {
  385. TransactionNo = tc.TransactionNo,
  386. Remarks = tc.Remarks
  387. };
  388. }
  389. private TPResponse RefundTransfer(RefundTransferRequest refundTransferRequest)
  390. {
  391. DbResult response = new DbResult();
  392. TPResponse _response = new TPResponse();
  393. RefundTransferRequest cancMap = RefundTransferMap(refundTransferRequest);
  394. try
  395. {
  396. _log.Info("RefundTransferRequest | REQUEST :" + JsonConvert.SerializeObject(refundTransferRequest));
  397. var req = _sendAPI.RefundTransfer(cancMap);
  398. _log.Info("RefundTransferResponse | RESPONSE :" + JsonConvert.SerializeObject(req));
  399. _response.Data = response;
  400. _response.Msg = req.ResponseMessage;
  401. _response.ResponseCode = "0";
  402. }
  403. catch (Exception ex)
  404. {
  405. _response.ResponseCode = "1";
  406. _response.Msg = "Unknown error!";
  407. _log.ErrorFormat("RefundTransfer | Exception occured On RefundTransfer Method At GCCREMITApi ! Details :" + ex.Message);
  408. }
  409. return _response;
  410. }
  411. private RefundTransferRequest RefundTransferMap(RefundTransferRequest rt)
  412. {
  413. return new RefundTransferRequest()
  414. {
  415. TransactionNo = rt.TransactionNo,
  416. Remarks = rt.Remarks
  417. };
  418. }
  419. private TPResponse ModifyTransfer(ModifyTransferRequest modifyTransferRequest)
  420. {
  421. throw new NotImplementedException();
  422. }
  423. private TPResponse GetModifyTransferStatus(ModifyTransferStatusRequest modifyTransferStatusRequest)
  424. {
  425. throw new NotImplementedException();
  426. }
  427. //private TPResponse GetTransferStatus(TransferStatusRequest transferStatusRequest)
  428. //{
  429. // throw new NotImplementedException();
  430. //}
  431. private TPResponse GetTransferFinancialsList(TransferFinancialsRequest transferFinancialsRequest)
  432. {
  433. throw new NotImplementedException();
  434. }
  435. private TPResponse GetExchangeRateList(ExchangeRateListRequest exchangeRateListRequest)
  436. {
  437. throw new NotImplementedException();
  438. }
  439. private TPResponse GetAvailableBalance(AvailableBalanceRequest availableBalanceRequest)
  440. {
  441. throw new NotImplementedException();
  442. }
  443. private TPResponse GetIDTypeList(IDTypeListRequest iDTypeListRequest)
  444. {
  445. throw new NotImplementedException();
  446. }
  447. private TPResponse GetPurposeList(PurposeListRequest purposeListRequest)
  448. {
  449. throw new NotImplementedException();
  450. }
  451. private TPResponse GetIncomeSourceList(IncomeSourceListRequest incomeSourceListRequest)
  452. {
  453. throw new NotImplementedException();
  454. }
  455. private TPResponse GetRelationshipList(RelationshipListRequest relationshipListRequest)
  456. {
  457. throw new NotImplementedException();
  458. }
  459. private TPResponse ChangePassword(ChangePasswordRequest changePasswordRequest)
  460. {
  461. throw new NotImplementedException();
  462. }
  463. private TPResponse GetServiceCharges(ServiceChargesRequest serviceChargesRequest)
  464. {
  465. throw new NotImplementedException();
  466. }
  467. private TPResponse GetBranchList(BranchListRequest branchListRequest)
  468. {
  469. throw new NotImplementedException();
  470. }
  471. private TPResponse GetCityList(CityListRequest cityListRequest)
  472. {
  473. throw new NotImplementedException();
  474. }
  475. private TPResponse GetPaymentModeList(PaymentModeListRequest paymentModeListRequest)
  476. {
  477. throw new NotImplementedException();
  478. }
  479. private TPResponse GetCurrencyList(CurrencyListRequest currencyListRequest)
  480. {
  481. throw new NotImplementedException();
  482. }
  483. private TPResponse GetCountryList(CountryListRequest countryListRequest)
  484. {
  485. throw new NotImplementedException();
  486. }
  487. }
  488. }