public tbPayment ActualizarPayment()
        {
            //Inserto en payment detail el post del proveedor
            tbPaymentDetail paymentDetailPost = this.InsertPaymentDetail("POST_VENDOR");

            //Inserto en payment detail el request que voy a realizar a SimpleQueryTx
            tbPaymentDetail paymentDetailSimpleQuery = this.InsertPaymentDetail("SIMPLE_QUERY_TX");

            //Consulto el estado del pago
            NpsBusiness npsBusiness      = new NpsBusiness();
            tbPayment   paymentNpsResult = npsBusiness.ConsultarEstadoDelPago(_transactionId, _idPayment, paymentDetailSimpleQuery);

            //Actualizo tbPaymentDetails
            paymentDetailSimpleQuery = this.UpdatePaymentDetail(paymentDetailSimpleQuery);

            //Obtengo el registro del pago
            tbPayment payment = this.ObtengoPaymentPorId();

            //Actualizo registro del pago, con estado del pago y la informacion adicional
            payment.pst_id = paymentNpsResult.pst_id;
            payment.pay_informacion_adicional = paymentNpsResult.pay_informacion_adicional;
            payment = this.UpdatePayment(payment);

            return(payment);
        }
示例#2
0
        public tbPayment GenerarFormularioDePago()
        {
            try
            {
                //Creo el registro en la tabla payment
                tbPayment payment = this.CreatePayment();

                //Creo el detalle del pago
                tbPaymentDetail paymentDetail = this.CreatePaymentDetail(payment);

                //Creo el formulario de pago
                NpsBusiness npsBusiness    = new NpsBusiness();
                string      urlPaymentForm = npsBusiness.CreateForm(payment.pay_id, _monto, _producto, _cuotas, paymentDetail);

                //Actualizo payment detail
                paymentDetail = this.UpdatePaymentDetail(paymentDetail);

                //Actualizo el payment con el formulario de pagos si no retorno nulo
                if (!string.IsNullOrEmpty(urlPaymentForm))
                {
                    //Valido que NPS retorne una url, sino es porque arrojo error y lo dejo registrado en tbPayment
                    //y no envío el mail
                    if (urlPaymentForm.Contains("http"))
                    {
                        //Asigno la url del formulario de pago de la app cliente
                        string vueAppUrl = ConfigurationManager.AppSettings["VUE_APP_URL_FORM"] + "/" + payment.pay_id.ToString();

                        //Actualizo payment con el formulario de pago
                        payment.pay_url_formulario        = urlPaymentForm;
                        payment.pay_url_formulario_custom = vueAppUrl;
                        payment.pst_id = (int)EnumPaymentStatus.PENDIENTE;
                        payment        = this.UpdatePayment(payment);

                        //envio e-mail
                        this.SendEmamil(vueAppUrl);

                        //Actualizo payment con el contador de envio de mails
                        payment.pay_cantidad_mails_enviados++;
                        payment = this.UpdatePayment(payment);
                    }
                    else
                    {
                        //Actualizo payment con el error que arrojo NPS
                        payment.pay_informacion_adicional = urlPaymentForm;
                        payment.pst_id = (int)EnumPaymentStatus.ERROR;
                        payment        = this.UpdatePayment(payment);
                    }
                }

                return(payment);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#3
0
        public tbPayment ConsultarEstadoDelPago(string psp_TransactionId, int psp_merchantTxReference,
                                                tbPaymentDetail paymentDetail)
        {
            string transactionId       = psp_TransactionId;
            string merchantTxReference = psp_merchantTxReference.ToString();

            NpsPaymentFormRepository npsPaymentForm = new NpsPaymentFormRepository();

            return(npsPaymentForm.ConsultarEstadoDelPago(transactionId, merchantTxReference, paymentDetail));
        }
 private tbPaymentDetail UpdatePaymentDetail(tbPaymentDetail paymentDetail)
 {
     try
     {
         paymentDetail = paymentDetailBusiness.Update(paymentDetail) as tbPaymentDetail;
         return(paymentDetail);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#5
0
        public tbPayment ConsultarEstadoDelPago(string psp_TransactionId, string psp_MerchTxRef, tbPaymentDetail paymentDetail)
        {
            try
            {
                _paymentDetail = paymentDetail;

                NpsModel model = new NpsModel();
                model.psp_QueryCriteria   = "T";
                model.psp_QueryCriteriaId = psp_TransactionId;

                return(this.RequestSimpleQueryTx(model));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#6
0
        public string CreateForm(int idPayment, int monto, int producto, int cuotas, tbPaymentDetail paymentDetail)
        {
            try
            {
                //Cuando se pase a test/pro se tiene que eliminar esto.
                string merchantTransactionReference = "CARGO-010000-" + idPayment.ToString();
                string amount      = monto.ToString();
                string product     = producto.ToString();
                string numPayments = cuotas.ToString();

                NpsPaymentFormRepository npsPaymentForm = new NpsPaymentFormRepository();
                return(npsPaymentForm.CrearFormulario(merchantTransactionReference, amount, product, numPayments, paymentDetail));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private tbPaymentDetail InsertPaymentDetail(string OPERATION_TYPE)
        {
            try
            {
                tbPaymentDetail paymentDetail = new tbPaymentDetail()
                {
                    pay_id                 = _idPayment,
                    pde_operacion          = OPERATION_TYPE,
                    pde_vendor_response_id = _transactionId,
                    pde_fecha              = DateTime.Now
                };

                return(paymentDetailBusiness.Create(paymentDetail) as tbPaymentDetail);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#8
0
 private tbPaymentDetail CreatePaymentDetail(tbPayment payment)
 {
     try
     {
         //Creo el registro del request en payment details
         tbPaymentDetail paymentDetail = new tbPaymentDetail()
         {
             pay_id        = payment.pay_id,
             pde_operacion = "SOLICITUD_FORMULARIO",
             pde_fecha     = DateTime.Now
         };
         paymentDetail = paymentDetailBusiness.Create(paymentDetail) as tbPaymentDetail;
         return(paymentDetail);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#9
0
        public string CrearFormulario(string merchantTransactionReference, string amount, string product,
                                      string numPayments, tbPaymentDetail paymentDetail)
        {
            try
            {
                _paymentDetail = paymentDetail;

                NpsModel model = new NpsModel();
                model.psp_MerchTxRef  = merchantTransactionReference;
                model.psp_Amount      = amount;
                model.psp_Product     = product;
                model.psp_NumPayments = numPayments;

                return(this.ArmarRequest(model));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }