-
Notifications
You must be signed in to change notification settings - Fork 3
/
WAnswerOfWebShopTrazakcioLekerdezes.php
124 lines (106 loc) · 6.69 KB
/
WAnswerOfWebShopTrazakcioLekerdezes.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
<?php
require_once 'WebShopFizetesAdatokLista.php';
require_once 'WebShopFizetesAdatok.php';
require_once 'WebShopXmlUtils.php';
/**
* Fizetési tranzakció lekérdezés válasz XML-jének feldolgozásása és
* a megfelelõ value object elõállítása.
*
* @version 4.0
*/
class WAnswerOfWebShopTrazakcioLekerdezes {
/**
* @desc A banki felület által visszaadott szöveges logikai
* értékbõl boolean típusú érték elõállítása.
*
* A képzés módja:
* "TRUE" szöveges érték => true logikai érték
* minden más érték => false logikai érték
*/
function getBooleanValue($value) {
$result = false;
if (!is_null($value) && strcasecmp("TRUE", $value) == 0) {
$result = true;
}
return $result;
}
/**
* Fizetési tranzakció lekérdezés válasz XML-jének feldolgozásása és
* a megfelelõ value object elõállítása.
*
* @param DomDocument $answer A tranzakciós válasz xml
* @return WebShopFizetesAdatokLista a válasz tartalma,
* vagy NULL üres/hibás válasz esetén
*/
function load($answer) {
$webShopFizetesAdatokLista = new WebShopFizetesAdatokLista();
$lista = array();
$webShopFizetesAdatokLista->setWebShopFizetesAdatok($lista);
$recordList = WebShopXmlUtils::getNodeArrayByXPath($answer, '//answer/resultset/record');
foreach ($recordList as $record) {
$webShopFizetesAdatok = new WebShopFizetesAdatok();
$webShopFizetesAdatok->setPosId(WebShopXmlUtils::getElementText($record, "posid"));
$webShopFizetesAdatok->setAzonosito(WebShopXmlUtils::getElementText($record, "transactionid"));
$webShopFizetesAdatok->setStatuszKod(WebShopXmlUtils::getElementText($record, "state"));
$webShopFizetesAdatok->setPosValaszkod(WebShopXmlUtils::getElementText($record, "responsecode"));
$enddate = WebShopXmlUtils::getElementText($record, "enddate");
if (strlen($enddate) == 14) {
$dateFields = sscanf($enddate, "%04s%02s%02s%02s%02s%02s");
$enddate = vsprintf("%04s.%02s.%02s %02s.%02s.%02s 000", $dateFields);
}
$webShopFizetesAdatok->setTeljesites($enddate);
$inputPart = WebShopXmlUtils::getNodeByXPath($record, 'params/input');
if (!is_null($inputPart)) {
$webShopFizetesAdatok->setOsszeg(WebShopXmlUtils::getElementText($inputPart, "amount"));
$webShopFizetesAdatok->setDevizanem(WebShopXmlUtils::getElementText($inputPart, "exchange"));
$webShopFizetesAdatok->setNyelvkod(WebShopXmlUtils::getElementText($inputPart, "languagecode"));
$webShopFizetesAdatok->setNevKell($this->getBooleanValue(WebShopXmlUtils::getElementText($inputPart, "nameneeded")));
$webShopFizetesAdatok->setOrszagKell($this->getBooleanValue(WebShopXmlUtils::getElementText($inputPart, "countryneeded")));
$webShopFizetesAdatok->setMegyeKell($this->getBooleanValue(WebShopXmlUtils::getElementText($inputPart, "countyneeded")));
$webShopFizetesAdatok->setTelepulesKell($this->getBooleanValue(WebShopXmlUtils::getElementText($inputPart, "settlementneeded")));
$webShopFizetesAdatok->setUtcaHazszamKell($this->getBooleanValue(WebShopXmlUtils::getElementText($inputPart, "streetneeded")));
$webShopFizetesAdatok->setIranyitoszamKell($this->getBooleanValue(WebShopXmlUtils::getElementText($inputPart, "zipcodeneeded")));
$webShopFizetesAdatok->setMailCimKell($this->getBooleanValue(WebShopXmlUtils::getElementText($inputPart, "mailaddressneeded")));
$webShopFizetesAdatok->setKozlemenyKell($this->getBooleanValue(WebShopXmlUtils::getElementText($inputPart, "narrationneeded")));
$webShopFizetesAdatok->setUgyfelRegisztracioKell($this->getBooleanValue(WebShopXmlUtils::getElementText($inputPart, "consumerregistrationneeded")));
$webShopFizetesAdatok->setRegisztraltUgyfelId(WebShopXmlUtils::getElementText($inputPart, "consumerregistrationid"));
$webShopFizetesAdatok->setShopMegjegyzes(WebShopXmlUtils::getElementText($inputPart, "shopcomment"));
$webShopFizetesAdatok->setBackURL(WebShopXmlUtils::getElementText($inputPart, "backurl"));
$consumerReceiptNeeded = WebShopXmlUtils::getElementText($inputPart, "consumerreceiptneeded");
$webShopFizetesAdatok->setVevoVisszaigazolasKell($this->getBooleanValue($consumerReceiptNeeded));
$webShopFizetesAdatok->setKetszereplos(is_null($consumerReceiptNeeded) || $consumerReceiptNeeded == "");
}
$outputPart = WebShopXmlUtils::getNodeByXPath($record, 'params/output');
if (!is_null($outputPart)) {
$webShopFizetesAdatok->setAuthorizaciosKod(WebShopXmlUtils::getElementText($outputPart, "authorizationcode"));
$webShopFizetesAdatok->setNev(WebShopXmlUtils::getElementText($outputPart, "name"));
$webShopFizetesAdatok->setOrszag(WebShopXmlUtils::getElementText($outputPart, "country"));
$webShopFizetesAdatok->setMegye(WebShopXmlUtils::getElementText($outputPart, "county"));
$webShopFizetesAdatok->setVaros(WebShopXmlUtils::getElementText($outputPart, "settlement"));
$webShopFizetesAdatok->setIranyitoszam(WebShopXmlUtils::getElementText($outputPart, "zipcode"));
$webShopFizetesAdatok->setUtcaHazszam(WebShopXmlUtils::getElementText($outputPart, "street"));
$webShopFizetesAdatok->setMailCim(WebShopXmlUtils::getElementText($outputPart, "mailaddress"));
$webShopFizetesAdatok->setKozlemeny(WebShopXmlUtils::getElementText($outputPart, "narration"));
$webShopFizetesAdatok->setTeljesCim(WebShopXmlUtils::getElementText($outputPart, "fulladdress"));
$webShopFizetesAdatok->setTelefon(WebShopXmlUtils::getElementText($outputPart, "telephone"));
}
$lista[] = $webShopFizetesAdatok;
}
usort($lista, "fizetesAdatokCmp");
return $webShopFizetesAdatokLista;
}
}
/**
* @desc Két fizetési tranzakció válasz adatot összehasonlító
* függvény. Az összehasonlítás alapja a teljesítés dátuma: a
* korábban teljesített tranzakció kisebb, mint a késõbb teljesült.
* Egy idõben teljesült tranzakciók esetén a fizetési tranzakció
* azonosító a mérvadó.
*/
function fizetesAdatokCmp($arg1, $arg2) {
if (is_null($arg1)) return 1;
if (is_null($arg2)) return -1;
return strcmp(
$arg1->getTeljesites() . $arg1->getAzonosito(),
$arg2->getTeljesites() . $arg2->getAzonosito() );
}