Header Ads Widget

Ticker

6/recent/ticker-posts

¿Cómo crear la API del servicio web del módulo Prestashop?

Este blog trata sobre cómo crear y usar la API de servicios web de Prestashop. Prestashop tiene disponible una herramienta de servicios web predeterminada que permite acceder a la tienda desde aplicaciones remotas.

Prerrequisitos

  1. Su tienda Prestashop debe tener habilitada la "reescritura de módulo" para apache.
  2. Es preferible utilizar SSL (https :) para las llamadas al servicio web, ya que evita los problemas de seguridad del tipo "man in the middle".
  3. Compruebe que los cinco métodos GET, POST, PUT, DELETE y HEAD sean compatibles con el servidor.

¿Cómo configurar los servicios web en Prestashop?

1. Inicie sesión en el Back-office de Prestashop.
2. Vaya a Parámetros avanzados -> Opciones del menú Servicios web para abrir la página Servicios web.
parámetros-avanzados

3. Redirigirá a la página de Servicios Web que tiene el listado de Servicios Web disponibles y el formulario de configuración para configurar el servicio.
4. El formulario de Configuración tiene los siguientes campos:
configuración
a) Habilitar el servicio web de Prestashop : habilite la configuración para usar el servicio web en la Tienda Prestashop.
b) Habilite el modo CGI para PHP : habilite la configuración para usar PHP como script CGI en lugar del módulo Apache.
5. Haga clic en el botón Guardar para guardar la configuración. Ahora, puede utilizar los servicios web en su tienda Prestashop.

¿Cómo agregar / actualizar servicios web en Prestashop?

1. Inicie sesión en el Back-office de Prestashop
2. Vaya a Parámetros avanzados -> Opciones del menú Servicios web para abrir la página Servicios web.
3. Redirigirá a la página de servicios web que tiene una lista de los servicios web disponibles.
página de servicio web
4. Haga clic en el botón "Agregar nueva clave de servicio web" para agregar una nueva clave de servicio web para acceder solo a ciertos recursos de la tienda Prestashop.

agregar clave de servicio web
a) Clave : esta es una clave única. Puede ingresarlo manualmente o hacer clic en el botón Generar para generar una clave aleatoria para el servicio web.
b) Descripción de la clave : puede proporcionar la descripción de la clave para una mejor comprensión.
c) Estado : habilite la clave para proporcionar una concesión para acceder a los datos utilizando la clave.
d) Permiso : proporciona el permiso para acceder a los datos utilizando la clave determinada. Puede verificar el permiso específico para otorgar acceso a los datos como Agregar, Editar, eliminar o ver. Aquí, hemos verificado el permiso para Países y Moneda.
5. Haga clic en el botón Guardar para agregar la clave a los servicios web.

¿Cómo acceder al Servicio Web?

Una vez que haya creado la clave para el servicio web y la haya configurado correctamente, debe presionar la siguiente URL en su navegador:
https: // {ruta raíz de la tienda} / api /
Le pedirá un nombre de usuario y una contraseña para acceder al recurso.
registrarse
a) Nombre de usuario: Ingrese la clave del servicio web que se genera en el paso anterior. Por ejemplo MWMHJVB9PBYBNYBSFTQ8ZXRCM43FQ2MW
b) Contraseña: debe estar en blanco ya que no se requiere contraseña.
Después de iniciar sesión, accederá a la lista de los recursos y a todas las opciones CRUD permitidas que ha configurado en su Tienda Prestashop.
archivo xml
Ahora está conectado correctamente al servicio web Prestashop.
a) Para OBTENER la lista de entidades para un recurso en particular:
https: // shop_root_url / api / resouce
Ejemplo: https://www.knowband.com/api/customers para obtener una lista de todos los clientes.
b) Para OBTENER un cliente específico por ID:
https: // shop_root_url / api / customers / 1
Por ejemplo: para obtener el detalle del cliente con ID 10
https://www.knowband.com/api/customers/10

¿Cómo crear la API de servicio web del módulo Prestashop para Prestashop 1.7?

Le mostraremos cómo crear un módulo para captar clientes. Para esto, registraremos un gancho addWebserviceResources de ServiceRequest para los recursos en lugar de anular la función getResources () de la clase ServiceRequest en Prestashop 1.7.
1. Registre el gancho addWebserviceResources en el módulo.
?
1
2
3
4
5
6
7
8
9
public function install() {
 
parent::install();
 
$this->registerHook('addWebserviceResources');
 
return true;
 
}
2. Agregue un detector de gancho para definir la clase y la descripción. Establezca specific_management en true si desea utilizar WebserviceSpecificManagement en lugar del archivo ObjectModel.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public function hookAddWebserviceResources()
 
{
 
return array(
 
'kbcustomer' => array(
 
'description' => 'Knowband Custom Customer',
 
'specific_management' => true,
 
),
 
'kbaddress' => array(
 
'description' => 'Knowband Custom Address',
 
'class' => 'kbaddress'
 
)
 
);
 
}
3. Cree el archivo de clase WebserviceSpecificManagement como WebserviceSpecificManagementCLASSNAME que implementa WebserviceSpecificManagementInterface
Por ejemplo, WebserviceSpecificManagementKbCustomer, que es similar a /classes/webservice/WebserviceSpecificManagementImages.php.
Debe tener que incluir las funciones que están definidas en la clase WebserviceSpecificManagementImages.php. Estos son:
  • setObjectOutput
  • setWsObject
  • getWsObject
  • getObjectOutput
  • setUrlSegment
  • getUrlSegment
  • obtener el contenido
  • administrar (donde se procesan los datos)
1. Ahora agregue la clave que tiene el recurso kbcustomer en el servicio web en el back-office.
2. Ahora, visite https: // {youstore.com} / api / kbcustomer para ver la respuesta en XML. En el siguiente ejemplo, mostramos la lista de todos los clientes disponibles en la tienda.
Agregue include_once (_PS_MODULE_DIR _. 'YOURMODULENAME / classes / WebserviceSpecificManagementKbCustomer.php');
en su archivo de módulo.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
class WebserviceSpecificManagementKbcustomer implements WebserviceSpecificManagementInterface
 
{
 
/** @var WebserviceOutputBuilder */
 
protected $objOutput;
 
protected $output;
 
 
 
/** @var WebserviceRequest */
 
protected $wsObject;
 
 
 
public function setUrlSegment($segments)
 
{
 
$this->urlSegment = $segments;
 
return $this;
 
}
 
 
 
public function getUrlSegment()
 
{
 
return $this->urlSegment;
 
}
 
public function getWsObject()
 
{
 
return $this->wsObject;
 
}
 
 
 
public function getObjectOutput()
 
{
 
return $this->objOutput;
 
}
 
 
 
/**
 
* This must be return a string with specific values as WebserviceRequest expects.
 
*
 
* @return string
 
*/
 
public function getContent()
 
{
 
return $this->objOutput->getObjectRender()->overrideContent($this->output);
 
}
 
 
 
public function setWsObject(WebserviceRequestCore $obj)
 
{
 
$this->wsObject = $obj;
 
return $this;
 
}
 
 
 
/**
 
* @param WebserviceOutputBuilderCore $obj
 
* @return WebserviceSpecificManagementInterface
 
*/
 
public function setObjectOutput(WebserviceOutputBuilderCore $obj)
 
{
 
$this->objOutput = $obj;
 
return $this;
 
}
 
 
 
public function manage()
 
{
 
$objects_products = array();
 
$objects_products['empty'] = new Customer();
 
$customer_list = Customer::getCustomers();
 
foreach ($customer_list as $list) {
 
$objects_products[] = new Customer($list['id_customer']);
 
}
 
$this->_resourceConfiguration = $objects_products['empty']->getWebserviceParameters();
 
$this->output .= $this->objOutput->getContent($objects_products, null, $this->wsObject->fieldsToDisplay, $this->wsObject->depth, WebserviceOutputBuilder::VIEW_LIST, false);
 
}
 
}
La siguiente captura de pantalla le proporciona la imagen de la salida:
salida
Si desea la salida en formato JSON, agregue & output_format = JSON al final de la URL. Por ejemplo: https: // {yourstore.com} / api / kbcustomer & output_format = JSON
Resultado: {"clientes": [{"id": 1}, {"id": 2}, {"id": 3}, {"id": 4}, {"id": 5}, {" id ”: 6}, {" id ": 7}, {" id ": 8}, {" id ": 9}, {" id ": 10}, {" id ": 11}, {" id " : 12}, {"id": 13}, {"id": 14}, {"id": 15}, {"id": 16}, {"id": 17}, {"id": 18 }, {"Id": 19}, {"id": 20}, {"id": 21}]}

Publicar un comentario

0 Comentarios