Skip to content

Commit ccba250

Browse files
authored
Merge pull request #5 from innovawebcl/develop
Develop
2 parents ce447af + 688efb0 commit ccba250

File tree

4 files changed

+141
-24
lines changed

4 files changed

+141
-24
lines changed

changelog.md

+12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
All notable changes to `Transbank` will be documented in this file.
44

5+
## v2.7.0 - 2022-04-29
6+
### Added
7+
- Laravel illuminate/support 9
8+
- HelperRedirect function to return data array
9+
- Refund Response Codes
10+
- Response Commerce Code Response Codes
11+
### Updated
12+
- VCI Response Codes
13+
### Fixed
14+
- Source Code
15+
16+
517
## v2.6.0 - 2022-04-28
618
### Added
719
- Laravel illuminate/support 9

src/Helpers/HelperTransbankResponseCode.php

+96-8
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
namespace Innovaweb\Transbank\Helpers;
55

66

7+
use Exception;
8+
79
class HelperTransbankResponseCode
810
{
911

@@ -18,17 +20,40 @@ public static function VCI($code)
1820
{
1921
$code = strtoupper(strval($code));
2022
try {
23+
2124
$codes = [
22-
'TSY' => 'Autenticación exitosa.',
23-
'TSN' => 'Autenticación fallida.',
25+
'TSY' => 'Autenticación Exitosa.',
26+
'TSN' => 'Autenticación Rechazada.',
27+
'NP' => 'No Participa, probablemente por ser una tarjeta extranjera que no participa en el programa 3DSecure, sin autenticación.',
28+
'U3' => 'Falla conexión, Autenticación Rechazada.',
29+
'INV' => 'Datos Inválidos.',
30+
'A' => 'Intentó.',
31+
'CNP1' => 'Comercio no participa.',
32+
'EOP' => 'Error operacional.',
33+
'BNA' => 'BIN no adherido.',
34+
'ENA' => 'Emisor no adherido.',
2435
'TO' => 'Tiempo máximo excedido para autenticación.',
2536
'ABO' => 'Autenticación abortada por tarjeta habiente.',
26-
'U3' => 'Error interno en la autenticación.',
27-
'NP' => 'No Participa, probablemente por ser una tarjeta extranjera que no participa en el programa 3DSecure.',
2837
'ACS2' => 'Autenticación fallida extranjera.',
38+
// Para venta extranjera, estos son algunos de los códigos:
39+
40+
'TSYS' => 'Autenticación exitosa Sin fricción. Resultado autenticación: Autenticación Exitosa.',
41+
'TSAS' => 'Intento, tarjeta no enrolada / emisor no disponible. Resultado autenticación: Autenticación Exitosa.',
42+
'TSNS' => 'Fallido, no autenticado, denegado / no permite intentos. Resultado autenticación: Autenticación denegada.',
43+
'TSRS' => 'Autenticación rechazada - sin fricción. Resultado autenticación: Autenticación rechazada.',
44+
'TSUS' => 'Autenticación no se pudo realizar por problema técnico u otro motivo. Resultado autenticación: Autenticación fallida.',
45+
'TSCF' => 'Autenticación con fricción (No aceptada por el comercio). Resultado autenticación: Autenticación incompleta.',
46+
'TSYF' => 'Autenticación exitosa con fricción. Resultado autenticación: Autenticación exitosa.',
47+
'TSNF' => 'No autenticado. Transacción denegada con fricción. Resultado autenticación: Autenticación denegada.',
48+
'TSUF' => 'Autenticación con fricción no se pudo realizar por problema técnico u otro. Resultado autenticación: Autenticación fallida.',
49+
'NPC' => 'Comercio no Participa. Resultado autenticación: Comercio/BIN no participa.',
50+
'NPB' => 'BIN no participa. Resultado autenticación: Comercio/BIN no participa.',
51+
'NPCB' => 'Comercio y BIN no participan. Resultado autenticación: Comercio/BIN no participa.',
52+
'SPCB' => 'Comercio y BIN sí participan. Resultado autenticación: Autorización incompleta.',
53+
2954
];
3055
return $codes[$code];
31-
} catch (\Exception $exception) {
56+
} catch (Exception $exception) {
3257
return 'Exception : Código no encontrado.';
3358
}
3459
}
@@ -53,7 +78,37 @@ public static function ResponseCode($code)
5378
'-5' => 'Rechazo - Transacción con riesgo de posible fraude.',
5479
];
5580
return $codes[$code];
56-
} catch (\Exception $exception) {
81+
} catch (Exception $exception) {
82+
return 'Exception : Código no encontrado.';
83+
}
84+
}
85+
86+
/**
87+
* ResponseCommerceCode
88+
*
89+
* @param string $code response_commerce_code.
90+
* @return string retorna el significado del código, Código de respuesta de la transacción al comercio.
91+
*
92+
*/
93+
public static function ResponseCommerceCode($code)
94+
{
95+
$code = strval($code);
96+
try {
97+
$codes = [
98+
'-1' => 'Tarjeta inválida.',
99+
'-2' => 'Error de conexión.',
100+
'-3' => 'Excede monto máximo.',
101+
'-4' => 'Fecha de expiración inválida.',
102+
'-5' => 'Problema en autenticación.',
103+
'-6' => 'Rechazo general.',
104+
'-7' => 'Tarjeta bloqueada.',
105+
'-8' => 'Tarjeta vencida.',
106+
'-9' => 'Transacción no soportada.',
107+
'-10' => 'Problema en la transacción.',
108+
'-11' => 'Excede límite de reintentos de rechazos (Próximamente).',
109+
];
110+
return $codes[$code];
111+
} catch (Exception $exception) {
57112
return 'Exception : Código no encontrado.';
58113
}
59114
}
@@ -79,7 +134,7 @@ public static function Status($code)
79134
'CAPTURED' => 'Transacción capturada.',
80135
];
81136
return $codes[$code];
82-
} catch (\Exception $exception) {
137+
} catch (Exception $exception) {
83138
return 'Exception : Código no encontrado.';
84139
}
85140
}
@@ -105,7 +160,40 @@ public static function PaymentTypeCode($code)
105160
'VP' => 'Venta Prepago.',
106161
];
107162
return $codes[$code];
108-
} catch (\Exception $exception) {
163+
} catch (Exception $exception) {
164+
return 'Exception : Código no encontrado.';
165+
}
166+
}
167+
168+
/**
169+
* RefundCode
170+
*
171+
* @param string $code refund_code.
172+
* @return string retorna el significado del código, Reembolso de la transacción.
173+
*
174+
*/
175+
public static function RefundCode($code)
176+
{
177+
$code = strtoupper(strval($code));
178+
try {
179+
$codes = [
180+
'304' => 'Validación de campos de entrada nulos.',
181+
'245' => 'Código de comercio no existe.',
182+
'22' => 'El comercio no se encuentra activo.',
183+
'316' => 'El comercio indicado no corresponde al certificado o no es hijo del comercio MALL en caso de transacciones MALL.',
184+
'308' => 'Operación no permitida.',
185+
'274' => 'Transacción no encontrada.',
186+
'16' => 'La transacción no permite anulación.',
187+
'292' => 'La transacción no está autorizada.',
188+
'284' => 'Periodo de anulación excedido.',
189+
'310' => 'Transacción anulada previamente.',
190+
'311' => 'Monto a anular excede el saldo disponible para anular.',
191+
'312' => 'Error genérico para anulaciones.',
192+
'315' => 'Error del autorizador.',
193+
'53' => 'La transacción no permite anulación parcial de transacciones con cuotas.',
194+
];
195+
return $codes[$code];
196+
} catch (Exception $exception) {
109197
return 'Exception : Código no encontrado.';
110198
}
111199
}

src/OneClickMall.php

+9-9
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
namespace Innovaweb\Transbank;
55

6+
use Exception;
67
use GuzzleHttp\Exception\GuzzleException;
78
use Innovaweb\Transbank\Helpers\HelperRedirect;
89
use Transbank\Webpay\Oneclick as OneClick;
@@ -51,7 +52,7 @@ public function createInscription($username, $email, $url_return)
5152
'response' => $response
5253
];
5354

54-
} catch (\Exception $exception) {
55+
} catch (Exception $exception) {
5556
return [
5657
'status' => 'error',
5758
'exception' => $exception->getMessage(),
@@ -72,24 +73,24 @@ public function finishInscription($tbk_token)
7273
{
7374
try {
7475
if (!$tbk_token) {
75-
$tbk_token = $_POST['TBK_TOKEN'];
76+
$tbk_token = $_POST['TBK_TOKEN'];
7677
}
77-
$response = (new MallInscription)->finish($tbk_token );
78+
$response = (new MallInscription)->finish($tbk_token);
7879

79-
if((int) $response->getResponseCode() === 0){
80+
if ((int)$response->getResponseCode() === 0) {
8081
return [
8182
'status' => 'success',
8283
'response' => $response
8384
];
84-
}else{
85+
} else {
8586
return [
8687
'status' => 'error',
8788
'exception' => $response,
8889
];
8990
}
9091

9192

92-
} catch (\Exception $exception) {
93+
} catch (Exception $exception) {
9394
return [
9495
'status' => 'error',
9596
'exception' => $exception->getMessage(),
@@ -99,7 +100,6 @@ public function finishInscription($tbk_token)
99100

100101
/**
101102
* authorize
102-
103103
*/
104104
public function authorize($username, $tbkUser, $order_id, $details)
105105
{
@@ -111,7 +111,7 @@ public function authorize($username, $tbkUser, $order_id, $details)
111111
'response' => $response
112112
];
113113

114-
} catch (\Exception $exception) {
114+
} catch (Exception $exception) {
115115
return [
116116
'status' => 'error',
117117
'exception' => $exception->getMessage(),
@@ -132,7 +132,7 @@ public function getStatus($buyOrder)
132132
'response' => $response
133133
];
134134

135-
} catch (\Exception $exception) {
135+
} catch (Exception $exception) {
136136
return [
137137
'status' => 'error',
138138
'exception' => $exception->getMessage(),

src/WebpayPlus.php

+24-7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
namespace Innovaweb\Transbank;
55

6+
use Exception;
7+
use GuzzleHttp\Exception\GuzzleException;
68
use Innovaweb\Transbank\Helpers\HelperRedirect;
79
use Transbank\Webpay\WebpayPlus as WPPlus;
810
use Transbank\Webpay\WebpayPlus\Exceptions\TransactionCreateException;
@@ -47,6 +49,7 @@ public function __construct(string $webpay_plus_commerce_code = '',
4749
* @param string $url_return URL del comercio, a la cual Webpay redireccionará posterior al proceso de autorización. Largo máximo: 256
4850
* @return array en caso de success retorna un objeto con token: con Token de la transacción. Largo: 64, string url: URL de formulario de pago Webpay. Largo máximo: 255.
4951
*
52+
* @throws GuzzleException
5053
*/
5154
public function createTransaction($buy_order, $session_id, $amount, $url_return)
5255
{
@@ -63,7 +66,12 @@ public function createTransaction($buy_order, $session_id, $amount, $url_return)
6366
'response' => $response
6467
];
6568

66-
} catch (TransactionCreateException | \Exception $exception) {
69+
} catch (TransactionCreateException $exception) {
70+
return [
71+
'status' => 'error',
72+
'exception' => $exception->getMessage(),
73+
];
74+
} catch (Exception $exception) {
6775
return [
6876
'status' => 'error',
6977
'exception' => $exception->getMessage(),
@@ -77,6 +85,7 @@ public function createTransaction($buy_order, $session_id, $amount, $url_return)
7785
* @param string $token_ws Token de la transacción. Largo: 64.
7886
* @return array en caso de success retorna objecto con datos de la transacción
7987
*
88+
* @throws GuzzleException
8089
*/
8190
public function commitTransaction($token_ws)
8291
{
@@ -92,7 +101,7 @@ public function commitTransaction($token_ws)
92101
'response' => $response
93102
];
94103

95-
} catch (\Exception $exception) {
104+
} catch (Exception $exception) {
96105
return [
97106
'status' => 'error',
98107
'exception' => $exception->getMessage(),
@@ -107,6 +116,7 @@ public function commitTransaction($token_ws)
107116
* @param float $amount Monto de la transacción. Máximo 2 decimales para USD. Largo máximo: 17
108117
* @return array en caso de success retorna objecto con datos del reembolso
109118
*
119+
* @throws GuzzleException
110120
*/
111121
public function refundTransaction($token, $amount)
112122
{
@@ -117,7 +127,7 @@ public function refundTransaction($token, $amount)
117127
'response' => $response
118128
];
119129

120-
} catch (\Exception $exception) {
130+
} catch (Exception $exception) {
121131
return [
122132
'status' => 'error',
123133
'exception' => $exception->getMessage(),
@@ -130,7 +140,7 @@ public function refundTransaction($token, $amount)
130140
*
131141
* @param string $token Token de la transacción. Largo: 64.
132142
* @return array en caso de success retorna objecto con datos de la transacción
133-
*
143+
* @throws GuzzleException
134144
*/
135145
public function getStatusTransaction($token)
136146
{
@@ -141,7 +151,7 @@ public function getStatusTransaction($token)
141151
'response' => $response
142152
];
143153

144-
} catch (\Exception $exception) {
154+
} catch (Exception $exception) {
145155
return [
146156
'status' => 'error',
147157
'exception' => $exception->getMessage(),
@@ -154,9 +164,9 @@ public function getStatusTransaction($token)
154164
*
155165
* @param string $token Token de la transacción. Largo: 64.
156166
* @return array en caso de success retorna objecto con datos de la transacción
157-
*
167+
* @throws GuzzleException
158168
*/
159-
public function getTransactionStatus($token)
169+
public function getTransactionStatus(string $token)
160170
{
161171
return $this->getStatusTransaction($token);
162172
}
@@ -167,4 +177,11 @@ public function redirectHTML($url = '', $token = '')
167177
$token = empty($token) ? $this->token : $token;
168178
return HelperRedirect::redirectHTML($url, $token);
169179
}
180+
181+
public function dataArray($url = '', $token = '')
182+
{
183+
$url = empty($url) ? $this->url : $url;
184+
$token = empty($token) ? $this->token : $token;
185+
return HelperRedirect::dataArray($url, $token);
186+
}
170187
}

0 commit comments

Comments
 (0)