public async Task <object> RequestReconciliationReportAsync(int daysAgo, String productSPCode) { daysAgo = -1 * daysAgo; GepgUtility gepg = new GepgUtility(_hostingEnvironment, config, _loggerFactory); ReconcRequest Reconciliation = new ReconcRequest(); gepgSpReconcReq request = new gepgSpReconcReq(); request.SpReconcReqId = Math.Abs(Guid.NewGuid().GetHashCode());//Convert.ToInt32(DateTime.UtcNow.Year.ToString() + DateTime.UtcNow.Month.ToString() + DateTime.UtcNow.Day.ToString()); request.SpCode = productSPCode; request.SpSysId = Configuration["PaymentGateWay:GePG:SystemId"]; request.TnxDt = DateTime.Now.AddDays(daysAgo).ToString("yyyy-MM-dd"); request.ReconcOpt = 1; var requestString = gepg.SerializeClean(request, typeof(gepgSpReconcReq)); string signature = gepg.GenerateSignature(requestString); var signedRequest = gepg.FinaliseSignedMsg(new ReconcRequest() { gepgSpReconcReq = request, gepgSignature = signature }, typeof(ReconcRequest)); var result = await gepg.SendHttpRequest("/api/reconciliations/sig_sp_qrequest", signedRequest, productSPCode, "default.sp.in"); var content = signedRequest + "********************" + result; _gepgFileLogger.Log(productSPCode + "_GepGReconRequest", content); return(new { reconcId = request.SpReconcReqId, resp = result }); }
public override async Task <PostReqCNResponse> PostReqControlNumberAsync(string OfficerCode, int PaymentId, string PhoneNumber, decimal ExpectedAmount, List <PaymentDetail> products, string controlNumber = null, bool acknowledge = false, bool error = false, string rejectedReason = "") { GepgUtility gepg = new GepgUtility(_hostingEnvironment, config, _loggerFactory); ExpectedAmount = Math.Round(ExpectedAmount, 2); //send request only when we have amount > 0 if (ExpectedAmount > 0) { var bill = gepg.CreateBill(Configuration, OfficerCode, PhoneNumber, PaymentId, ExpectedAmount, GetPaymentDetails(PaymentId)); if (bill != "-2: error - no policy") { var signature = gepg.GenerateSignature(bill); var signedMesg = gepg.FinaliseSignedMsg(signature); var billAck = await gepg.SendHttpRequest("/api/bill/sigqrequest", signedMesg, gepg.GetAccountCodeByProductCode(InsureeProducts.FirstOrDefault().ProductCode), "default.sp.in"); string billAckRequest = JsonConvert.SerializeObject(billAck); string sentbill = JsonConvert.SerializeObject(bill); _gepgFileLogger.Log(PaymentId, "CN_Request", sentbill + "********************" + billAckRequest); //check if timeout in GePG server if (billAck == "The operation has timed out.") { var rejectedReasonText = "Timeout when requesting control number"; return(await base.PostReqControlNumberAsync(OfficerCode, PaymentId, PhoneNumber, ExpectedAmount, products, null, true, true, rejectedReasonText)); } //get the error code from ackn GePG request var errorCodes = LoadResponseCodeFromXmlAkn(billAck); if (errorCodes == "7101") { return(await base.PostReqControlNumberAsync(OfficerCode, PaymentId, PhoneNumber, ExpectedAmount, products, null, true, false)); } else { //we have an error from GePG ackn - then save rejected reason var rejectedReasonText = PrepareRejectedReason(PaymentId, errorCodes); return(await base.PostReqControlNumberAsync(OfficerCode, PaymentId, PhoneNumber, ExpectedAmount, products, null, true, true, rejectedReasonText)); } } else { return(await base.PostReqControlNumberAsync(OfficerCode, PaymentId, PhoneNumber, ExpectedAmount, products, null, true, true)); } } else { //do not send any request to GePG when we have 0 or negative amount return(await base.PostReqControlNumberAsync(OfficerCode, PaymentId, PhoneNumber, ExpectedAmount, products, null, true, true)); } }
public async Task <Object> GePGPostCancelPayment(int PaymentId) { GepgUtility gepg = new GepgUtility(_hostingEnvironment, config, _loggerFactory); try { var GePGCancelPaymentRequest = gepg.CreateGePGCancelPaymentRequest(Configuration, PaymentId); string SPCode = gepg.GetAccountCodeByPaymentId(PaymentId); var response = await gepg.SendHttpRequest("/api/bill/sigcancel_request", GePGCancelPaymentRequest, SPCode, "changebill.sp.in"); var content = JsonConvert.SerializeObject(GePGCancelPaymentRequest) + "\n********************\n" + JsonConvert.SerializeObject(response); _gepgFileLogger.Log(PaymentId, "CancelPayment", content); //check if timeout in GePG server if (response == "The operation has timed out.") { var rejectedReasonText = "Timeout when cancelling payment"; setRejectedReason(PaymentId, rejectedReasonText); return(new DataMessage { Code = -1, ErrorOccured = true, MessageValue = rejectedReasonText, }); } var errorCodes = LoadResponseCodeFromXmlAkn(response); if (errorCodes != "7101") { var rejectedReasonText = PrepareRejectedReason(PaymentId, errorCodes); setRejectedReason(PaymentId, rejectedReasonText); } return(this.GetGePGObjectFromString(response, typeof(GePGPaymentCancelResponse))); } catch (Exception ex) { _logger.LogError(ex, "Error in GePGPostCancelPayment"); return(new DataMessage { Code = -1, ErrorOccured = true, MessageValue = ex.ToString(), }); } }
public string ReconciliationResp(int code) { GepgUtility gepg = new GepgUtility(_hostingEnvironment, config, _loggerFactory); gepgSpReconcRespAck ReconcAck = new gepgSpReconcRespAck(); ReconcAck.ReconcStsCode = code; var ReconcAckString = gepg.SerializeClean(ReconcAck, typeof(gepgSpReconcRespAck)); string signature = gepg.GenerateSignature(ReconcAckString); var signedReconcAck = gepg.FinaliseSignedAcks(new GepgReconcRespAck() { gepgSpReconcRespAck = ReconcAck, gepgSignature = signature }, typeof(GepgReconcRespAck)); return(signedReconcAck); }
public string PaymentResp(int code) { GepgUtility gepg = new GepgUtility(_hostingEnvironment, config, _loggerFactory); gepgPmtSpInfoAck PayAck = new gepgPmtSpInfoAck(); PayAck.TrxStsCode = code; var PayAckString = gepg.SerializeClean(PayAck, typeof(gepgPmtSpInfoAck)); string signature = gepg.GenerateSignature(PayAckString); var signedPayAck = gepg.FinaliseSignedAcks(new GepgPaymentAck() { gepgPmtSpInfoAck = PayAck, gepgSignature = signature }, typeof(GepgPaymentAck)); return(signedPayAck); }
public string ControlNumberResp(int code) { GepgUtility gepg = new GepgUtility(_hostingEnvironment, config, _loggerFactory); gepgBillSubRespAck CnAck = new gepgBillSubRespAck(); CnAck.TrxStsCode = code; var CnAckString = gepg.SerializeClean(CnAck, typeof(gepgBillSubRespAck)); string signature = gepg.GenerateSignature(CnAckString); var signedCnAck = gepg.FinaliseSignedAcks(new GepgBillResponseAck() { gepgBillSubRespAck = CnAck, gepgSignature = signature }, typeof(GepgBillResponseAck)); return(signedCnAck); }
public override async Task <string> RequestBulkControlNumbers(RequestBulkControlNumbersModel model) { var gepg = new GepgUtility(_hostingEnvironment, Configuration, _loggerFactory); var bills = await gepg.CreateBulkBills(Configuration, model); var signature = gepg.GenerateSignature(bills); var signedMesg = gepg.FinaliseSignedMsg(signature); string accountCode = gepg.GetAccountCodeByProductCode(model.ProductCode); var billAck = await gepg.SendHttpRequest("/api/bill/sigqrequest", signedMesg, accountCode, "default.sp.in"); string sentbill = JsonConvert.SerializeObject(bills); _gepgFileLogger.Log("Bulk_CN_Request", sentbill + "********************" + billAck); // if the response is not 7101(SUCCESS) then delete all the entries from DB if (!billAck.Contains("7101")) { _ = DeleteFailedControlNumberRequests(bills); } return(billAck); }