Página 3 de 6
Re: Enviar archivos de controles volumetricos a PEMEX
Publicado: Sab Dic 06, 2014 10:38 am
por Jesus Castelo
rodo, que certificado usaste para conectarte al servicio de envio?, te lo dieron especialmente para CONVOL 2.0 o usaste alguno que ya tenias en CONVOL 1.0? el usuario y contraseña que usaste es el mismo que se venia usando para CONVOL 1.0?
Gracias por tu tiempo...
Re: Enviar archivos de controles volumetricos a PEMEX
Publicado: Dom Dic 07, 2014 10:37 pm
por omar_chavez
Tendrán el archivo de Referencia de PEMEX para analizarlo bien?
Estoy viendo en el Fiddler que me retorna un XML con 1 estructura Fault que no la veo contemplada en ninguna parte ... (Según mis pruebas)
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<ns2:enviaCONVOL xmlns:ns2="http://ws.convol/">
<arg0>27/11/2014</arg0>
<arg1>12:49:35</arg1>
<arg2>AAAAA</arg2>
<arg3>40f3390881992f2e9db586316e15ce0b575b9e0806aa1c9bef636767be706536</arg3>
</ns2:enviaCONVOL>
<s:Fault>
<faultcode>s:Server</faultcode>
<faultstring>300|No hay datos en header para seguridad</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>
Re: Enviar archivos de controles volumetricos a PEMEX
Publicado: Lun Dic 08, 2014 11:27 am
por Jesus Castelo
omar_chavez escribió:Tendrán el archivo de Referencia de PEMEX para analizarlo bien?
Muchas gracias por el interes Omar, te paso mi correo
amd.guizmo@gmail.com, si me puedes pasar por favor el tuyo y me pongo en contacto.
Saludos...

Re: Enviar archivos de controles volumetricos a PEMEX
Publicado: Jue Dic 11, 2014 3:58 pm
por Jesus Castelo
Gracias a la ayuda de rodo, fortiz y Omar Chavez, encontramos la solucion.
Config final:
Código: Seleccionar todo
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ServicioConsultaCONVOLPortBinding">
<security mode="Transport" />
</binding>
<binding name="ServicioEnviaCONVOLPortBinding" messageEncoding="Mtom">
<security mode="Transport" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://www.convolmiscelaneapruebas.pemex.com:443/ServiciosCVWEB/ServicioConsultaCONVOLService"
binding="basicHttpBinding" bindingConfiguration="ServicioConsultaCONVOLPortBinding"
contract="PruebaServicioConsultaCONVOLDelegate"
name="ServicioConsultaCONVOLPort" />
<endpoint address="https://www.convolmiscelaneapruebas.pemex.com:443/ServiciosCVWEB/ServicioEnviaCONVOLService"
binding="basicHttpBinding" bindingConfiguration="ServicioEnviaCONVOLPortBinding"
contract="PruebaServicioEnviaCONVOL"
name="ServicioEnviaCONVOLPort" />
<endpoint address="https://www.convol.pemex.com:443/ServiciosCVWEB/ServicioConsultaCONVOLService"
binding="basicHttpBinding" bindingConfiguration="ServicioConsultaCONVOLPortBinding"
contract="ServicioConsultaCONVOLDelegate"
name="ServicioConsultaCONVOLPort" />
<endpoint address="https://www.convol.pemex.com:443/ServiciosCVWEB/ServicioEnviaCONVOLService"
binding="basicHttpBinding" bindingConfiguration="ServicioEnviaCONVOLPortBinding"
contract="ServicioEnviaCONVOL"
name="ServicioEnviaCONVOLPort" />
</client>
</system.serviceModel>
</configuration>
Uso del servicio:
Código: Seleccionar todo
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Security.Permissions;
using System.Text;
namespace ArchivosPEMEX
{
[System.Runtime.Serialization.DataContract()]
public class Seguridad
{
[System.Runtime.Serialization.DataMember(Order = 0)]
public string usuario;
[System.Runtime.Serialization.DataMember(Order = 1)]
public string password;
[System.Runtime.Serialization.DataMember(Order = 2)]
public string fechaSistema;
}
public class Pruebas
{
static ConsultaPEMEX.ServicioConsultaCONVOLDelegateClient RequestConsu = new ConsultaPEMEX.ServicioConsultaCONVOLDelegateClient();
static EnviaPEMEX.ServicioEnviaCONVOLClient RequestEnvio = new EnviaPEMEX.ServicioEnviaCONVOLClient();
static PruebaConsultaPEMEX.ServicioConsultaCONVOLDelegateClient RequestPruebaConsu = new PruebaConsultaPEMEX.ServicioConsultaCONVOLDelegateClient();
static PruebaEnviaPEMEX.ServicioEnviaCONVOLClient RequestPruebaEnvio = new PruebaEnviaPEMEX.ServicioEnviaCONVOLClient();
public static string getHashSha256(string text)
{
byte[] bytes = Encoding.UTF8.GetBytes(text);
SHA256Managed hashstring = new SHA256Managed();
byte[] hash = hashstring.ComputeHash(bytes);
string hashString = string.Empty;
foreach (byte x in hash)
{
hashString += String.Format("{0:x2}", x);
}
return hashString;
}
public static byte[] ConsultarArchivo(string cNombreArchivo)
{
byte[] ArchivoRespuesta;
ArchivoRespuesta = RequestConsu.consultaCONVOL(cNombreArchivo);
return ArchivoRespuesta;
}
public static byte[] EnviarArchivo(byte[] ArchivoEnvio, string Checksum, string cUsuario, string cPassword, string cFecha, string cHora)
{
byte[] ArchivoRespuesta;
string cPasswordSHA256 = getHashSha256(cUsuario + cPassword + DateTime.Now.ToString("dd/MM/yyyy"));
using (System.ServiceModel.OperationContextScope scope = new System.ServiceModel.OperationContextScope(RequestEnvio.InnerChannel))
{
System.ServiceModel.Channels.MessageHeader header = System.ServiceModel.Channels.MessageHeader.CreateHeader(
"Seguridad",
"http://ws.convol/",
new Seguridad { usuario = cUsuario, password = cPasswordSHA256, fechaSistema = DateTime.Now.ToString("dd/MM/yyyy") },
false);
System.ServiceModel.OperationContext.Current.OutgoingMessageHeaders.Add(header);
ArchivoRespuesta = RequestEnvio.enviaCONVOL(cFecha, cHora, ArchivoEnvio, Checksum);
}
return ArchivoRespuesta;
}
public static byte[] PruebaConsultarArchivo(string cNombreArchivo)
{
System.Net.ServicePointManager.ServerCertificateValidationCallback =
((sender, certificate, chain, sslPolicyErrors) => true);
byte[] ArchivoRespuesta;
ArchivoRespuesta = RequestPruebaConsu.consultaCONVOL(cNombreArchivo);
return ArchivoRespuesta;
}
public static byte[] PruebaEnviarArchivo(byte[] ArchivoEnvio, string Checksum, string cUsuario, string cPassword, string cFecha, string cHora)
{
System.Net.ServicePointManager.ServerCertificateValidationCallback =
((sender, certificate, chain, sslPolicyErrors) => true);
byte[] ArchivoRespuesta;
string cPasswordSHA256 = getHashSha256(cUsuario + cPassword + DateTime.Now.ToString("dd/MM/yyyy"));
using (System.ServiceModel.OperationContextScope scope = new System.ServiceModel.OperationContextScope(RequestPruebaEnvio.InnerChannel))
{
System.ServiceModel.Channels.MessageHeader header = System.ServiceModel.Channels.MessageHeader.CreateHeader(
"Seguridad",
"http://ws.convol/",
new Seguridad { usuario = cUsuario, password = cPasswordSHA256, fechaSistema = DateTime.Now.ToString("dd/MM/yyyy") },
false);
System.ServiceModel.OperationContext.Current.OutgoingMessageHeaders.Add(header);
ArchivoRespuesta = RequestPruebaEnvio.enviaCONVOL(cFecha, cHora, ArchivoEnvio, Checksum);
}
return ArchivoRespuesta;
}
}
}
El usuario para el envio en produccion y en pruebas es el mismo (clave SIIC) pero la contraseña en pruebas es pemex99999.
Saludos...
Re: Enviar archivos de controles volumetricos a PEMEX
Publicado: Mar Dic 30, 2014 10:34 pm
por yonitatemaco
Que tal Ingenieros!
En el proceso de transmisión el Web Service de pruebas me manda este error:
<acceso clave='426' timestamp='30/12/2014 16:50:46' descripcion='Sellado de archivo no válido'></acceso>
He verificado el sello con el siguiente comando:
xsltproc cadenaoriginal_v1_1.xslt 0000000000E0000020141221.000000RFCI580401RFC.xml | openssl dgst -sha1 -sign RFCI580401RFC_S.key.pem | openssl enc -base64 -A
El sello me sale igual como cuando genero el xml, por esta razón pienso que el sello es valido, pero en el portal de pruebas me rechaza el archivo por que me dice lo contrario.
Alguna idea ?
Agradezco de antemano.
Saludos!
Re: Enviar archivos de controles volumetricos a PEMEX
Publicado: Mié Dic 31, 2014 9:22 am
por javiht
Hola yonitatemaco, tengo varios dias peleandome con ese mismo error de: <acceso clave='426' timestamp='30/12/2014 15:24:19' descripcion='Sellado de archivo no válido'>, si encuentras una solución, por favor avisame, yo hare lo mismo si la encuentro.
Saludos y un feliz 2015 para todos.
Re: Enviar archivos de controles volumetricos a PEMEX
Publicado: Vie Ene 02, 2015 7:51 am
por javiht
Hola nuevamente, quisiera saber si alguno de ustedes ya esta enviando exitosa mente archivos de control volumetrico al servidor de pruebas Pemex.
Agradecería muchismo me contactaran.
javi466-vpn@yahoo.com.
Saludos y gracias.
Re: Enviar archivos de controles volumetricos a PEMEX
Publicado: Vie Ene 02, 2015 12:19 pm
por yonitatemaco
Hola que tal javiht, yo sigo donde mismo, no he podido avanzar, ya he probado de todo y nada sigo en el mismo error. si encuentro la solución te aviso.
Saludos y feliz año.
Re: Enviar archivos de controles volumetricos a PEMEX
Publicado: Sab Ene 03, 2015 9:44 am
por javiht
Hola yonitatemaco, me puedes escribir un correo para contactarte.
javi466-vpn@yahoo.com.
Desde el dia 1º de enero ya no se recibo XML's del servicio web de pemex, tengo una excepción: Error creating a reader for the MTOM message. Y mi código es exactamente igual, que cuando recibía respuestas en xml.
¿A alguien le pasa lo mismo?
Saludos
Re: Enviar archivos de controles volumetricos a PEMEX
Publicado: Mié Ene 07, 2015 9:25 pm
por rodo
kscius escribió:A mi me responde
Código: Seleccionar todo
<faultstring>302|Usuario invalido, no se permite acceso</faultstring>
, y si estoy mandando correctamente todo...
Código: Seleccionar todo
<au:usuario>0000105847</au:usuario>
<au:password>720826e2d9ed4a0230d3de0bc78d534feb2ca02a0c69c382f16b6dbf25e82ea7</au:password>
<au:fechaSistema>07/01/2015</au:fechaSistema>
donde el sha es 0000105847pemex9999907/01/2015
en pemex dicen que donde dice <au:password>les llega lo de <au:usuario>
En la peticion SOAP como esta enviando el apartado del header del nodo seguridad?
Usando tus datos el portal si me los acepta.