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
<?php
namespace Ekyna\Component\Payum\Payzen\Action;
use Payum\Core\Action\ActionInterface;
use Payum\Core\Bridge\Spl\ArrayObject;
use Payum\Core\Exception\RequestNotSupportedException;
use Payum\Core\Request\GetStatusInterface;
/**
* Class StatusAction
* @package Ekyna\Component\Payum\Payzen\Action
* @author Etienne Dauvergne <contact@ekyna.com>
*/
class StatusAction implements ActionInterface
{
/**
* {@inheritdoc}
*
* @param GetStatusInterface $request
*/
public function execute($request)
{
RequestNotSupportedException::assertSupports($this, $request);
/** @var GetStatusInterface $request */
$model = ArrayObject::ensureArrayObject($request->getModel());
if (false == $model['vads_trans_id']) {
$request->markNew();
return;
}
if (false != $code = $model['vads_result']) {
switch ($code) {
case "00" : // transaction approuvée ou traitée avec succès
$request->markCaptured();
break;
case "02" : // contacter l’émetteur de carte
$request->markPending(); // TODO is that the good status ?
break;
case "17" : // Annulation client.
$request->markCanceled();
break;
case "03" : // accepteur invalide
case "04" : // conserver la carte
case "05" : // ne pas honorer
case "07" : // conserver la carte, conditions spéciales
case "08" : // approuver après identification
case "12" : // transaction invalide
case "13" : // montant invalide
case "14" : // numéro de porteur invalide
case "30" : // erreur de format
case "31" : // identifiant de l’organisme acquéreur inconnu
case "33" : // date de validité de la carte dépassée
case "34" : // suspicion de fraude
case "41" : // carte perdue
case "43" : // carte volée
case "51" : // provision insuffisante ou crédit dépassé
case "54" : // date de validité de la carte dépassée
case "56" : // carte absente du fichier
case "57" : // transaction non permise à ce porteur
case "58" : // transaction interdite au terminal
case "59" : // suspicion de fraude
case "60" : // l’accepteur de carte doit contacter l’acquéreur
case "61" : // montant de retrait hors limite
case "63" : // règles de sécurité non respectées
case "68" : // réponse non parvenue ou reçue trop tard
case "90" : // arrêt momentané du système
case "91" : // émetteur de cartes inaccessible
case "96" : // mauvais fonctionnement du système
case "94" : // transaction dupliquée
case "97" : // échéance de la temporisation de surveillance globale
case "98" : // serveur indisponible routage réseau demandé à nouveau
case "99" : // incident domaine initiateur
$request->markFailed();
break;
default :
$request->markUnknown();
}
if ($request->isCaptured() && false != $code = $model['state_override']) {
if ($code == 'refunded') {
$request->markRefunded();
}
}
return;
}
if (false != $code = $model['state_override']) {
if ($code == 'canceled') {
$request->markCanceled();
return;
}
}
$request->markNew();
}
/**
* {@inheritdoc}
*/
public function supports($request)
{
return $request instanceof GetStatusInterface
&& $request->getModel() instanceof \ArrayAccess;
}
}