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.

246 lines
9.5 KiB

1 year ago
  1. using Common;
  2. using Common.Helper;
  3. using Common.Language;
  4. using Common.Model.AutoRefund;
  5. using Common.Model.Enum;
  6. using Common.Model.KwangjuBank;
  7. using Common.Model.PennyTest;
  8. using log4net;
  9. using Newtonsoft.Json;
  10. using PushNotification;
  11. using Repository.PennyTest;
  12. using System;
  13. using System.Runtime.Remoting.Messaging;
  14. using System.Threading.Tasks;
  15. namespace Business.PennyTest
  16. {
  17. public class PennyTestBusiness : IPennyTestBusiness
  18. {
  19. private readonly IPennyTestRepository _repo;
  20. private static readonly ILog Log = LogManager.GetLogger(typeof(PennyTestBusiness));
  21. public PennyTestBusiness(IPennyTestRepository repo)
  22. {
  23. _repo = repo;
  24. }
  25. public JsonRxResponse SavePennyTestCustomerCertificate(PennyTestCustomerCert cert)
  26. {
  27. return _repo.SavePennyTestCustomerCertificate(cert);
  28. }
  29. public JsonRxResponse RealNameCheck(RealNameRequest req)
  30. {
  31. var json = JsonConvert.SerializeObject(req);
  32. Log.Debug("Real name check with parameters " + json);
  33. JsonRxResponse response = new JsonRxResponse();
  34. try
  35. {
  36. var obj = KwangjuBankApi.RealNameCheck(json);
  37. if (obj == null || string.IsNullOrEmpty(obj))
  38. {
  39. Log.Debug("Returning null or empty while RealNameCheck");
  40. response.SetResponse("1", "Error occured while RealNameCheck", null);
  41. return response;
  42. }
  43. response = JsonConvert.DeserializeObject<JsonRxResponse>(obj);
  44. if (response.ErrorCode.Equals(ErrorCode.One))
  45. {
  46. var kjMsg = JsonConvert.DeserializeObject<KwangjuResult>(response.Msg);
  47. var eCode = kjMsg.error.code.ToString();
  48. var eMessage = kjMsg.error.message.ToString();
  49. response.Msg = "Something is wrong. " + eCode + " " + eMessage;
  50. }
  51. return response;
  52. }
  53. catch (Exception ex)
  54. {
  55. Log.Error("Something Went Wrong, Please Try Again!!", ex);
  56. response.SetResponse("1", "Error occured while RealNameCheck", null);
  57. return response;
  58. }
  59. }
  60. public JsonRxResponse Start(string user, string reSendCode)
  61. {
  62. var response = new JsonRxResponse();
  63. string certNumber = Crypto.GetRandomNumber(4);
  64. //GET CUSTOMER DETAIL FOR REAL NAME VERIFICATION AND PENNY TEST
  65. var model = _repo.GetPennyTestRequiredData(user);
  66. var succesMsg = string.Format("We have sent 1 KRW to your Bank Account {0} with {1} Bank, Please check the statement and enter the 4 digit number display after GME.", model.BankAccountNo, model.BankName);
  67. //response.ErrorCode = "0";
  68. //response.Msg = succesMsg;
  69. //response.Data = new { Message = succesMsg };
  70. //return response;
  71. //TO CHECK REAL NAME
  72. var req = new RealNameRequest(
  73. model.IdType,// " realNameDivision=1302:PASSPORT"
  74. model.BankCode,//" institution=145121636083"
  75. model.BankAccountNo.Replace("-", ""),//"no=145121636083"
  76. model.IdNumber.Replace("-", ""),
  77. model.Dob, model.Gender,
  78. model.NativeCountry
  79. );
  80. if (model.ErrorCode == "1")
  81. {
  82. response.ErrorCode = "0";
  83. response.Msg = succesMsg;
  84. response.Data = new { Message = succesMsg };
  85. return response;
  86. }
  87. else if (model.ErrorCode == "10" && reSendCode.ToLower() == "n")
  88. {
  89. response.ErrorCode = "0";
  90. response.Msg = succesMsg;
  91. response.Data = new { Message = succesMsg };
  92. return response;
  93. }
  94. //FOR TESTING
  95. //req.institution = "034";
  96. //req.no = "145121636083";
  97. //req.realNameDivision = "02";
  98. //req.realNameNo = "8502046803408";
  99. if (IsKftcOnly.IsKJRealNameCheckPossible(model.BankCode, model.IdType, model.IdNumber.Replace("-", ""), model.CustomerId))
  100. {
  101. var dbRes = RealNameCheck(req);
  102. if (!dbRes.ErrorCode.Equals("0"))
  103. {
  104. dbRes.Data = new { Message = dbRes.Msg };
  105. return dbRes;
  106. }
  107. }
  108. //SENDING 1KRW INTO CUSTOMER PRIMARY BANK TO VERIFY BANK DETAIL
  109. AmountTransferToBank pennyTrans = new AmountTransferToBank
  110. {
  111. obpId = "", // "001-90010001-000001-6000001", //GME OBPID
  112. accountNo = "KJ",// "1107020345626", //GME ????
  113. accountPassword = "", // "1212", //GME ????
  114. receiveInstitution = model.BankCode.ToString(),
  115. receiveAccountNo = model.BankAccountNo.Replace("-", ""),
  116. amount = "1",
  117. bankBookSummary = String.Format("PENNY-{0}", model.BankAccountNo.Replace("-", "").ToString()),
  118. transactionSummary = String.Format("GME-{0}", certNumber)// THIS IS NARRATION FIELD
  119. };
  120. //FOR TESTING
  121. //pennyTrans.receiveInstitution = "034";
  122. //pennyTrans.receiveAccountNo = "145121636083";
  123. /*
  124. var body = JsonConvert.SerializeObject(pennyTrans);
  125. var resp = KwangjuBankApi.TransferAmount(body);
  126. var dbApiRes = JsonConvert.DeserializeObject<JsonRxResponse>(resp);
  127. if (!dbApiRes.ErrorCode.Equals("0")) {
  128. if (dbApiRes.ErrorCode.Equals(ErrorCode.One))
  129. {
  130. var kjMsg = JsonConvert.DeserializeObject<KwangjuResult>(dbApiRes.Msg);
  131. var eCode = kjMsg.error.code.ToString();
  132. var eMessage = kjMsg.error.message.ToString();
  133. dbApiRes.Msg = "Something is wrong. " + eCode + " " + eMessage;
  134. }
  135. dbApiRes.Data = new { Message = dbApiRes.Msg };
  136. return dbApiRes;
  137. }
  138. */
  139. var cert = new PennyTestCustomerCert()
  140. {
  141. CustomerId = model.CustomerId,
  142. CertNumber = certNumber,
  143. CertLimitCount = "",
  144. BankCode = model.BankCode,
  145. BankAccountNo = model.BankAccountNo.Replace("-", ""),
  146. IdType = model.IdType,
  147. IdNumber = model.IdNumber.Replace("-", ""),
  148. Dob = model.Dob,
  149. Gender = model.Gender,
  150. NativeCountry = model.NativeCountry,
  151. Action = "REQ"
  152. };
  153. var respon = _repo.SavePennyTestCustomerCertificate(cert);
  154. if (!respon.ErrorCode.Equals("0"))
  155. {
  156. respon.Data = new { Message = respon.Msg };
  157. }
  158. else
  159. {
  160. respon.Msg = succesMsg;
  161. respon.Data = new { Message = succesMsg };
  162. }
  163. return respon;
  164. }
  165. private bool CheckIbkShinanPassport(string bankCode, string idtypeId)
  166. {
  167. var s = ((bankCode.Equals("003") || bankCode.Equals("088")) && idtypeId.Equals("10997"));
  168. return s;
  169. }
  170. public JsonRxResponse VerifyCertificate(PennyCertVerifyRequestModel model)
  171. {
  172. var rsp = _repo.VerifyCertificate(model.CustomerId, model.CertNumber);
  173. if (rsp.ErrorCode.Equals("0"))
  174. {
  175. var fireBaseId = Convert.ToString(CallContext.GetData(Constants.FcmId));
  176. var lang = Convert.ToString(CallContext.GetData(Constants.Language));
  177. Task.Run(() => FcmNotifier.Notify(fireBaseId, Languages.GetMessage("pennytest_success", fireBaseId), Languages.GetTitle("pennytest", fireBaseId)));
  178. }
  179. rsp.Data = new { Message = rsp.Msg };
  180. return rsp;
  181. }
  182. public JsonRxResponse Start_V4(string user, string reSendCode)
  183. {
  184. var response = new JsonRxResponse();
  185. var model = _repo.GetPennyTestRequiredData_V4(user);
  186. var req = new RealNameRequest(
  187. model.IdType,// " realNameDivision=1302:PASSPORT"
  188. model.BankCode,//" institution=145121636083"
  189. model.BankAccountNo.Replace("-", ""),//"no=145121636083"
  190. model.IdNumber.Replace("-", ""),
  191. model.Dob, model.Gender,
  192. model.NativeCountry
  193. );
  194. if (IsKftcOnly.IsKJRealNameCheckPossible(model.BankCode, model.IdType, model.IdNumber.Replace("-", ""), model.CustomerId))
  195. {
  196. var dbRes = RealNameCheck(req);
  197. if (!dbRes.ErrorCode.Equals("0"))
  198. {
  199. response.ErrorCode = "1";
  200. response.Msg = dbRes.Msg;
  201. response.Extra = model.CustomerId;
  202. return response;
  203. }
  204. else
  205. {
  206. response.ErrorCode = "0";
  207. response.Msg = dbRes.Msg;
  208. response.Extra = model.CustomerId;
  209. return response;
  210. }
  211. }
  212. else
  213. {
  214. response.ErrorCode = "1";
  215. response.Msg = "KJ Real Name Check is not possible. Please contact GME support.";
  216. response.Extra = model.CustomerId;
  217. return response;
  218. }
  219. }
  220. }
  221. }