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 view RUN
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