Page 1 of 1
Una envio con Post ** SOLUCIONADO **
Posted: Fri Mar 18, 2022 10:34 pm
by lubin
Buenas tardes colegas de la Vida
Debo obtener un token desde una petición tipo POST una API de la SUNAT - Perú
Para esto nos dan los siguientes datos:
el ID_cliente ="xxxxxxmxmxmxmxm"
CLAVE_Cliente = "zxzxzxzxzxzxzxzxzx"
y Se deberá acceder a la siguiente URL
-->>
https://api-seguridad.sunat.gob.pe/v1/clientesextranet/cliente_id/oauth2/token/
client_id: Es el ID_cliente
En el cuerpo(Body) de la consulta deberá ser de tipo “x-www-form-urlencoded”
y enviaremos estas Keys:
grant_type = client_credentials
scope =
https://api.sunat.gob.pe/v1/contribuyen ... ribuyentes client_id = ID_cliente
client_secret = CLAVE_cliente
Con estos datos prepare esta rutina pero no logro conectarme, No se que debo poner en el oHttp:Send("XXX")
Yo he probado la conexion con el programa Postman para ver si la API de SUNAT funciona y si da la respuesta correcta.
Cuando la ejecuto se queda en el CATCH por que no pudo conectarse , en el MSGINFO ("ERROR01: ..... " )
ESTA ES MI CODIFICACION :
Code: Select all | Expand
FUNCTION FSUNAT_GET_TOKEN(w_client_id,w_client_secret)
******************************************************
LOCAL oDoc
LOCAL ohttp
LOCAL cUrl:=""
LOCAL XRespuesta:=""
LOCAL aHasRes
LOCAL W_Token
LOCAL W_TipoToken
LOCAL W_TimeExpire
ohttp := CREATEOBJECT("MSXML2.ServerXMLHTTP.6.0")
doc := CREATEOBJECT('MSXML2.DOMDocument.6.0')
** w_client_id es el DI del Cliente
** w_client_secret Es la Clave del cliente
cUrl:="https://api-seguridad.sunat.gob.pe/v1/clientesextranet/" + w_client_id + "/oauth2/token/"
ohttp:Open( "POST" ,cUrl,.F.)
ohttp:SetRequestHeader("content-type" , "application/x-www-form-urlencoded" )
oHttp:SetRequestHeader("grant_type" , "client_credentials")
oHttp:SetRequestHeader("scope" , "https://api.sunat.gob.pe/v1/contribuyente/contribuyentes")
oHttp:SetRequestHeader("client_id" , w_client_id)
oHttp:SetRequestHeader("client_secret", w_client_secret)
TRY
ohttp:Send("") && ohttp:Send(enviar)
CATCH
msginfo("ERROR01: No Se pudo Enviar solicitud de token","Intente Nuevamente")
return XRespuesta
END
XRespuesta:=ohttp:responseText
** lEEMOS LA RESPUESTA
aHasRes := hash()
hb_jsondecode(XRespuesta ,@aHasRes) //Parse JSON to hash
W_Token := aHasRes["access_token"]
W_TipoToken := aHasRes["token_type"]
W_TimeExpire:= aHasRes["expires_in"]
MSGINFO(W_Token , valtype(W_Token ))
MSGINFO(W_TipoToken , valtype(W_TipoToken ))
MSGINFO(W_TimeExpire, valtype(W_TimeExpire))
*Retornamos el Tokek
RETURN W_Token
Agradeceré cualquier Ayuda
Lubin
Re: Una envio con Post
Posted: Fri Mar 18, 2022 11:16 pm
by karinha
El site solo muestra esto: Bienvenidos a SUNAT y más nada, está correcto?
Regards, saludos.
Re: Una envio con Post
Posted: Sat Mar 19, 2022 3:03 am
by lubin
Hola Karinha
La URL completa indicada es una dirección que recibe peticiones para consultas de la SUNAT, ( la Sunat en Peru es la Superintendencia Nacional de Aduanas y de Administración Tributaria. .. ve los tributos)
El tema es poder hacer la consulta, pero me parece que me falta el paramentro adecuado en ohttp:send( "xxxxx" ) Que valor tendría "xxxx" o como seria la consulta???
Gracias .
Lubin
Re: Una envio con Post
Posted: Sat Mar 19, 2022 11:57 am
by karinha
Master Lubin, Lo que quise decir:
{"cod":"404","msg":"Not Found - El Recurso Solicitado no puede ser encontrado."}
La dirección de esta URL no responde. O está fuera de servicio, o ha cambiado de dirección. Vea si puede encontrar la URL correcta.
Regards, saludos.
Re: Una envio con Post
Posted: Sat Mar 19, 2022 10:24 pm
by cmsoft
Hola Lubin, me interesa el tema y por eso estuve haciendo pruebas.
Todas me dan lo mismo que a Ud.
Sin embargo, con Postman, si accedo a que me devuelva {"error_description":"cliente no autorizado","error":"unauthorized_client"} (Eso es correcto porque yo pongo cualquier valor de usuario y clave).
Si te fijas con Postman, el envio Curl queda de la siguiente manera:
Code: Select all | Expand
curl --location --request POST 'https://api-seguridad.sunat.gob.pe/v1/clientesextranet/0001/oauth2/token/' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: TS019e7fc2=019edc9eb833efa208ebafe19a0cb31458a80273fee6dbdcea86918dff131d7cc6c12a3f038f6fb103241babd7b41e2f28dd90b2c6' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=https://api.sunat.gob.pe/v1/contribuyente/contribuyentes' \
--data-urlencode 'client_id=0001' \
--data-urlencode 'client_secret=test'
Fijate que no es un header lo que envia en los datos sino un data-urlencode
Intente de varias maneras pero todas con el mismo resultado
Segun lo que lei, en el tipo de envio application/x-www-form-urlencoded, hay que enviarle los pares de datos juntados con &
Code: Select all | Expand
cData := 'grant_type=client_credentials&=scope=https://api.sunat.gob.pe/v1/contribuyente/contribuyentes&=client_id=123456&=client_secret=xxxxxxx'
ohttp:Send(cData)
Pero a mi no me funciona tampoco.
Tal vez algun experto pueda saber la forma de armar la data para enviar
Saludos
Re: Una envio con Post
Posted: Sun Mar 20, 2022 3:27 am
by lubin
Hola Karinha , y Cesar
Gracias por los comentarios.
Efectivamente, probe la conexion por Postman y si responde el token, lineas abajo coloco el Codigo PRG con el Nombre de USuario y Clave para una prueba real y obtener respuesta.
Aqui les pego un link de un video:
https://www.youtube.com/watch?v=3gJizy4qOlU donde se ve como se procesa,, pero no logro obtener el token,, inclusive luego hay que hacer una segunda consulta.
Es un caso interesante para conectarse con una API Rest que usa Oauth2
Me parece que el tema seria ver como se manda con el oHttp:Send()
Quizás así podamos descubrir el método de envió
Estaré muy atento y agradecido por la ayuda.
Lubin
Code: Select all | Expand
FUNCTION FSUNAT_GET_TOKEN(w_client_id,w_client_secret)
******************************************************
** RUTINA QUE LLEVA EL USUARIO Y LA CLAVE LINEA ABAJO ***
LOCAL oDoc
LOCAL ohttp
LOCAL cUrl:=""
LOCAL XRespuesta:=""
LOCAL aHasRes
LOCAL W_Token
LOCAL W_TipoToken
LOCAL W_TimeExpire
* carga directa de los datos pra probaar
w_client_id="0319813d-f7c8-43fc-bda6-4317b225d3de"
w_client_secret="t8xujQF0yWLYmbp904iYZw=="
* METODO OBJTETO #1 (NO FUNCIONA SE QUEDA EN EN CATH )
* doc := CREATEOBJECT("MSXML2.DOMDocument.6.0")
* ohttp := CREATEOBJECT("MSXML2.ServerXMLHTTP.6.0")
* METODO OBJTETO #2 ( RESPONDE ERROR HTTP 400 BAD REQUEST)
doc := CreateObject( "MSXML2.DOMDocument" )
ohttp := CreateObject( "MSXML2.XMLHTTP" )
cUrl:="https://api-seguridad.sunat.gob.pe/v1/clientesextranet/"+w_client_id+"/oauth2/token/"
ohttp:Open( "POST" ,cUrl,.F.)
*ohttp:SetRequestHeader("content-type" , "application/x-www-form-urlencoded" )
ohttp:SetRequestHeader("content-type" , "x-www-form-urlencoded" )
oHttp:SetRequestHeader("grant_type" , "client_credentials")
oHttp:SetRequestHeader("scope" , "https://api.sunat.gob.pe/v1/contribuyente/contribuyentes")
oHttp:SetRequestHeader("client_id" , w_client_id)
oHttp:SetRequestHeader("client_secret", w_client_secret)
TRY
ohttp:Send() && ohttp:Send(enviar)
CATCH
msginfo("No Se pudo Enviar solicitud de token","Intente Nuevamente")
return XRespuesta
END
XRespuesta:=ohttp:responseText
IF "ERROR"$ UPPER(XRespuesta)
MSGINFO(XRespuesta,"RESPUESTA CON ERROR ")
return ""
ENDIF
** lEEMOS LA RESPUESTA
aHasRes := hash()
hb_jsondecode(XRespuesta ,@aHasRes) //Parse JSON to hash
W_Token := aHasRes["access_token"]
W_TipoToken := aHasRes["token_type"]
W_TimeExpire:= aHasRes["expires_in"]
MSGINFO(W_Token , valtype(W_Token ))
MSGINFO(W_TipoToken , valtype(W_TipoToken ))
MSGINFO(W_TimeExpire, valtype(W_TimeExpire))
*Retornamos el Tokek
RETURN W_Token
Re: Una envio con Post SOLUCIONADO
Posted: Sun Mar 20, 2022 8:20 am
by lubin
Estimados Karina y Cesar
Ya se resolvio el misterio, La conexión fue realizada y se obtuvo el token
Cesar me sirvió el concepto que pusiste de la cData, encontré que había un signo = luego de un &, que estaba de mas, por ello no te funcionaba
Era :
cData := 'grant_type=client_credentials&=scope=https://api.sunat.gob.pe/v1/contribuyente/contribuyentes&=client_id=123456&=client_secret=xxxxxxx'
y debe de ser :
cData := 'grant_type=client_credentials&scope=https://api.sunat.gob.pe/v1/contribuyente/contribuyentes&client_id=123456&client_secret=xxxxxxx'
Aqui les dejo como quedo la funcion de consulta, que puede ser util cuando "content-type" es -->> "application/x-www-form-urlencoded"
Gracias a todos
Lubin
Code: Select all | Expand
FUNCTION FSUNAT_GET_TOKEN(w_client_id,w_client_secret)
************************************************************************************************************ SOLUCIONADO
*FUNCION PARA OBTENER EL TOKEN QUE SE USARA EN UNA CONSULTA A LA SUNAT - PERU
*FECHA 20/03/2022
******************************************************************************
** RUTINA QUE LLEVA EL USUARIO Y LA CLAVE LINEA ABAJO ***
LOCAL oDoc
LOCAL ohttp
LOCAL cUrl:=""
LOCAL XRespuesta:=""
LOCAL aHasRes
LOCAL W_Token
LOCAL W_TipoToken
LOCAL W_TimeExpire
local w_send
* carga directa de los datos pra probaar (DATOS DE PRUEBA SOLO VALIDO HASTA 22/03/2022)
w_client_id="0319813d-f7c8-43fc-bda6-4317b225d3de"
w_client_secret="t8xujQF0yWLYmbp904iYZw=="
cUrl :="https://api-seguridad.sunat.gob.pe/v1/clientesextranet/"+w_client_id+"/oauth2/token/"
ohttp := CreateObject( "MSXML2.XMLHTTP" )
ohttp:Open( "POST" ,cUrl,.F.)
ohttp:SetRequestHeader("content-type" , "application/x-www-form-urlencoded" )
*Se prepara la consulta del W_SEND de los pares de datos "Campo1=Valor&Campo2=Valor2&Campo3&Valor3....."
w_send := "grant_type=client_credentials&scope=https://api.sunat.gob.pe/v1/contribuyente/contribuyentes&client_id="+ w_client_id +"&client_secret="+w_client_secret
TRY
ohttp:Send(w_send) && ohttp:Send(enviar)
CATCH
msginfo("No Se pudo Enviar solicitud de token","Intente Nuevamente")
return XRespuesta
END
XRespuesta:=ohttp:responseText
msginfo(XRespuesta,"esto respnde ... ")
IF "ERROR"$ UPPER(XRespuesta)
MSGINFO(XRespuesta,"RESPUESTA CON ERROR ")
return ""
ENDIF
** lEEMOS LA RESPUESTA
aHasRes := hash()
hb_jsondecode(XRespuesta ,@aHasRes) //Parse JSON to hash
W_Token := aHasRes["access_token"]
W_TipoToken := aHasRes["token_type"]
W_TimeExpire:= aHasRes["expires_in"]
MSGINFO(W_Token , valtype(W_Token ))
MSGINFO(W_TipoToken , valtype(W_TipoToken ))
MSGINFO(W_TimeExpire, valtype(W_TimeExpire))
*Retornamos el Tokek
RETURN W_Token
Re: Una envio con Post ** SOLUCIONADO **
Posted: Sun Mar 20, 2022 12:34 pm
by cmsoft
Excelente Lubin!!
Me alegro que hayas encontrado la solución!
Muchas gracias por compartirlo!
Saludos
Re: Una envio con Post ** SOLUCIONADO **
Posted: Sat Mar 26, 2022 4:14 am
by artu01
Continuando este hilo quiero solicitar datos pero me aparece este error.

este es mi codigo
Code: Select all | Expand
cUrl:="https://api.sunat.gob.pe/v1/contribuyente/contribuyentes/20502060768/validarcomprobante/"
ohttp := CreateObject( "MSXML2.XMLHTTP" )
ohttp:Open( "POST" ,cUrl,.F.)
ctk:="eyJraWQiOiJhcGkuc3VuYXQuZ29iLnBlLmtpZDEwMSIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJiZmMwYWFlNi1jNDQwLTRiZDMtYmI0NS02NmY5NjAyOTA1MDgiLCJhdWQiOiJbe1wiYXBpXCI6XCJodHRwczpcL1wvYXBpLnN1bmF0LmdvYi5wZVwiLFwicmVjdXJzb1wiOlt7XCJpZFwiOlwiXC92MVwvY29udHJpYnV5ZW50ZVwvY29udHJpYnV5ZW50ZXNcIixcImluZGljYWRvclwiOlwiMFwiLFwiZ3RcIjpcIjAxMDAwMFwifV19XSIsIm5iZiI6MTY0ODI1ODg3NywiY2xpZW50SWQiOiJiZmMwYWFlNi1jNDQwLTRiZDMtYmI0NS02NmY5NjAyOTA1MDgiLCJpc3MiOiJodHRwczpcL1wvYXBpLXNlZ3VyaWRhZC5zdW5hdC5nb2IucGVcL3YxXC9jbGllbnRlc2V4dHJhbmV0XC9iZmMwYWFlNi1jNDQwLTRiZDMtYmI0NS02NmY5NjAyOTA1MDhcL29hdXRoMlwvdG9rZW5cLyIsImV4cCI6MTY0ODI2MjQ3NywiZ3JhbnRUeXBlIjoiY2xpZW50X2NyZWRlbnRpYWxzIiwiaWF0IjoxNjQ4MjU4ODc3fQ.r8hNuaa2p-lGpbcpO8lbfwq62e9wIpdZD6YolYROLkoKBKSy0rnfYZYH9Ms4c0d7LXdSotF4Y90uaAdNUop7VqOKECMUYR2ZhC7wapOme0QEQi0K_WO0C_X-idKs_cO5MfCWkCKiM_mM52hfWXcCsRCNyAqeYN9VwtUNORwwszt45og3wIb_cDVsLYbW0oKV6TmgigbgYDIvJ9hcZEOq31cLZ95IELXDM9lbhF2-bftZzGofQNbitzAsg1pr0L9D16xvL8TRZ2sa3yUqkwRWCAoM8XYJlhTbdHN5H1JpF5FTEpTSheRZCLQTe_6p-J0A4Pwq4z8m_iwx1HdVd93O8g"
ohttp:SetRequestHeader("Authorization", "Bearer &ctk" )
cJson :='{"numRuc":"20332970411","codComp":"01","numeroSerie":"F072","numero":"1844225","fechaEmision":"06/01/2022","monto":"1682.44"}'
oHttp:setRequestHeader( "Content-type", "text/json" )
//ohttp:SetRequestHeader("content-type" , "application/raw -JSON(application/json" )
//ohttp:Open( "POST" ,cUrl,.F.)
TRY
ohttp:Send(cJson)
CATCH
msginfo("No Se pudo Enviar solicitud ","Intente Nuevamente")
return XRespuesta
END
XRespuesta:=ohttp:responseText
?XRespuesta
aHasRes1 := hash()
hb_jsondecode(XRespuesta ,@aHasRes1) //Parse JSON to hash
?aHasRes1["success"]
tengo win7 tendra algo que ver
Re: Una envio con Post ** SOLUCIONADO **
Posted: Sat Mar 26, 2022 12:56 pm
by cmsoft
Artu:
El método no soportado imagino que hace referencia a la forma de solicitar el dato, si por POST o por GET.
Prueba cambiando:
Por
O mira las espeficicaciones de la Api a ver que metodo requiere para ese comando
Re: Una envio con Post ** SOLUCIONADO **
Posted: Sat Mar 26, 2022 8:38 pm
by artu01
artu01 wrote:Code: Select all | Expand
cUrl:="https://api.sunat.gob.pe/v1/contribuyente/contribuyentes/20502060768/validarcomprobante/"
Gracias cesar por responder le quite el caracter / al final de la URL y funciono!
Re: Una envio con Post ** SOLUCIONADO **
Posted: Sat Mar 26, 2022 8:41 pm
by cmsoft
Me alegro que lo hayas solucionado!!
Re: Una envio con Post SOLUCIONADO
Posted: Fri Jun 16, 2023 1:20 am
by LuisPonce
lubin wrote:Estimados Karina y Cesar
Ya se resolvio el misterio, La conexión fue realizada y se obtuvo el token
Cesar me sirvió el concepto que pusiste de la cData, encontré que había un signo = luego de un &, que estaba de mas, por ello no te funcionaba
Era :
cData := 'grant_type=client_credentials&=scope=https://api.sunat.gob.pe/v1/contribuyente/contribuyentes&=client_id=123456&=client_secret=xxxxxxx'
y debe de ser :
cData := 'grant_type=client_credentials&scope=https://api.sunat.gob.pe/v1/contribuyente/contribuyentes&client_id=123456&client_secret=xxxxxxx'
Aqui les dejo como quedo la funcion de consulta, que puede ser util cuando "content-type" es -->> "application/x-www-form-urlencoded"
Gracias a todos
Lubin
Code: Select all | Expand
FUNCTION FSUNAT_GET_TOKEN(w_client_id,w_client_secret)
************************************************************************************************************ SOLUCIONADO
*FUNCION PARA OBTENER EL TOKEN QUE SE USARA EN UNA CONSULTA A LA SUNAT - PERU
*FECHA 20/03/2022
******************************************************************************
** RUTINA QUE LLEVA EL USUARIO Y LA CLAVE LINEA ABAJO ***
LOCAL oDoc
LOCAL ohttp
LOCAL cUrl:=""
LOCAL XRespuesta:=""
LOCAL aHasRes
LOCAL W_Token
LOCAL W_TipoToken
LOCAL W_TimeExpire
local w_send
* carga directa de los datos pra probaar (DATOS DE PRUEBA SOLO VALIDO HASTA 22/03/2022)
w_client_id="0319813d-f7c8-43fc-bda6-4317b225d3de"
w_client_secret="t8xujQF0yWLYmbp904iYZw=="
cUrl :="https://api-seguridad.sunat.gob.pe/v1/clientesextranet/"+w_client_id+"/oauth2/token/"
ohttp := CreateObject( "MSXML2.XMLHTTP" )
ohttp:Open( "POST" ,cUrl,.F.)
ohttp:SetRequestHeader("content-type" , "application/x-www-form-urlencoded" )
*Se prepara la consulta del W_SEND de los pares de datos "Campo1=Valor&Campo2=Valor2&Campo3&Valor3....."
w_send := "grant_type=client_credentials&scope=https://api.sunat.gob.pe/v1/contribuyente/contribuyentes&client_id="+ w_client_id +"&client_secret="+w_client_secret
TRY
ohttp:Send(w_send) && ohttp:Send(enviar)
CATCH
msginfo("No Se pudo Enviar solicitud de token","Intente Nuevamente")
return XRespuesta
END
XRespuesta:=ohttp:responseText
msginfo(XRespuesta,"esto respnde ... ")
IF "ERROR"$ UPPER(XRespuesta)
MSGINFO(XRespuesta,"RESPUESTA CON ERROR ")
return ""
ENDIF
** lEEMOS LA RESPUESTA
aHasRes := hash()
hb_jsondecode(XRespuesta ,@aHasRes) //Parse JSON to hash
W_Token := aHasRes["access_token"]
W_TipoToken := aHasRes["token_type"]
W_TimeExpire:= aHasRes["expires_in"]
MSGINFO(W_Token , valtype(W_Token ))
MSGINFO(W_TipoToken , valtype(W_TipoToken ))
MSGINFO(W_TimeExpire, valtype(W_TimeExpire))
*Retornamos el Tokek
RETURN W_Token
Hola Lubin
Estoy liado con el tema de las GRE, y veo que publicas esta funcion para obtener el token de sunat con las credenciales, excelente. obtengo el token con el PostMan pero desde la funcion obtengo un error 400 Bat Request, en esa funcion no va el usuario y clave sol?
Re: Una envio con Post SOLUCIONADO
Posted: Fri Jun 16, 2023 4:22 am
by cjcardoza
LuisPonce wrote:lubin wrote:Estimados Karina y Cesar
Ya se resolvio el misterio, La conexión fue realizada y se obtuvo el token
Cesar me sirvió el concepto que pusiste de la cData, encontré que había un signo = luego de un &, que estaba de mas, por ello no te funcionaba
Era :
cData := 'grant_type=client_credentials&=scope=https://api.sunat.gob.pe/v1/contribuyente/contribuyentes&=client_id=123456&=client_secret=xxxxxxx'
y debe de ser :
cData := 'grant_type=client_credentials&scope=https://api.sunat.gob.pe/v1/contribuyente/contribuyentes&client_id=123456&client_secret=xxxxxxx'
Aqui les dejo como quedo la funcion de consulta, que puede ser util cuando "content-type" es -->> "application/x-www-form-urlencoded"
Gracias a todos
Lubin
Code: Select all | Expand
FUNCTION FSUNAT_GET_TOKEN(w_client_id,w_client_secret)
************************************************************************************************************ SOLUCIONADO
*FUNCION PARA OBTENER EL TOKEN QUE SE USARA EN UNA CONSULTA A LA SUNAT - PERU
*FECHA 20/03/2022
******************************************************************************
** RUTINA QUE LLEVA EL USUARIO Y LA CLAVE LINEA ABAJO ***
LOCAL oDoc
LOCAL ohttp
LOCAL cUrl:=""
LOCAL XRespuesta:=""
LOCAL aHasRes
LOCAL W_Token
LOCAL W_TipoToken
LOCAL W_TimeExpire
local w_send
* carga directa de los datos pra probaar (DATOS DE PRUEBA SOLO VALIDO HASTA 22/03/2022)
w_client_id="0319813d-f7c8-43fc-bda6-4317b225d3de"
w_client_secret="t8xujQF0yWLYmbp904iYZw=="
cUrl :="https://api-seguridad.sunat.gob.pe/v1/clientesextranet/"+w_client_id+"/oauth2/token/"
ohttp := CreateObject( "MSXML2.XMLHTTP" )
ohttp:Open( "POST" ,cUrl,.F.)
ohttp:SetRequestHeader("content-type" , "application/x-www-form-urlencoded" )
*Se prepara la consulta del W_SEND de los pares de datos "Campo1=Valor&Campo2=Valor2&Campo3&Valor3....."
w_send := "grant_type=client_credentials&scope=https://api.sunat.gob.pe/v1/contribuyente/contribuyentes&client_id="+ w_client_id +"&client_secret="+w_client_secret
TRY
ohttp:Send(w_send) && ohttp:Send(enviar)
CATCH
msginfo("No Se pudo Enviar solicitud de token","Intente Nuevamente")
return XRespuesta
END
XRespuesta:=ohttp:responseText
msginfo(XRespuesta,"esto respnde ... ")
IF "ERROR"$ UPPER(XRespuesta)
MSGINFO(XRespuesta,"RESPUESTA CON ERROR ")
return ""
ENDIF
** lEEMOS LA RESPUESTA
aHasRes := hash()
hb_jsondecode(XRespuesta ,@aHasRes) //Parse JSON to hash
W_Token := aHasRes["access_token"]
W_TipoToken := aHasRes["token_type"]
W_TimeExpire:= aHasRes["expires_in"]
MSGINFO(W_Token , valtype(W_Token ))
MSGINFO(W_TipoToken , valtype(W_TipoToken ))
MSGINFO(W_TimeExpire, valtype(W_TimeExpire))
*Retornamos el Tokek
RETURN W_Token
Hola Lubin
Estoy liado con el tema de las GRE, y veo que publicas esta funcion para obtener el token de sunat con las credenciales, excelente. obtengo el token con el PostMan pero desde la funcion obtengo un error 400 Bat Request, en esa funcion no va el usuario y clave sol?
Revisa Client_secret debe tener algun caracter especial que si envias directo por tu sistema el post no lo reconozca por lo que tienes que codificarlo el postman ya lo convierte en automativo, en el mismo postman te ubicas en el Client_secret y le das click derecho y seleccionas Encode URL y veras que algunos caracteres especiales lo cambia copias esa cadena cambiada (nuevo client_secret) y lo usas en tu aplicacion.
Espero sea de utilidad
Re: Una envio con Post ** SOLUCIONADO **
Posted: Fri Jun 16, 2023 6:07 pm
by LuisPonce
Gracias por responder
Me emocioné, hice lo que me indicas con "client_secret" en el postman, cambiaron algunos caracteres, use la cadena y ahora me sale: "cliente no autorizado", es el único campo que cambiar?, y las credenciales USUARIO Y CLAVE SOL no intervienen en esta
solicitud del TOKEN?
En la cabecera del Postman señala la URL:
https://api-seguridad.sunat.gob.pe/v1/c ... th2/token/
En vez de '
https://api-seguridad.sunat.gob.pe/v1/c ... th2/token/' que indica el ejemplo de Lubin.
En el 1er. URL me responde: "No Se pudo Enviar
solicitud de token"
y con el 2do. URL : "cliente no autorizado"
No veo que haya otra URL publicada por sunat