Esempio n. 1
0
        internal RespuestaSimpleQueryTxDTO ObtenerRespuestaSimpleQueryTxDTO(RespuestaStruct_SimpleQueryTx originalResponse)
        {
            RespuestaSimpleQueryTxDTO dto = new RespuestaSimpleQueryTxDTO();

            if (originalResponse != null)
            {
                dto.ResponseCod      = Convert.ToInt32(originalResponse.psp_ResponseCod);
                dto.ResponseMsg      = originalResponse.psp_ResponseMsg;
                dto.ResponseExtended = originalResponse.psp_ResponseExtended;
                dto.MerchantId       = originalResponse.psp_MerchantId;
                dto.QueryCriteria    = originalResponse.psp_QueryCriteria;
                dto.QueryCriteriaId  = originalResponse.psp_QueryCriteriaId;
                dto.PosDateTime      = Convert.ToDateTime(originalResponse.psp_PosDateTime);

                if (originalResponse.psp_ResponseCod == RespuestaSimpleQueryTxNPS.Exitosa)
                {
                    dto.Transaction.ResponseCod      = Convert.ToInt32(originalResponse.psp_Transaction.psp_ResponseCod);
                    dto.Transaction.ResponseMsg      = originalResponse.psp_Transaction.psp_ResponseMsg;
                    dto.Transaction.ResponseExtended = originalResponse.psp_Transaction.psp_ResponseExtended;
                    dto.Transaction.TransactionId    = Convert.ToInt64(originalResponse.psp_Transaction.psp_TransactionId);
                }
            }

            return(dto);
        }
Esempio n. 2
0
        private tbPayment RequestSimpleQueryTx(NpsModel model)
        {
            try
            {
                tbPayment paymentResult = new tbPayment();
                //var proxy = new NpsService.PaymentServicePlatformPortTypeClient("PaymentServicePlatformPort");

                System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

                PaymentServicePlatformPortTypeClient client =
                    new PaymentServicePlatformPortTypeClient("PaymentServicePlatformPort");

                RespuestaStruct_SimpleQueryTx     result = new RespuestaStruct_SimpleQueryTx();
                RequerimientoStruct_SimpleQueryTx query  = new RequerimientoStruct_SimpleQueryTx();
                query = GetRequestSimpleQueryTx(model);

                this.AuditRequestResponse(JsonConvert.SerializeObject(query));
                result = client.SimpleQueryTx(query);
                this.AuditRequestResponse(JsonConvert.SerializeObject(result));

                //Estoy actualizando por referencia los valores de los campos dentro del registro tbPaymentDetails
                _paymentDetail.pde_vendor_response_status = result.psp_ResponseCod;

                //Valido si el codigo de respuesta del simple query es OK = 2
                if (Int32.Parse(result.psp_ResponseCod).Equals(2))
                {
                    if (result.psp_Transaction != null)
                    {
                        int responseCode = Int32.Parse(result.psp_Transaction.psp_ResponseCod);
                        //y el codigo de la transaccion=0 "Compra online aprobada"
                        //result.psp_Transaction.psp_ResponseCod = 0 (Pago aceptado)
                        //result.psp_Transaction.psp_ResponseCod = 9 (Pago rechazado)
                        //result.psp_Transaction.psp_ResponseCod = 25 (Formulario en curso)
                        //result.psp_Transaction.psp_ResponseCod = 3 (fondos insuficientes)
                        //result.psp_Transaction.psp_ResponseCod = 9 (form vencido)
                        switch (responseCode)
                        {
                        case 0:
                        {
                            paymentResult.pst_id = (int)EnumPaymentStatus.PAGADO;
                            paymentResult.pay_informacion_adicional = result.psp_Transaction.psp_ResponseMsg;
                            break;
                        }

                        default:
                        {
                            paymentResult.pst_id = (int)EnumPaymentStatus.ERROR;
                            paymentResult.pay_informacion_adicional =
                                result.psp_Transaction.psp_ResponseMsg + " | " +
                                result.psp_Transaction.psp_ResponseExtended;
                            break;
                        }
                        }

                        //Estoy actualizando por referencia los valores de los campos dentro del registro tbPaymentDetails
                        _paymentDetail.pde_vendor_response_id = result.psp_Transaction.psp_TransactionId;
                    }
                }

                return(paymentResult);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }