Duque

Active Member
Licensed User
Longtime User
Hola chicos...
Estoy teniendo problemas para hacer una solicitud pos a la api de payu

en su documentación piden que la petición se haga con esta configuración para recibir respuesta en JSON

HTML:
POST /payments-api/4.0/service.cgi HTTP/1.1 
Host: sandbox.api.payulatam.com
Content-Type: application/json; charset=utf-8
Accept: application/json
Content-Length: length
{
   "test": false,
   "language": "en",
   "command": "GET_PAYMENT_METHODS",
   "merchant": {
      "apiLogin": "xxxxxxxxxxxxx",
      "apiKey": "xxxxxxxxxxxxx"
   }
}

pero no consigo configurar esto en b4a con el uso de HttpJob

help :(
 

Descartex

Well-Known Member
Licensed User
Longtime User
Muy buenas.
Debes meter todos los datos que te piden en un map y luego parsearlo a json.
B4X:
Dim MapDatos as Map
MapDatos=CreateMap("test":false,"language":"en","command":"GET_PAYMENT_METHODS","merchant":CreateMap("apiLogin":"tuapilogindata","apiKey":"tuapikey"))
Dim json As JSONGenerator
json.Initialize2(MapDatos)
'Luego pasas los datos por post como string
Dim JobApi as HttpJob
JobApi.Initialize("ApiPayu",Me)
JobApi.PostString("urldepayu",json.ToString)
EDITO:
Ojo, si Payu te pide los datos como parte de una variable, has de añadirla, por ejemplo que te pidan la variable "datos":
B4X:
JobApi.PostString("urldepayu","datos="&json.ToString)

Un saludo.
 

Duque

Active Member
Licensed User
Longtime User
Gracias por la pronta respuesta JSON fue resuelto
pero el verdadero problema esta en la configuración de los encabezados
payu exige....
HTML:
POST /payments-api/4.0/service.cgi HTTP/1.1
Host: sandbox.api.payulatam.com
Content-Type: application/xml; charset=utf-8
Accept: application/xml
Content-Length: length
 

Descartex

Well-Known Member
Licensed User
Longtime User
B4X:
 JobApi.GetRequest.SetContentType("application/json")
Con eso deberia bastar
 

Duque

Active Member
Licensed User
Longtime User
Yo intente configurar esto en b4a así:

B4X:
    post.GetRequest.SetHeader("POST","payments-api/4.0/service.cgi HTTP/1.1")
    post.GetRequest.SetHeader("Host:","sandbox.api.payulatam.com")
    post.GetRequest.SetContentType("application/json; charset=utf-8")
    ''post.GetRequest.SetHeader("Content-Type:","application/json; charset=utf-8")
    post.GetRequest.SetHeader("Accept:","application/json")
    post.GetRequest.SetHeader("Content-Length:","length")

Sin éxito, al parecer no tengo bien configurado el encabezado y no se como hacerlo
Help !
 

Descartex

Well-Known Member
Licensed User
Longtime User
Pon solo el encabezado que te puse y pega la respuesta del servidor (ocultando si hay algun dato privado, claro)
 

Descartex

Well-Known Member
Licensed User
Longtime User
Top