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.
194 lines
7.2 KiB
194 lines
7.2 KiB
using Common;
|
|
using Common.Helper;
|
|
using Common.InboundModel;
|
|
using Common.Model.AutoRefund;
|
|
using Common.Model.Enum;
|
|
using Common.Model.KwangjuBank;
|
|
using Common.Model.PennyTest;
|
|
using log4net;
|
|
using Newtonsoft.Json;
|
|
using Repository.Inbound;
|
|
using System;
|
|
|
|
namespace Business.Inbound
|
|
{
|
|
public interface IInboundPennyTestBusiness
|
|
{
|
|
JsonRxResponse StartInbound(string user, PennyTestRequestParam param, string reSendCode);
|
|
|
|
JsonRxResponse VerifyCertificate(PennyCertVerifyRequestModel model);
|
|
}
|
|
|
|
public class InboundPennyTestBusiness : IInboundPennyTestBusiness
|
|
{
|
|
private readonly IInboundPennyTestRepository _repo;
|
|
private static readonly ILog Log = LogManager.GetLogger(typeof(InboundPennyTestBusiness));
|
|
|
|
public InboundPennyTestBusiness(IInboundPennyTestRepository repo)
|
|
{
|
|
_repo = repo;
|
|
}
|
|
|
|
public JsonRxResponse StartInbound(string user, PennyTestRequestParam param, string reSendCode)
|
|
{
|
|
var response = new JsonRxResponse();
|
|
if (!string.IsNullOrWhiteSpace(param.accountID) && !string.IsNullOrWhiteSpace(param.accountType) && param.accountType == "autodebit")
|
|
{
|
|
var s = GetAutoDebitAccountById(param);
|
|
if (s != null)
|
|
{
|
|
param.AccountNo = s.AccountNo;
|
|
param.BankCode = s.BankCode;
|
|
}
|
|
else
|
|
{
|
|
response.SetResponse("1", "Penny test request failed");
|
|
return response;
|
|
}
|
|
}
|
|
|
|
string certNumber = Crypto.GetRandomNumber(4);
|
|
|
|
//GET CUSTOMER DETAIL FOR REAL NAME VERIFICATION AND PENNY TEST
|
|
|
|
var model = new PennyTestStartRequestModel();
|
|
model.CustomerId = user;
|
|
model.BankCode = param.BankCode;
|
|
model.BankAccountNo = param.AccountNo;
|
|
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);
|
|
|
|
if (model.ErrorCode == "1")
|
|
{
|
|
response.ErrorCode = "0";
|
|
response.Msg = succesMsg;
|
|
response.Data = new { Message = succesMsg };
|
|
return response;
|
|
}
|
|
else if (model.ErrorCode == "10" && reSendCode.ToLower() == "n")
|
|
{
|
|
response.ErrorCode = "0";
|
|
response.Msg = succesMsg;
|
|
response.Data = new { Message = succesMsg };
|
|
return response;
|
|
}
|
|
//FOR TESTING
|
|
//req.institution = "034";
|
|
//req.no = "145121636083";
|
|
//req.realNameDivision = "02";
|
|
//req.realNameNo = "8502046803408";
|
|
|
|
//SENDING 1KRW INTO CUSTOMER PRIMARY BANK TO VERIFY BANK DETAIL
|
|
AmountTransferToBank pennyTrans = new AmountTransferToBank
|
|
{
|
|
obpId = "", // "001-90010001-000001-6000001", //GME OBPID
|
|
accountNo = "KJ",// "1107020345626", //GME ????
|
|
accountPassword = "", // "1212", //GME ????
|
|
receiveInstitution = model.BankCode.ToString(),
|
|
receiveAccountNo = model.BankAccountNo.Replace("-", ""),
|
|
amount = "1",
|
|
bankBookSummary = String.Format("PENNY-{0}", model.BankAccountNo.Replace("-", "").ToString()),
|
|
transactionSummary = String.Format("GME-{0}", certNumber)// THIS IS NARRATION FIELD
|
|
};
|
|
|
|
//FOR TESTING
|
|
//pennyTrans.receiveInstitution = "034";
|
|
//pennyTrans.receiveAccountNo = "145121636083";
|
|
|
|
var body = JsonConvert.SerializeObject(pennyTrans);
|
|
var resp = KwangjuBankApi.TransferAmount(body);
|
|
var dbApiRes = JsonConvert.DeserializeObject<JsonRxResponse>(resp);
|
|
|
|
if (!dbApiRes.ErrorCode.Equals("0"))
|
|
{
|
|
if (dbApiRes.ErrorCode.Equals(ErrorCode.One))
|
|
{
|
|
var kjMsg = JsonConvert.DeserializeObject<KwangjuResult>(dbApiRes.Msg);
|
|
var eCode = kjMsg.error.code.ToString();
|
|
var eMessage = kjMsg.error.message.ToString();
|
|
|
|
dbApiRes.Msg = "Something is wrong. " + eCode + " " + eMessage;
|
|
}
|
|
|
|
dbApiRes.Data = new { Message = dbApiRes.Msg };
|
|
return dbApiRes;
|
|
}
|
|
|
|
var idNum = !string.IsNullOrWhiteSpace(model.IdNumber) ? model.IdNumber.Replace("-", "") : "";
|
|
|
|
var cert = new PennyTestCustomerCert()
|
|
{
|
|
CustomerId = model.CustomerId,
|
|
CertNumber = certNumber,
|
|
CertLimitCount = "",
|
|
BankCode = model.BankCode,
|
|
BankAccountNo = model.BankAccountNo.Replace("-", ""),
|
|
IdType = model.IdType ?? "",
|
|
IdNumber = idNum,
|
|
Dob = model.Dob ?? "",
|
|
Gender = model.Gender ?? "",
|
|
NativeCountry = model.NativeCountry ?? "",
|
|
Action = "REQ"
|
|
};
|
|
|
|
var respon = _repo.SavePennyTestCustomerCertificate(cert);
|
|
if (!respon.ErrorCode.Equals("0"))
|
|
{
|
|
respon.Data = new { Message = respon.Msg };
|
|
}
|
|
else
|
|
{
|
|
respon.Msg = succesMsg;
|
|
respon.Data = new { Message = succesMsg };
|
|
}
|
|
|
|
return respon;
|
|
}
|
|
|
|
public JsonRxResponse VerifyCertificate(PennyCertVerifyRequestModel model)
|
|
{
|
|
JsonRxResponse rsp = new JsonRxResponse();
|
|
if (!string.IsNullOrWhiteSpace(model.accountID) && !string.IsNullOrWhiteSpace(model.accountType) && model.accountType == "autodebit")
|
|
{
|
|
var param = new PennyTestRequestParam()
|
|
{
|
|
accountID = model.accountID,
|
|
AccountNo = model.AccountNo,
|
|
accountType = model.accountType
|
|
,
|
|
BankCode = model.BankCode
|
|
};
|
|
|
|
var s = GetAutoDebitAccountById(param);
|
|
if (s != null)
|
|
{
|
|
model.AccountNo = s.AccountNo;
|
|
model.BankCode = s.BankCode;
|
|
}
|
|
else
|
|
{
|
|
rsp.SetResponse("1", "Penny test verification failed");
|
|
return rsp;
|
|
}
|
|
}
|
|
|
|
rsp = _repo.VerifyCertificate(model.CustomerId, model.CertNumber, model.BankCode, model.AccountNo);
|
|
rsp.Data = new { Message = rsp.Msg };
|
|
return rsp;
|
|
}
|
|
|
|
private PennyTestRequestParam GetAutoDebitAccountById(PennyTestRequestParam param)
|
|
{
|
|
try
|
|
{
|
|
var id = Crypto.Decrypt(param.accountID, Utilities.ReadWebConfig("ktft_client_info_salt", ""));
|
|
PennyTestRequestParam res = _repo.GetAutoDebitAccountById(id);
|
|
return res;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Error("Error during decrypting autodebit id", ex);
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
}
|