arrow_upward
Estado del servicio

SANDBOX
Estado: Activo
check_circle

URL SANDBOX::
https://core.pickitlabs.com/app.php/CallMethod

PRODUCCIÓN
Estado: Activo
check_circle

URL PRODUCCIÓN:
https://core.pickit.net/app.php/CallMethod

Arquitectura del webservice


Se creará un usuario de servicios al que se le asignará un API Key. Sólo utilizando el mismo el Retailer/Comercio podrá comunicarse con nuestra plataforma. Además el Retailer/Comercio deberá enviarnos el/los dominio/s o IPs desde donde se realizará el request para agregarlas al listado de IPs/dominios válidos.

Una vez realizados los pasos anteriores se comunicarán a su correspondiente servicio pasando como parámetros en el request los valores básicos de comunicación que serán los siguientes:

										
											'ApiKey' => PickitConstants::API_KEY,
											'Metodo' => $metodo,
											'Parametros' => $parametros
										
									

Estos parámetros deben venir como un JSON dentro del request así el sistema de servicio puede interpretarlos correctamente, aquí mostramos un ejemplo de comunicación de cómo deberían construir el servicio:

								
								public function Call($metodo, $parametros)
									{
										$parametros = json_encode($parametros);
										
										$data = json_encode(array('ApiKey' => PickitConstants::API_KEY,
																  'Metodo' => $metodo,
																  'Parametros' => $parametros));
										
										$postdata = http_build_query(
											array(
												'value' => $data
											), '', '&');

										$opts = array('http' =>
											array(
												'method'  => 'POST',
												'header'  => 'Content-type: application/x-www-form-urlencoded',
												'content' => $postdata
											)
										);

										$context  = stream_context_create($opts);

										$result = file_get_contents(PickitConstants::WEB_PICKIT_SERVICES,
																	false, $context);
										
										return json_decode($result);
									}	
								
							

De esta forma la comunicación se puede realizar en cualquier tecnología.

A continuación se listarán los métodos habilitados disponibles para recibir una llamada cuya arquitectura se encuentra dividida en dos. En primer lugar se debe informar el método que se desea utilizar, y luego se debe adjuntar un array con los parámetros asociados al mismo.

Como respuesta se obtienen 2 objetos:

- Status

Status es un objeto que contiene 2 propiedades, Code y Text. Aquí mismo vendrá el código de error en caso de suceder alguno y el texto correspondiente. En caso de que todo esté bien devolverá un código 200 con un mensaje de OK.

- Response

En el objeto response vendrá la respuesta del método al cual se llamó y su contenido. Es posible que dependiendo del método ejecutado sólo se obtenga como respuesta en esta sección un True or False. Más adelante se especificará en detalle la respuesta de cada uno de los servicios.

Ejemplo de una respuesta de un servicio:

							
								{
								   "Status": {
									  "Code": "200",
									  "Text": "OK"
								   },
								   "Response": {
									  "DatosGeneral": {
										 "Cadena": "Cadena3",
										 "Sucursal": [
											{
											   "Nombre": "PuntoPickit2",
											   "IdPuntoPickit": 2
											}
										 ],
										 "Usuario": "Usuario Punto Pickit2"
									  },
									  "DatosDashboard": {
										 "Deposito": 0,
										 "Recibir": 0,
										 "Devolver": 0,
										 "Transacciones": 0,
										 "Calificacion": 0,
										 "Calificaciones": 0
									  }
								   }
								}
							
						
Estructura de Notificaciones

Comunicación de cambios de estados al Retailer: El Retailer deberá generar token para el sistema Pick It y habilitar URL para poder recibir un PUSH a la misma. Este estará conformado por tres parámetros: Token, IdTransaccion y Estado. También guardará el dominio desde el que Pick It realizará el PUSH para validar el origen de la comunicación. Pick It guarda toda esta información asociada al Retail.

Por cada cambio de estado en una transacción en las que el proceso definido solicite que se le deba notificar al Retailer, Pick It ejecutará la URL que retailer disponibilizó y realizará el PUSH de la siguiente manera:

							
								
								$param = array('Token' => 'P4NB499QYE',
											   'CodigoTransaccion' => 'G3W1Z',
											   'IdEstado' => 806);
								$urlPush = 'http://www.webretailer.com.ar/urlInterna/statusReception';

								$data = json_encode($param);

								$cURL = curl_init();
								curl_setopt($cURL, CURLOPT_HTTPHEADER, array("Content-Type: application/json;charset=utf-8"));
								curl_setopt($cURL, CURLOPT_URL, $urlPush);
								curl_setopt($cURL, CURLOPT_POST, true);
								curl_setopt($cURL, CURLOPT_POSTFIELDS, $data);
								curl_setopt($cURL, CURLOPT_CUSTOMREQUEST, 'POST');
								curl_setopt($cURL, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
								curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);  // Follow the redirects (needed for mod_rewrite)
								curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);  // Return from curl_exec rather than echoing
								curl_setopt($cURL, CURLOPT_FRESH_CONNECT, true);   // Always ensure the connection is fresh
								curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
								// Timeout super fast once connected, so it goes into async.
								curl_setopt($cURL, CURLOPT_NOSIGNAL, 1);
								curl_setopt($cURL, CURLOPT_TIMEOUT_MS, 3000);
								$result = curl_exec($cURL);
								curl_close($cURL);
								
								
							
							
PHP
El retailer validará el origen de la comunicación y el Token. Realizada la comprobación de validación, el retailer sabrá que hubo un cambio de estado en la transacción enviada por parámetro, volviendo al ejemplo, se realizó un cambio de estado en la transacción “6X82F". Recibida esta transacción el retailer debería capturar los parametros de la URL y actualizar su estado, en base al parámetro de la transacción y al del estado.

ID WORKFLOW NOMBRE
1301 Envío Inicial
1302 Envío Generada
1303 Envío Disponible para Colecta
1304 Envío En Punto Drop Off
1305 Envío Courier
1306 Envío Devolución a Remitente
1307 Envío Devuelto a Remitente
1308 Envío En Punto Pickit
1309 Envío Entregado
1310 Envío Vencido
1311 Envío Siniestrado
1401 Devolución Inicial
1402 Devolución Solicitada
1403 Devolución Devolución Programada
1404 Devolución Disponible para Colecta
1405 Devolución Expirada
1406 Devolución No Retirada Domicilio
1407 Devolución No Retirada Punto
1408 Devolución Courier
1409 Devolución Finalizada
1410 Devolución Siniestrado
ID ID PAIS NOMBRE NOMBRE ISO ESTADO
1 1 Buenos Aires AR-BA 1
2 1 CABA AR-CF 1
3 1 Catamarca AR-CT 1
4 1 Chaco AR-CC 1
5 1 Chubut AR-CH 1
6 1 Córdoba AR-CD 1
7 1 Corrientes AR-CR 1
8 1 Entre Ríos AR-ER 1
9 1 Formosa AR-FO 1
10 1 Jujuy AR-JY 1
11 1 La Pampa AR-LP 1
12 1 La Rioja AR-LR 1
13 1 Mendoza AR-MZ 1
14 1 Misiones AR-MN 1
15 1 Neuquén AR-NQ 1
16 1 Río Negro AR-RN 1
17 1 Salta AR-SA 1
18 1 San Juan AR-SJ 1
19 1 San Luis AR-SL 1
20 1 Santa Cruz AR-SC 1
21 1 Santa Fe AR-SF 1
22 1 Santiago del Estero AR-SE 1
23 1 Tierra del Fuego AR-TF 1
24 1 Tucumán AR-TM 1