Skip to content

Commit 809fce6

Browse files
authored
Merge pull request #3 from ivancalle-sipay/develop
add option of config with variable
2 parents 6138be9 + 3058c71 commit 809fce6

File tree

4 files changed

+143
-74
lines changed

4 files changed

+143
-74
lines changed

README.md

Lines changed: 96 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -70,70 +70,102 @@ Una vez que se ha instalado la SDK, se deben actualizar los parámetros de confi
7070
* Credenciales de acceso (Se gestionan con el departamento de integraciones de Sipay).
7171
* Entorno y versión de la API.
7272
* Tiempo máximo de espera de respuestas (Timeout).
73+
## 4.1. Desde un fichero
74+
75+
Un ejemplo de configuraciones se muestra a continuación:
76+
```ini
77+
; **************************************************************
78+
; LOGGER
79+
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
80+
; Configuración asociada al sistema de trazas.
81+
;
82+
; path: ruta del directorio de logs (Nota: Aconsejable usar rutas absolutas, en caso contrario los logs estaran dentro del paquete)
83+
; level: nivel mínimo de trazas [debug, info, warning, error, critical]
84+
; prefix: prefijo
85+
; extension: extensión del archivo
86+
; date_format: formato de fecha de las trazas
87+
; backup_file_rotation: Número de ficheros de backup
88+
; ------------------------------------------------------------//
89+
90+
[logger]
91+
path=logs
92+
level=warning
93+
prefix=logger
94+
extension=log
95+
date_format=d/m/Y H:i:s
96+
backup_file_rotation = 5
97+
98+
; **************************************************************
99+
; CREDENTIALS
100+
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
101+
; Credenciales para obtener acceso al recurso.
102+
;
103+
; key: Key del cliente
104+
; secret: Secret del cliente
105+
; resouce: Recurso al que se quiere acceder
106+
; ------------------------------------------------------------//
107+
108+
[credentials]
109+
key=api-key
110+
secret=api-secret
111+
resource=resource
112+
113+
; **************************************************************
114+
; API
115+
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116+
; Configuracion de la API.
117+
;
118+
; environment: Entorno al que se deben enviar las peticiones ['sandbox', 'staging', 'live']
119+
; version: Versión de la api a usar actualmente solo existe v1
120+
; mode: Modo de encriptacion de la firma, [sha256, sha512]
121+
; ------------------------------------------------------------//
122+
123+
[api]
124+
environment=sandbox
125+
version=v1
126+
mode=sha256
127+
128+
; **************************************************************
129+
; Connection
130+
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
131+
; Cofiguracion de la conexión.
132+
;
133+
; timeout: Tiempo máximo de espera a la respuesta de la petición
134+
; ------------------------------------------------------------//
135+
136+
[connection]
137+
timeout=30
138+
```
139+
140+
## 4.2. Desde una variable
141+
En algunos casos, pudiera interesarnos cargar la configuración desde una variable y no desde un archivo. Este sería un ejemplo:
142+
143+
```php
144+
<?php
145+
$config = array(
146+
'logger' => array(
147+
'path' => 'logs', // Nombre del directorio donde se crearan los logs (Nota: si la ruta es relativa se creará en el directorio del paquete)
148+
'level' => 'warning', // Nivel mínimo de trazas [debug, info, warning, error, critical]
149+
'prefix' => 'logger', // Prefijo del nombre del archivo
150+
'extension' => 'log', // Extensión del archivo
151+
'date_format' => 'd/m/Y H:i:s', // Formato de fecha de las trazas de log
152+
'backup_file_rotation' => 5 // Número de ficheros de backup
153+
),
154+
'credentials' => array(
155+
'key' => 'api-key', // Key del cliente
156+
'secret' => 'api-secret', // Secret del cliente
157+
'resource' => 'resource' // Recurso al que se quiere acceder
158+
),
159+
'api' => array(
160+
'environment' => 'sandbox', // Entorno al que se deben enviar las peticiones ['sandbox', 'staging', 'live']
161+
'version' => 'v1', // Versión de la api a usar actualmente solo existe v1
162+
'mode' => 'sha256' // Modo de encriptacion de la firma, [sha256, sha512]
163+
),
164+
'connection' => array(
165+
'timeout' => 30 // Tiempo máximo de respuesta de la petición.
166+
)
167+
);
73168

74-
Un ejemplo de configuraciones se muestra a continuación:
75-
```ini
76-
; **************************************************************
77-
; LOGGER
78-
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79-
; Configuración asociada al sistema de trazas.
80-
;
81-
; path: ruta del directorio de logs (Nota: Aconsejable usar rutas absolutas, en caso contrario los logs estaran dentro del paquete)
82-
; level: nivel minimo de trazas [debug, info, warning, error, critical]
83-
; prefix: prefijo
84-
; extension: extensión del archivo
85-
; date_format: formato de fecha de las trazas
86-
; backup_file_rotation: Número de ficheros de backup
87-
; ------------------------------------------------------------//
88-
89-
[logger]
90-
path=logs
91-
level=warning
92-
prefix=logger
93-
extension=log
94-
date_format=d/m/Y H:i:s
95-
backup_file_rotation = 5
96-
97-
; **************************************************************
98-
; CREDENTIALS
99-
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100-
; Credenciales para obtener acceso al recurso.
101-
;
102-
; key: Key del cliente
103-
; secret: Secret del cliente
104-
; resouce: Recurso al que se quiere acceder
105-
; ------------------------------------------------------------//
106-
107-
[credentials]
108-
key=api-key
109-
secret=api-secret
110-
resource=resource
111-
112-
; **************************************************************
113-
; API
114-
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
115-
; Configuracion de la API.
116-
;
117-
; environment: Entorno al que se deben enviar las peticiones ['sandbox', 'staging', 'live']
118-
; version: Versión de la api a usar actualmente solo existe v1
119-
; mode: Modo de encriptacion de la firma, [sha256, sha512]
120-
; ------------------------------------------------------------//
121-
122-
[api]
123-
environment=sandbox
124-
version=v1
125-
mode=sha256
126-
127-
; **************************************************************
128-
; Connection
129-
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
130-
; Cofiguracion de la conexión.
131-
;
132-
; timeout: Tiempo máximo de espera a la respuesta de la petición
133-
; ------------------------------------------------------------//
134-
135-
[connection]
136-
timeout=30
137169
```
138170

139171
# 5. Documentación extendida
@@ -293,7 +325,7 @@ Ejemplo:
293325
$card = new \Sipay\Paymethods\FastPay('token-fast-pay');
294326
```
295327

296-
## 5.2. Operativas de Ecommerce - `Ecommerce($config_file)`
328+
## 5.2. Operativas de Ecommerce - `Ecommerce($config_file)` ó `Ecommerce($config_var)`
297329

298330
#### Descripción
299331
Las operativas de Ecommerce forman parte de los métodos definidos en la clase `Ecommerce`. Para instanciar un objeto de este tipo se requiere el archivo de configuración.

etc/config.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
; Configuración asociada al sistema de trazas.
55
;
66
; path: Nombre del directorio donde se crearan los logs (Nota: si la ruta es relativa se creará en el directorio del paquete)
7-
; level: nivel minimo de trazas [debug, info, warning, error, critical]
7+
; level: nivel mínimo de trazas [debug, info, warning, error, critical]
88
; prefix: prefijo del nombre del archivo
99
; extension: extensión del archivo
1010
; date_format: Formato de fecha de las trazas de log

examples/initialize_with_array.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
require_once realpath(__DIR__.'/../src/autoload.php');
3+
4+
5+
6+
$config = array(
7+
'logger' => array(
8+
'path' => 'logs', // Nombre del directorio donde se crearan los logs (Nota: si la ruta es relativa se creará en el directorio del paquete)
9+
'level' => 'warning', // Nivel mínimo de trazas [debug, info, warning, error, critical]
10+
'prefix' => 'logger', // Prefijo del nombre del archivo
11+
'extension' => 'log', // Extensión del archivo
12+
'date_format' => 'd/m/Y H:i:s', // Formato de fecha de las trazas de log
13+
'backup_file_rotation' => 5 // Número de ficheros de backup
14+
),
15+
'credentials' => array(
16+
'key' => 'api-key', // Key del cliente
17+
'secret' => 'api-secret', // Secret del cliente
18+
'resource' => 'resource' // Recurso al que se quiere acceder
19+
),
20+
'api' => array(
21+
'environment' => 'sandbox', // Entorno al que se deben enviar las peticiones ['sandbox', 'staging', 'live']
22+
'version' => 'v1', // Versión de la api a usar actualmente solo existe v1
23+
'mode' => 'sha256' // Modo de encriptacion de la firma, [sha256, sha512]
24+
),
25+
'connection' => array(
26+
'timeout' => 30 // Tiempo máximo de respuesta de la petición.
27+
)
28+
);
29+
30+
$ecommerce = new \Sipay\Ecommerce($config);
31+
print($ecommerce->getKey()."\n");
32+
print($ecommerce->getSecret()."\n");
33+
print($ecommerce->getresource()."\n");

src/Ecommerce.php

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,31 @@ class Ecommerce
1313
protected $mode;
1414
protected $timeout;
1515

16-
public function __construct($config_path)
16+
public function __construct($config)
1717
{
18-
if (gettype($config_path) != "string") {
19-
throw new \Exception('$config_path must be a string.');
20-
}
18+
if (gettype($config) == "string") {
19+
20+
$config_obj = parse_ini_file($config, true);
2121

22-
$config = parse_ini_file($config_path, true);
22+
}else if(gettype($config) == "array"){
23+
$config_obj = $config;
24+
}else{
25+
throw new \Exception('$config must be a string or array.');
26+
}
2327

24-
$this->logger = new Logger($config['logger']);
28+
$this->logger = new Logger($config_obj['logger']);
2529

26-
$cred = $config['credentials'];
30+
$cred = $config_obj['credentials'];
2731
$this->setKey(isset($cred['key']) ? $cred['key'] : '');
2832
$this->setSecret(isset($cred['secret']) ? $cred['secret'] : '');
2933
$this->setResource(isset($cred['resource']) ? $cred['resource'] : '');
3034

31-
$api = $config['api'];
35+
$api = $config_obj['api'];
3236
$this->setEnvironment(isset($api['environment']) ? $api['environment'] : '');
3337
$this->setVersion(isset($api['version']) ? $api['version'] : '');
3438
$this->setMode(isset($api['mode']) ? $api['mode'] : '');
3539

36-
$connection = $config['connection'];
40+
$connection = $config_obj['connection'];
3741
$this->setTimeout(isset($connection['timeout']) ? $connection['timeout'] : '30');
3842
}
3943

0 commit comments

Comments
 (0)