-
Notifications
You must be signed in to change notification settings - Fork 22
/
examples.php
125 lines (91 loc) · 3.51 KB
/
examples.php
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
<?php
$step = empty($_GET['step']) ? 1 : (int) $_GET['step'];
include __DIR__.'/src/autoload.php';
# Carga tu fichero con la configuración personalizada en config.local.php
$config = require __DIR__.'/config.php';
if ($step === 1) {
# Ejemplo de pago instantáneo
# Este proceso se realiza para pagos en el momento, sin necesidad de confirmación futura (TransactionType = 0)
# Cargamos la clase con los parámetros base
$TPV = new Redsys\Tpv\Tpv($config);
# Indicamos los campos para el pedido
$TPV->setFormHiddens(array(
'TransactionType' => '0',
'MerchantData' => 'Televisor de 50 pulgadas',
'Order' => '012121323',
'Amount' => '568,25',
'UrlOK' => 'http://dominio.com/direccion-todo-correcto/',
'UrlKO' => 'http://dominio.com/direccion-error',
'MerchantURL' => 'http://dominio.com/direccion-control-pago'
));
# Imprimimos el pedido el formulario y redirigimos a la TPV
echo '<form action="'.$TPV->getPath('/realizarPago').'" method="post">'.$TPV->getFormHiddens().'</form>';
die('<script>document.forms[0].submit();</script>');
}
if ($step === 2) {
# Control de respuesta del paso 1
# Cargamos la clase con los parámetros base
$TPV = new Redsys\Tpv\Tpv($config);
# Realizamos la comprobación de la transacción
try {
$TPV->checkTransaction($_POST);
} catch (\Exception $e) {
file_put_contents(__DIR__.'/logs/errores-tpv.log', $e->getMessage(), FILE_APPEND);
die();
}
# Actualización del registro en caso de pago (ejemplo usando mi framework)
$Db->update(array(
'table' => 'tpv',
'limit' => 1,
'data' => array(
'operacion' => $_POST['Ds_TransactionType'],
'fecha_pago' => date('Y-m-d H:i:s')
),
'conditions' => array(
'id' => $_POST['Ds_Order']
)
));
die();
}
if ($step === 3) {
# Ejemplo de pago en diferido
# Cargamos la clase con los parámetros base
$TPV = new Redsys\Tpv\Tpv($config);
# Indicamos los campos para la confirmación del pago
$TPV->sendXml(array(
'TransactionType' => '2', // Código para la Confirmación del cargo
'MerchantURL' => 'http://dominio.com/direccion-control-pago-xml', // A esta URL enviará el banco la confirmación del cobro
'Amount' => '568,25', // La cantidad final a cobrar
'Order' => '012121323', // El número de pedido, que debe existir en el sistema bancario a través de una autorización previa
'MerchantData' => 'Televisor de 50 pulgadas',
));
die();
}
if ($step === 4) {
# Ejemplo de respuesta para el paso 3
# Cargamos la clase con los parámetros base
$TPV = new Redsys\Tpv\Tpv($config);
# Obtenemos los datos remitidos por el banco en formato `array`
$datos = $TPV->xmlString2array($_POST['datos']);
# Realizamos la comprobación de la transacción
try {
$TPV->checkTransaction($datos);
} catch (\Exception $e) {
file_put_contents(__DIR__.'/logs/errores-tpv.log', $e->getMessage(), FILE_APPEND);
die();
}
# Actualización del registro en caso de pago (ejemplo usando mi framework)
$Db->update(array(
'table' => 'tpv',
'limit' => 1,
'data' => array(
'pagado' => 1,
'operacion' => $datos['Ds_TransactionType'],
'fecha_pago' => date('Y-m-d H:i:s')
),
'conditions' => array(
'id' => $datos['Ds_Order']
)
));
die();
}