1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/** |
4
|
|
|
* PAYONE Magento 2 Connector is free software: you can redistribute it and/or modify |
5
|
|
|
* it under the terms of the GNU Lesser General Public License as published by |
6
|
|
|
* the Free Software Foundation, either version 3 of the License, or |
7
|
|
|
* (at your option) any later version. |
8
|
|
|
* |
9
|
|
|
* PAYONE Magento 2 Connector is distributed in the hope that it will be useful, |
10
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
11
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12
|
|
|
* GNU Lesser General Public License for more details. |
13
|
|
|
* |
14
|
|
|
* You should have received a copy of the GNU Lesser General Public License |
15
|
|
|
* along with PAYONE Magento 2 Connector. If not, see <http://www.gnu.org/licenses/>. |
16
|
|
|
* |
17
|
|
|
* PHP version 5 |
18
|
|
|
* |
19
|
|
|
* @category Payone |
20
|
|
|
* @package Payone_Magento2_Plugin |
21
|
|
|
* @author FATCHIP GmbH <[email protected]> |
22
|
|
|
* @copyright 2003 - 2017 Payone GmbH |
23
|
|
|
* @license <http://www.gnu.org/licenses/> GNU Lesser General Public License |
24
|
|
|
* @link http://www.payone.de |
25
|
|
|
*/ |
26
|
|
|
|
27
|
|
|
namespace Payone\Core\Model\Api\Payolution; |
28
|
|
|
|
29
|
|
|
use Locale; |
30
|
|
|
|
31
|
|
|
/** |
32
|
|
|
* Class for requesting the privacy declaration from payolution |
33
|
|
|
*/ |
34
|
|
|
class PrivacyDeclaration |
35
|
|
|
{ |
36
|
|
|
/** |
37
|
|
|
* URL to payolution privacy declaration API |
38
|
|
|
* |
39
|
|
|
* @var string |
40
|
|
|
*/ |
41
|
|
|
protected $sAcceptanceBaseUrl = 'https://payment.payolution.com/payolution-payment/infoport/dataprivacydeclaration'; |
42
|
|
|
|
43
|
|
|
/** |
44
|
|
|
* Fallback template for the case that payolution server is not reachable or it delivers an unexpected response |
45
|
|
|
* |
46
|
|
|
* @var string |
47
|
|
|
*/ |
48
|
|
|
protected $sFallback = " |
49
|
|
|
<header> |
50
|
|
|
<strong>Zusätzliche Hinweise für die Datenschutzerklärung für Kauf auf Rechnung, Ratenzahlung und Zahlung mittels SEPA-Basis-Lastschrift von **company** (im Folgenden: \"wir\")</strong></br> |
51
|
|
|
<span><i>(Stand: 17.03.2016)</i></span> |
52
|
|
|
</header> |
53
|
|
|
<ol> |
54
|
|
|
<li><p>Bei Kauf auf Rechnung oder Ratenzahlung oder SEPA-Basis-Lastschrift wird von Ihnen während des Bestellprozesses eine datenschutzrechtliche Einwilligung eingeholt. Folgend finden Sie eine Wiederholung dieser Bestimmungen, die lediglich informativen Charakter haben.</p></li> |
55
|
|
|
<li><p>Bei Auswahl von Kauf auf Rechnung oder Ratenzahlung oder Bezahlung mittels SEPA-Basis-Lastschrift werden für die Abwicklung dieser Zahlarten personenbezogene Daten (Vorname, Nachname, Adresse, Email, Telefonnummer, Geburtsdatum, IP-Adresse, Geschlecht) gemeinsam mit für die Transaktionsabwicklung erforderlichen Daten (Artikel, Rechnungsbetrag, Zinsen, Raten, Fälligkeiten, Gesamtbetrag, Rechnungsnummer, Steuern, Währung, Bestelldatum und Bestellzeitpunkt) an payolution übermittelt werden. payolution hat ein berechtigtes Interesse an den Daten und benötigt bzw. verwendet diese um Risikoüberprüfungen durchzuführen.</p></li> |
56
|
|
|
<li> |
57
|
|
|
<p>Zur Überprüfung der Identität bzw. Bonität des Kunden werden Abfragen und Auskünfte bei öffentlich zugänglichen Datenbanken sowie Kreditauskunfteien durchgeführt. Bei nachstehenden Anbietern können Auskünfte und gegebenenfalls Bonitätsinformationen auf Basis mathematisch-statistischer Verfahren eingeholt werden:</p> |
58
|
|
|
<ul> |
59
|
|
|
<li>CRIF GmbH, Diefenbachgasse 35, A-1150 Wien</li> |
60
|
|
|
<li>CRIF AG, Hagenholzstrasse 81, CH-8050 Zürich</li> |
61
|
|
|
<li>Deltavista GmbH, Dessauerstraße 9, D-80992 München</li> |
62
|
|
|
<li>SCHUFA Holding AG, Kormoranweg 5, D-65201 Wiesbaden</li> |
63
|
|
|
<li>KSV1870 Information GmbH, Wagenseilgasse 7, A-1120 Wien</li> |
64
|
|
|
<li>Bürgel Wirtschaftsinformationen GmbH & Co. KG, Gasstraße 18, D-22761 Hamburg</li> |
65
|
|
|
<li>Creditreform Boniversum GmbH, Hellersbergstr. 11, D-41460 Neuss</li> |
66
|
|
|
<li>infoscore Consumer Data GmbH, Rheinstraße 99, D-76532 Baden-Baden</li> |
67
|
|
|
<li>ProfileAddress Direktmarketing GmbH, Altmannsdorfer Strasse 311, A-1230 Wien</li> |
68
|
|
|
<li>Deutsche Post Direkt GmbH, Junkersring 57, D-53844 Troisdorf</li> |
69
|
|
|
<li>payolution GmbH, Am Euro Platz 2, A-1120 Wien</li> |
70
|
|
|
</ul> |
71
|
|
|
<p>payolution wird Ihre Angaben zur Bankverbindung (insbesondere Bankleitzahl und Kontonummer) zum Zwecke der Kontonummernprüfung an die SCHUFA Holding AG übermitteln. Die SCHUFA prüft anhand dieser Daten zunächst, ob die von Ihnen gemachten Angaben zur Bankverbindung plausibel sind. Die SCHUFA überprüft, ob die zur Prüfung verwendeten Daten ggf. in Ihrem Datenbestand gespeichert sind und übermittelt sodann das Ergebnis der Überprüfung an payolution zurück. Ein weiterer Datenaustausch wie die Bekanntgabe von Bonitätsinformationen oder eine Übermittlung abweichender Bankverbindungsdaten sowie Speicherung Ihrer Daten im SCHUFA-Datenbestand finden im Rahmen der Kontonummernprüfung nicht statt. Es wird aus Nachweisgründen allein die Tatsache der Überprüfung der Bankverbindungsdaten bei der SCHUFA gespeichert.</p> |
72
|
|
|
<p>payolution ist berechtigt, auch Daten zu etwaigem nicht-vertragsgemäßen Verhalten (z.B. unbestrittene offene Forderungen) zu speichern, zu verarbeiten, zu nutzen und an oben genannte Auskunfteien zu übermitteln.</p> |
73
|
|
|
</li> |
74
|
|
|
<li><p>Wir sind bereits nach den Bestimmungen des Bürgerlichen Gesetzbuches über Finanzierungshilfen zwischen Unternehmern und Verbrauchern, zu einer Prüfung Ihrer Kreditwürdigkeit gesetzlich verpflichtet.</p></li> |
75
|
|
|
<li><p>Im Fall eines Kaufs auf Rechnung oder Ratenkauf oder einer Bezahlung mittels SEPA-Basis-Lastschrift werden der payolution GmbH Daten über die Aufnahme (zu Ihrer Person, Kaufpreis, Laufzeit des Teilzahlungsgeschäfts, Ratenbeginn) und vereinbarungsgemäße Abwicklung (z.B. vorzeitige Rückzahlung, Laufzeitverlängerung, erfolgte Rückzahlungen) dieses Teilzahlungsgeschäfts übermittelt. Nach Abtretung der Kaufpreisforderung wird die forderungsübernehmende Bank die genannten Datenübermittlungen vornehmen. Wir bzw. die Bank, der die Kaufpreisforderung abgetreten wird, werden payolution GmbH auch Daten aufgrund nichtvertragsgemäßer Abwicklung (z.B. Kündigung des Teilzahlungsgeschäfts, Zwangsvollstreckungs-maßnahmen) melden. Diese Meldungen dürfen nach den datenschutzrechtlichen Bestimmungen nur erfolgen, soweit dies zur Wahrung berechtigter Interessen von Vertragspartnern der payolution GmbH oder der Allgemeinheit erforderlich ist und dadurch Ihre schutzwürdigen Belange nicht beeinträchtigt werden. payolution GmbH speichert die Daten, um ihren Vertragspartnern, die gewerbsmäßig Teilzahlungs- und sonstige Kreditgeschäfte an Verbraucher geben, Informationen zur Beurteilung der Kreditwürdigkeit von Kunden geben zu können. An Unternehmen, die gewerbsmäßig Forderungen einziehen und payolution GmbH vertraglich angeschlossen sind, können zum Zwecke der Schuldnerermittlung Adressdaten übermittelt werden. payolution GmbH stellt die Daten ihren Vertragspartnern nur zur Verfügung, wenn diese ein berechtigtes Interesse an der Datenübermittlung glaubhaft darlegen. payolution GmbH übermittelt nur objektive Daten ohne Angabe der Bank; subjektive Werturteile sowie persönliche Einkommens- und Vermögensverhältnisse sind in Auskünften der payolution GmbH nicht enthalten.</p></li> |
76
|
|
|
<li><p>Die im Bestellprozess durch Einwilligung erfolgte Zustimmung zur Datenweitergabe kann jederzeit, auch ohne Angabe von Gründen, uns gegenüber widerrufen können. Die oben genannten gesetzlichen Verpflichtungen zur Überprüfung Ihrer Kreditwürdigkeit bleiben von einem allfälligen Widerruf jedoch unberührt. Sie sind verpflichtet ausschließlich wahrheitsgetreue Angaben gegenüber uns zu machen.</p></li> |
77
|
|
|
<li><p>Sollten Sie Auskunft über die Erhebung, Nutzung, Verarbeitung oder Übermittlung von Sie betreffenden personenbezogenen Daten erhalten wollen oder Auskünfte, Berichtigungen, Sperrungen oder Löschung dieser Daten wünschen, können Sie sich an den Sachbearbeiter für Datenschutz bei payolution wenden:</p></li> |
78
|
|
|
</ol> |
79
|
|
|
|
80
|
|
|
<footer>Sachbearbeiter für Datenschutz<br /> |
81
|
|
|
[email protected]<br /> |
82
|
|
|
payolution GmbH<br /> |
83
|
|
|
Am Euro Platz 2<br /> |
84
|
|
|
1120 Wien<br /> |
85
|
|
|
DVR: 4008655 |
86
|
|
|
</footer> |
87
|
|
|
"; |
88
|
|
|
|
89
|
|
|
/** |
90
|
|
|
* PAYONE shop helper |
91
|
|
|
* |
92
|
|
|
* @var \Payone\Core\Helper\Shop |
93
|
|
|
*/ |
94
|
|
|
protected $shopHelper; |
95
|
|
|
|
96
|
|
|
/** |
97
|
|
|
* Magento curl object |
98
|
|
|
* |
99
|
|
|
* @var \Magento\Framework\HTTP\Client\Curl |
100
|
|
|
*/ |
101
|
|
|
protected $curl; |
102
|
|
|
|
103
|
|
|
/** |
104
|
|
|
* Constructor |
105
|
|
|
* |
106
|
|
|
* @param \Payone\Core\Helper\Shop $shopHelper |
107
|
|
|
*/ |
108
|
|
|
public function __construct( |
109
|
|
|
\Payone\Core\Helper\Shop $shopHelper, |
110
|
|
|
\Magento\Framework\HTTP\Client\Curl $curl |
111
|
|
|
) { |
112
|
|
|
$this->shopHelper = $shopHelper; |
113
|
|
|
$this->curl = $curl; |
114
|
|
|
$this->curl->setOption(CURLOPT_SSL_VERIFYPEER, false); |
|
|
|
|
115
|
|
|
$this->curl->setOption(CURLOPT_SSL_VERIFYHOST, false); |
|
|
|
|
116
|
|
|
} |
117
|
|
|
|
118
|
|
|
/** |
119
|
|
|
* Request acceptance text from payolution |
120
|
|
|
* |
121
|
|
|
* @param string $sCompany |
122
|
|
|
* @return string|false |
123
|
|
|
*/ |
124
|
|
|
protected function getAcceptanceTextFromPayolution($sCompany) |
125
|
|
|
{ |
126
|
|
|
$sUrl = $this->sAcceptanceBaseUrl.'?mId='.base64_encode($sCompany).'&lang='.$this->shopHelper->getLocale(); |
127
|
|
|
$this->curl->get($sUrl); |
128
|
|
|
$sContent = $this->curl->getBody(); |
129
|
|
|
$sPage = false; |
130
|
|
|
if (!empty($sContent) && stripos($sContent, 'payolution') !== false && stripos($sContent, '<header>') !== false) { |
131
|
|
|
//Parse content from HTML-body-tag from the given page |
132
|
|
|
$sRegex = "#<\s*?body\b[^>]*>(.*?)</body\b[^>]*>#s"; |
133
|
|
|
preg_match($sRegex, $sContent, $aMatches); |
134
|
|
|
if (is_array($aMatches) && count($aMatches) > 1) { |
135
|
|
|
$sPage = $aMatches[1]; |
136
|
|
|
//remove everything before the <header> tag ( a window.close link which wouldn't work in the given context ) |
137
|
|
|
$sPage = substr($sPage, stripos($sPage, '<header>')); |
138
|
|
|
} |
139
|
|
|
} |
140
|
|
|
return $sPage; |
141
|
|
|
} |
142
|
|
|
|
143
|
|
|
/** |
144
|
|
|
* Get acceptance text for the given payolution payment method |
145
|
|
|
* |
146
|
|
|
* @param string $sPaymentCode |
147
|
|
|
* @return string|false |
148
|
|
|
*/ |
149
|
|
|
public function getPayolutionAcceptanceText($sPaymentCode) |
150
|
|
|
{ |
151
|
|
|
if ((bool)$this->shopHelper->getConfigParam('active', $sPaymentCode, 'payment') === false) { |
152
|
|
|
return false; |
153
|
|
|
} |
154
|
|
|
|
155
|
|
|
$sCompany = $this->shopHelper->getConfigParam('company', $sPaymentCode, 'payone_payment'); |
156
|
|
|
$sPage = $this->getAcceptanceTextFromPayolution($sCompany); |
157
|
|
|
if (!$sPage) { |
|
|
|
|
158
|
|
|
$sPage = $this->getFallbackText($sCompany); |
159
|
|
|
} |
160
|
|
|
|
161
|
|
|
if (!$this->isUtf8($sPage)) { |
162
|
|
|
$sPage = utf8_encode($sPage); |
163
|
|
|
} |
164
|
|
|
|
165
|
|
|
return $sPage; |
166
|
|
|
} |
167
|
|
|
|
168
|
|
|
/** |
169
|
|
|
* Get fallback template |
170
|
|
|
* |
171
|
|
|
* @param string $sCompany |
172
|
|
|
* @return mixed |
173
|
|
|
*/ |
174
|
|
|
protected function getFallbackText($sCompany) |
175
|
|
|
{ |
176
|
|
|
return str_replace('**company**', $sCompany, $this->sFallback); |
177
|
|
|
} |
178
|
|
|
|
179
|
|
|
/** |
180
|
|
|
* Determine if the string is utf8 encoded |
181
|
|
|
* |
182
|
|
|
* @param string $sString |
183
|
|
|
* @return bool |
184
|
|
|
*/ |
185
|
|
|
protected function isUtf8($sString) |
186
|
|
|
{ |
187
|
|
|
if (preg_match('!!u', $sString)) { // this is utf-8 |
188
|
|
|
return true; |
189
|
|
|
} |
190
|
|
|
return false; // definitely not utf-8 |
191
|
|
|
} |
192
|
|
|
} |
It seems like the type of the argument is not accepted by the function/method which you are calling.
In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.
We suggest to add an explicit type cast like in the following example: