예제 #1
0
        public async Task <DataMessage> SaveControlNumberAsync(ControlNumberResp model, bool failed)
        {
            SqlParameter[] sqlParameters =
            {
                new SqlParameter("@PaymentID",     model.internal_identifier),
                new SqlParameter("@ControlNumber", model.control_number),
                new SqlParameter("@Failed",        failed),
                //new SqlParameter("@Message", model.error_message)
            };

            DataMessage message;

            try
            {
                var data = await dh.ExecProcedureAsync("uspReceiveControlNumber", sqlParameters);

                message = new CtrlNumberResponse(int.Parse(data[0].Value.ToString()), false, (int)Language).Message;
                GetPaymentInfo(model.internal_identifier);
            }
            catch (Exception e)
            {
                message = new CtrlNumberResponse(e).Message;
            }

            return(message);
        }
예제 #2
0
        public async Task <DataMessage> SaveControlNumberAsync(ControlNumberResp model)
        {
            ImisPayment payment             = new ImisPayment(_configuration, _hostingEnvironment, _loggerFactory);
            var         controlNumberExists = payment.CheckControlNumber(model.internal_identifier, model.control_number);
            var         response            = await payment.SaveControlNumberAsync(model, controlNumberExists);

            if (model.error_occured)
            {
                response.ErrorOccured = true;
                response.MessageValue = model.error_message;
            }

            if (payment.PaymentId != 0 && payment.SmsRequired)
            {
                var ackResponse = payment.GetReqControlNumberAck(payment.PaymentId);

                if (!response.ErrorOccured && !controlNumberExists)
                {
                    ControlNumberAssignedSms(payment);
                }
                else
                {
                    ControlNumberNotassignedSms(payment, response.MessageValue);
                }
            }

            return(response);
        }
예제 #3
0
        public virtual IActionResult GetReqControlNumber([FromBody] ControlNumberResp model)
        {
            if (!ModelState.IsValid)
            {
                var error = ModelState.Values.FirstOrDefault().Errors.FirstOrDefault().ErrorMessage;
                return(BadRequest(new ErrorResponse()
                {
                    error_message = error
                }));
            }

            try
            {
                var response = _imisModules.GetPaymentModule().GetPaymentLogic().SaveControlNumber(model);
                if (response.Code == 0)
                {
                    return(Ok());
                }
                else
                {
                    return(BadRequest(new ErrorResponse()
                    {
                        error_message = response.MessageValue
                    }));
                }
            }
            catch (Exception)
            {
                return(BadRequest(new { error_occured = true, error_message = "Unknown Error Occured" }));
            }
        }
        public async Task <IActionResult> GePGReceiveControlNumber([FromBody] gepgBillSubResp model)
        {
            int billId;

            if (model.HasValidSignature)
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(imisPayment.ControlNumberResp(GepgCodeResponses.GepgResponseCodes["Invalid Request Data"])));
                }

                ControlNumberResp ControlNumberResponse;
                foreach (var bill in model.BillTrxInf)
                {
                    ControlNumberResponse = new ControlNumberResp()
                    {
                        internal_identifier = bill.BillId,
                        control_number      = bill.PayCntrNum,
                        error_occured       = bill.TrxStsCode == GepgCodeResponses.GepgResponseCodes["Successful"].ToString()?false:true,
                        error_message       = bill.TrxStsCode
                    };

                    billId = bill.BillId;

                    string reconc = JsonConvert.SerializeObject(ControlNumberResponse);
                    _gepgFileLogger.Log(billId, "CN_Response", reconc);

                    try
                    {
                        var response = base.GetReqControlNumber(ControlNumberResponse);
                        if (ControlNumberResponse.error_occured == true)
                        {
                            var rejectedReason = imisPayment.PrepareRejectedReason(billId, bill.TrxStsCode);
                            imisPayment.setRejectedReason(billId, rejectedReason);
                        }
                    }
                    catch (Exception e)
                    {
                        _logger.LogError(e, "Error in GePGReceiveControlNumber");
                        throw;
                    }
                }

                return(Ok(imisPayment.ControlNumberResp(GepgCodeResponses.GepgResponseCodes["Successful"])));
            }
            else
            {
                foreach (var bill in model.BillTrxInf)
                {
                    billId = bill.BillId;

                    string reconc = JsonConvert.SerializeObject(model);
                    _gepgFileLogger.Log(billId, "CN_Response_InvalidSignature", reconc);
                    imisPayment.setRejectedReason(billId, GepgCodeResponses.GepgResponseCodes["Invalid Signature"] + ":Invalid Signature");
                }

                return(Ok(imisPayment.ControlNumberResp(GepgCodeResponses.GepgResponseCodes["Invalid Signature"])));
            }
        }
예제 #5
0
        public DataMessage SaveControlNumber(ControlNumberResp model)
        {
            PaymentRepository payment = new PaymentRepository(Configuration);
            var controlNumberExists   = payment.CheckControlNumber(model.internal_identifier, model.control_number);
            var response = payment.SaveControlNumber(model, controlNumberExists);

            if (payment.PaymentId != null)
            {
                var ackResponse = payment.GetReqControlNumberAck(payment.PaymentId);

                if (!response.ErrorOccured && !controlNumberExists)
                {
                    ControlNumberAssignedSms(payment);
                }
                else
                {
                    ControlNumberNotassignedSms(payment, response.MessageValue);
                }
            }

            return(response);
        }
 public override Task <IActionResult> GetReqControlNumber([FromBody] ControlNumberResp model)
 {
     return(base.GetReqControlNumber(model));
 }