anonymous Log in
Search
Recents:
v3.0
gx-l
Problema con servicio REST
23/09/20 12:02

Sergio Guichón

Replies: 7

Estimados, estamos teniendo la necesidad de exponer un webservice REST para
que sea consumido por FirstData, ellos nos dan una definición del SDT que
tenemos que exponer como parámetros de entrada y un valor de salida.
Luego me pasaron un ejemplo del JSON con el que ellos llamarían al ws y allí
hay varios datos que no están en la definición original. Me dicen que
podrían agregar o quitar parámetros dependiendo de las necesidades, por lo
que podría ser que alguno de ellos no venga.
Yo tenía entendido que, al ser un webservice REST, si falta algún parámetro
o viene algún parámetro demás no habría problema, pero me está dando el
siguiente mensaje al invocarlo desde SOAPUI

Unrecognized field "RemainingExpirationTime" (Class
SdtRequest_RESTInterface), not marked as ignorable

El valor RemainingExpirationTime no existe en el SDT porque nunca me lo
definieron y así hay 6 valores más, pero se supone que no debería tener
problema
Si quito los datos que no tengo en el SDT todo funciona bien.
El SDT lo tengo definido de la siguiente forma:

El llamado que estoy haciendo es el siguiente:

{"Request":{ "TransactionId": 1234561234561234561,
"TransactionType": "C",
"Merchant": "11111111",
"Currency": "858",
"TotalAmount": "000000037610",
"TipAmount": "",
"TaxAmount": "000000000684",
"MonthsDeferred": "0",
"Quota": "00",
"Plan": "00",
"Ci": "",
"InvoiceNumber": "1234567",
"TaxRefund": "6#19210",
"Ticket": "0001",
"OriginalTicket": "",
"Batch": "001",
"AditionalData": "1#20000001|2#20000001|29#NO REQUIERE FIRMA NI
OTROS DATOS|32#",
"AuthorizationCode": "11111G",
"PosResponseCode": "00",
"AcquirerId": "0008",
"Issuer": "0015",
"CardNumber": "501073*********0000",
"ExpirationDate": "**/**",
"InputMode": "B",
"TransactionDate": "200922",
"TransactionHour": "102915",
"CardAccountType": "10",
"CardOwnerName": "",
"RemainingExpirationTime": 0.0,
"InvalidCardBinRead": "",
"InvalidCardIssuerRead": "",
"InvoiceAmount": "000000037610",
"AmountToApplyTax": "000000034191",
"OriginCardType": "1",
"EmvApplicationId": "",
"EmvApplicationName": "",
"AcquirerTerminal": "20000001",
"PosTerminal": "20000001",
"SpecialData": "",
"ClientRut": "",
"InvoiceTypeRequested": "",
"InvoiceReference": "",
"PaymentType": ""
}
}

Los valores en negrita son los que vienen “demás”, si los quito funciona
bien pero si no, da el error de arriba.

Cualquier ayuda es bienvenida.

Gracias.


_____
Sergio A.Guichón | Analista de Sistemas
<mailto:sguichon@montevideo.com.uy> sguichon@montevideo.com.uy

Tel Móvil: 099184045 | Tel Fijo: +598 2203 6879
Dirección: Av.Agraciada 2541 apto.803
Montevideo - Uruguay

Antes de imprimir este correo piense si es necesario.
Ahorre papel y el mundo se lo agradecerá.
_____




---------------------------------------------------------------------------------------------------------------------------------------
Con el nuevo beneficio fiscal, tu facturación electrónica puede ser sin costo.
Informate si aplicás aquí.
mvdfactura.uy
---------------------------------------------------------------------------------------------------------------------------------------
Replies

Esteban Carle

23/09/20 13:39
Pregunta boba. Y porque no agregas esos campos al SDT ¿?

plusvalia

23/09/20 14:12
No se que tiene de boba… Mateo Fernández Executive Partner Email: mateofd@plusvalialabs.com LinkedIn: https://www.linkedin.com/in/mateofd Web: http://www.plusvalialabs.com Make Tech Work for You...not the other way around Don't print this email unless you have to. Let's protect the Environment. No imprima este correo electrónico si no es necesario. Protejamos el Medio Ambiente. > On Sep 23, 2020, at 13:39, ecarle2

Sergio Guichón

23/09/20 15:20
Es lo primero que pensé, y averigüé por que no estaban en la documentación que me enviaron y la respuesta fue que ellos pueden mandarlos o no, lo que si es seguro que me envían son los que están documentados. Incluso podrían agregar parámetros que para nosotros no nos sirven pero de esa forma no tendría que modificar los programas. _____ Sergio A.Guichón | Analista de Sistemas sguichon@montevideo.com.uy Tel Móvil: 099184045 | Tel Fijo: +598 2203 6879 Dirección: Av.Agraciada 2541 apto.803 Montevideo - Uruguay Antes de imprimir este correo piense si es necesario. Ahorre papel y el mundo se lo agradecerá. _____

Sergio Guichón

23/09/20 15:22
Obvio que no es una pregunta para nada boba, yo que estoy acostumbrado a lidiar con usuarios, lo más simple y obvio termina siendo lo que soluciona el problema. _____ Sergio A.Guichón | Analista de Sistemas sguichon@montevideo.com.uy Tel Móvil: 099184045 | Tel Fijo: +598 2203 6879 Dirección: Av.Agraciada 2541 apto.803 Montevideo - Uruguay Antes de imprimir este correo piense si es necesario. Ahorre papel y el mundo se lo agradecerá. _____

john

24/09/20 10:58
Hola Sergio, como estamos?, lo que se me ocurre es que podrías crearte una tabla con el nombre de los campos, tipo, etc, que contiene el SDT y cuando recibes el Json, lo recorres y comparas si los nombres de los campos del Json son distintos o no hay en la tabla, de esa forma podrías controlar el error y enviar alguna alerta o notificación………. Espero que mis comentarios sirvan de ayuda Saludos John.-

Sergio Guichón

24/09/20 15:32
John, gracias por la sugerencia, pero el problema lo está dando ya directamente en los parámetros, ya que se reciben directamente en el SDT. y por eso da el error ya que hay valores que no se esperan. Lo raro, que yo tenía entendido es que si un valor que viene en el JSON no está en el SDT, directamente lo ignoraba, pero al parecer no es así y no se si es un bug o es el comportamiento de los ws de genexus _____ Sergio A.Guichón | Analista de Sistemas sguichon@montevideo.com.uy Tel Móvil: 099184045 | Tel Fijo: +598 2203 6879 Dirección: Av.Agraciada 2541 apto.803 Montevideo - Uruguay Antes de imprimir este correo piense si es necesario. Ahorre papel y el mundo se lo agradecerá. _____

john

24/09/20 21:05
Sergio la idea es analizar la cadena del Json antes de asignarla al SDT, por ahí para detectar errores o para reescribir el Json y sacar lo que está de más(por ejemplo) Otra cosa que podes hacer si quieres controlar el error, si usas el método .FromJson() te devuelve un booleano que te dice si la operación tuvo error o no. Saludos John.-


Back to gx-l