From 778d31d1368b19f19c949d149bbdf2054bffcafe Mon Sep 17 00:00:00 2001 From: Pradeep Date: Fri, 14 Sep 2018 11:46:04 +0530 Subject: [PATCH 01/35] COMDEVNL-1331 -- Updated support tab --- admin/view/template/extension/payment/mollie.tpl | 6 +++--- admin/view/template/extension/payment/mollie.twig | 14 +++++++------- admin/view/template/extension/payment/mollie_1.tpl | 12 ++++++------ 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/admin/view/template/extension/payment/mollie.tpl b/admin/view/template/extension/payment/mollie.tpl index a0ba4285..46390184 100644 --- a/admin/view/template/extension/payment/mollie.tpl +++ b/admin/view/template/extension/payment/mollie.tpl @@ -261,11 +261,11 @@
- Module by Quality Works - Technical Support + Module by Comercia - Technical Support
- +
- Wold 13 50
8225BZ Lelystad
the Netherlands

tel: +31 (0)85 7430150
E-mail: info@qualityworks.eu
Internet: www.qualityworks.eu + Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: info@comercia.nl
Internet: www.comercia.nl
Mollie - Support diff --git a/admin/view/template/extension/payment/mollie.twig b/admin/view/template/extension/payment/mollie.twig index 22f526a3..b04459df 100644 --- a/admin/view/template/extension/payment/mollie.twig +++ b/admin/view/template/extension/payment/mollie.twig @@ -261,13 +261,13 @@
- Module by Quality Works - Technical Support -
- -
- Wold 13 50
8225BZ Lelystad
the Netherlands

tel: +31 (0)85 7430150
E-mail: info@qualityworks.eu
Internet: www.qualityworks.eu -
-
+ Module by Comercia - Technical Support +
+ +
+ Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: info@comercia.nl
Internet: www.comercia.nl +
+
Mollie - Support
diff --git a/admin/view/template/extension/payment/mollie_1.tpl b/admin/view/template/extension/payment/mollie_1.tpl index e9a30bb8..77c5edf1 100644 --- a/admin/view/template/extension/payment/mollie_1.tpl +++ b/admin/view/template/extension/payment/mollie_1.tpl @@ -250,13 +250,13 @@
- Module by Quality Works - Technical Support -
- -
- Wold 13 50
8225BZ Lelystad
the Netherlands

tel: +31 (0)85 7430150
E-mail: info@qualityworks.eu
Internet: www.qualityworks.eu + Module by Comercia - Technical Support +
+ +
+ Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: info@comercia.nl
Internet: www.comercia.nl +
-
Mollie - Support
From 4214e18553a6bd17948696110322b439db7c6192 Mon Sep 17 00:00:00 2001 From: Pradeep Date: Tue, 18 Sep 2018 11:05:33 +0530 Subject: [PATCH 02/35] COMDEVNL-1331 -- Updated support email --- admin/view/template/extension/payment/mollie.tpl | 2 +- admin/view/template/extension/payment/mollie.twig | 2 +- admin/view/template/extension/payment/mollie_1.tpl | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/admin/view/template/extension/payment/mollie.tpl b/admin/view/template/extension/payment/mollie.tpl index 46390184..c766b864 100644 --- a/admin/view/template/extension/payment/mollie.tpl +++ b/admin/view/template/extension/payment/mollie.tpl @@ -265,7 +265,7 @@
- Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: info@comercia.nl
Internet: www.comercia.nl + Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: support@comercia.nl
Internet: www.comercia.nl
Mollie - Support diff --git a/admin/view/template/extension/payment/mollie.twig b/admin/view/template/extension/payment/mollie.twig index b04459df..fcb0dc5f 100644 --- a/admin/view/template/extension/payment/mollie.twig +++ b/admin/view/template/extension/payment/mollie.twig @@ -265,7 +265,7 @@
- Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: info@comercia.nl
Internet: www.comercia.nl + Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: support@comercia.nl
Internet: www.comercia.nl
Mollie - Support diff --git a/admin/view/template/extension/payment/mollie_1.tpl b/admin/view/template/extension/payment/mollie_1.tpl index 77c5edf1..b56858ed 100644 --- a/admin/view/template/extension/payment/mollie_1.tpl +++ b/admin/view/template/extension/payment/mollie_1.tpl @@ -254,7 +254,7 @@
- Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: info@comercia.nl
Internet: www.comercia.nl + Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: support@comercia.nl
Internet: www.comercia.nl
Mollie - Support From 3352ec2f034485a457d238f329b3100a41646888 Mon Sep 17 00:00:00 2001 From: Pradeep Date: Wed, 19 Sep 2018 15:43:06 +0530 Subject: [PATCH 03/35] COMDEVNL-1337 -- Set maximum price limit for credit card in admin --- admin/controller/extension/payment/mollie/base.php | 4 ++++ admin/language/de-de/extension/payment/mollie.php | 3 +++ admin/language/dutch/extension/payment/mollie.php | 3 +++ admin/language/en-gb/extension/payment/mollie.php | 3 +++ admin/language/english/extension/payment/mollie.php | 3 +++ admin/language/es-es/extension/payment/mollie.php | 4 ++++ admin/language/fr-fr/extension/payment/mollie.php | 3 +++ admin/language/french/extension/payment/mollie.php | 3 +++ admin/language/german/extension/payment/mollie.php | 4 ++++ admin/language/nl-nl/extension/payment/mollie.php | 3 +++ admin/language/spanish/extension/payment/mollie.php | 3 +++ admin/view/template/extension/payment/mollie.tpl | 12 +++++++++--- admin/view/template/extension/payment/mollie.twig | 6 ++++++ admin/view/template/extension/payment/mollie_1.tpl | 6 ++++++ catalog/model/extension/payment/mollie/base.php | 7 +++++++ 15 files changed, 64 insertions(+), 3 deletions(-) diff --git a/admin/controller/extension/payment/mollie/base.php b/admin/controller/extension/payment/mollie/base.php index 19c9f93f..98c2b7ed 100644 --- a/admin/controller/extension/payment/mollie/base.php +++ b/admin/controller/extension/payment/mollie/base.php @@ -282,6 +282,9 @@ public function index () $data['entry_support'] = $this->language->get("entry_support"); $data['entry_module'] = $this->language->get("entry_module"); $data['entry_version'] = $this->language->get("entry_version") . " " . MollieHelper::PLUGIN_VERSION; + $data['entry_creditcard_max_amount'] = $this->language->get("entry_creditcard_max_amount"); + $data['help_creditcard_max_amount'] = $this->language->get("help_creditcard_max_amount"); + $data['eg_creditcard_max_amount'] = $this->language->get("eg_creditcard_max_amount"); $data['button_save'] = $this->language->get("button_save"); $data['button_cancel'] = $this->language->get("button_cancel"); @@ -373,6 +376,7 @@ public function index () $code . "_ideal_canceled_status_id" => 7, $code . "_ideal_failed_status_id" => 10, $code . "_ideal_expired_status_id" => 14, + $code . "_creditcard_max_amount" => NULL, ); foreach($shops as $store) diff --git a/admin/language/de-de/extension/payment/mollie.php b/admin/language/de-de/extension/payment/mollie.php index 5a9c32e7..1b64f05b 100644 --- a/admin/language/de-de/extension/payment/mollie.php +++ b/admin/language/de-de/extension/payment/mollie.php @@ -90,6 +90,8 @@ $_['entry_show_icons'] = "Icons anzeigen"; $_['entry_show_order_canceled_page'] = "Meldung bei annullierten Bezahlungen anzeigen"; $_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Höchstbetrag für Kreditkarte"; +$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Sie können Ihren API Key auf Ihren Mollie-Webseiten-Profilen finden.'; @@ -98,6 +100,7 @@ $_['help_description'] = "Die Beschreibung soll auf der Banküberweisung Ihres Kunden erscheinen und Sie können sie in der Mollie Verwaltung sehen. Sie können maximal 29 Zeichen verwenden. TIPP: Verwenden Sie %, dies wird durch die Auftragsnummer ersetzt werden. Die Auftragsnummer selbst kann auch mehrere Zeichen lang sein!"; $_['help_show_icons'] = "Icons neben den Zahlungsarten von Mollie auf der Zahlungsseite anzeigen."; $_['help_show_order_canceled_page'] = "Eine Meldung für den Kunden anzeigen, wenn eine Zahlung annulliert wurde, bevor der Kunde zurück zum Warenkorb verwiesen wird."; +$_['help_creditcard_max_amount'] = 'Geben Sie den Betrag ein, den Sie in Ihrem mollie-Konto für die Kreditkarte festgelegt haben.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/dutch/extension/payment/mollie.php b/admin/language/dutch/extension/payment/mollie.php index 8dc2c8ac..093845c0 100644 --- a/admin/language/dutch/extension/payment/mollie.php +++ b/admin/language/dutch/extension/payment/mollie.php @@ -90,6 +90,8 @@ $_['entry_show_icons'] = "Toon icoontjes"; $_['entry_show_order_canceled_page'] = "Toon melding bij geannuleerde betalingen"; $_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Maximumbedrag voor creditcard"; +$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'U kunt uw API-sleutel vinden bij uw Mollie-websiteprofielen.'; @@ -98,6 +100,7 @@ $_['help_description'] = "De omschrijving zal op het bankafschrift van uw klant verschijnen en kunt u terugvinden in het Mollie beheer. U kunt maximaal 29 tekens gebruiken. TIP: Gebruik %, dit zal vervangen worden door het ordernummer. Het ordernummer kan zelf ook meerdere tekens lang zijn!"; $_['help_show_icons'] = "Toon icoontjes naast de betaalmethodes van Mollie op de betaalpagina."; $_['help_show_order_canceled_page'] = "Toon een melding aan de klant als een betaling geannuleerd wordt, alvorens de klant terug naar het winkelmandje te verwijzen."; +$_['help_creditcard_max_amount'] = 'Voer het bedrag in dat u hebt ingesteld voor uw creditcard in uw mollie-account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/en-gb/extension/payment/mollie.php b/admin/language/en-gb/extension/payment/mollie.php index 5525909c..c481a359 100644 --- a/admin/language/en-gb/extension/payment/mollie.php +++ b/admin/language/en-gb/extension/payment/mollie.php @@ -90,6 +90,8 @@ $_['entry_show_icons'] = "Show icons"; $_['entry_show_order_canceled_page'] = "Show message if payment is cancelled"; $_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Maximum amount for credit card"; +$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'You can find your API key in your Mollie website profiles.'; @@ -98,6 +100,7 @@ $_['help_description'] = 'This description will appear on the bank / card statement of your customer. You may use a maximum of 29 characters. TIP: Use %, this will be replaced by the order id of the payment. Don\'t forget % can be multiple characters long!'; $_['help_show_icons'] = 'Show icons next to the Mollie payment methods on the checkout page.'; $_['help_show_order_canceled_page'] = 'Show a message to the customer if a payment is cancelled, before redirecting the customer back to their shopping cart.'; +$_['help_creditcard_max_amount'] = 'Enter the amount you have set for credit card in your mollie account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/english/extension/payment/mollie.php b/admin/language/english/extension/payment/mollie.php index 8b3e0ea9..96ef2a9f 100644 --- a/admin/language/english/extension/payment/mollie.php +++ b/admin/language/english/extension/payment/mollie.php @@ -88,6 +88,8 @@ $_['entry_show_icons'] = "Show icons"; $_['entry_show_order_canceled_page'] = "Show message if payment is cancelled"; $_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Maximumbedrag voor credit card"; +$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'You can find your API key in your Mollie website profiles.'; @@ -96,6 +98,7 @@ $_['help_description'] = 'This description will appear on the bank / card statement of your customer. You may use a maximum of 29 characters. TIP: Use %, this will be replaced by the order id of the payment. Don\'t forget % can be multiple characters long!'; $_['help_show_icons'] = 'Show icons next to the Mollie payment methods on the checkout page.'; $_['help_show_order_canceled_page'] = 'Show a message to the customer if a payment is cancelled, before redirecting the customer back to their shopping cart.'; +$_['help_creditcard_max_amount'] = 'Enter the amount you have set for credit card in your mollie account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/es-es/extension/payment/mollie.php b/admin/language/es-es/extension/payment/mollie.php index 4640a5ba..345ddf52 100644 --- a/admin/language/es-es/extension/payment/mollie.php +++ b/admin/language/es-es/extension/payment/mollie.php @@ -90,6 +90,9 @@ $_['entry_show_icons'] = "Mostrar iconos"; $_['entry_show_order_canceled_page'] = "Mostrar notificación en caso de cancelación de pagos"; $_['entry_geo_zone'] = "Zona Geo"; +$_['entry_creditcard_max_amount'] = "Monto máximo por tarjeta de crédito"; +$_['eg_creditcard_max_amount'] = "eg.500"; + // Help $_['help_view_profile'] = 'Puede encontrar su clave API en sus @@ -99,6 +102,7 @@ $_['help_description'] = "La descripción aparecerá en el estado de cuenta de su cliente y se puede encontrar en la administración de Mollie. Puede utilizar hasta 29 caracteres. CONSEJO: Use%, que será reemplazado por el número de pedido. ¡El número de pedido puede tener algunos caracteres más!"; $_['help_show_icons'] = "Mostrar iconos junto a los métodos de pago de Mollie en la página de pago."; $_['help_show_order_canceled_page'] = "Mostrar una notificación al cliente si un pago es cancelado, antes de redirigir al cliente de nuevo a la cesta de la compra."; +$_['help_creditcard_max_amount'] = 'Ingrese el monto que ha configurado para la tarjeta de crédito en su cuenta de Mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/fr-fr/extension/payment/mollie.php b/admin/language/fr-fr/extension/payment/mollie.php index f1fa20b3..fb6841e7 100644 --- a/admin/language/fr-fr/extension/payment/mollie.php +++ b/admin/language/fr-fr/extension/payment/mollie.php @@ -89,6 +89,8 @@ $_['entry_description'] = "Description"; $_['entry_show_icons'] = "Afficher des icônes"; $_['entry_show_order_canceled_page'] = "Afficher un message si le paiement est annulé"; +$_['entry_creditcard_max_amount'] = "Montant maximum pour carte de crédit"; +$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Vous pouvez trouver votre clé API dans vos profils de site à Mollie.'; @@ -97,6 +99,7 @@ $_['help_description'] = 'Cette description apparaîtra sur le relevé bancaire de votre client. Vous pouvez utiliser un maximum de 29 caractères. ASTUCE: Utilisez le %, il sera remplacé par l\'id de la commande du paiement. N\'oubliez pas que %/code> peut devenir plusieurs caractères!'; $_['help_show_icons'] = 'Afficher les icônes à côté des méthodes de paiement Mollie sur la page de paiement.'; $_['help_show_order_canceled_page'] = 'Afficher un message au client si un paiement est annulé, avant de rediriger le client vers leur panier.'; +$_['help_creditcard_max_amount'] = 'Entrez le montant que vous avez défini pour la carte de crédit dans votre compte mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/french/extension/payment/mollie.php b/admin/language/french/extension/payment/mollie.php index f1fa20b3..fb6841e7 100644 --- a/admin/language/french/extension/payment/mollie.php +++ b/admin/language/french/extension/payment/mollie.php @@ -89,6 +89,8 @@ $_['entry_description'] = "Description"; $_['entry_show_icons'] = "Afficher des icônes"; $_['entry_show_order_canceled_page'] = "Afficher un message si le paiement est annulé"; +$_['entry_creditcard_max_amount'] = "Montant maximum pour carte de crédit"; +$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Vous pouvez trouver votre clé API dans vos profils de site à Mollie.'; @@ -97,6 +99,7 @@ $_['help_description'] = 'Cette description apparaîtra sur le relevé bancaire de votre client. Vous pouvez utiliser un maximum de 29 caractères. ASTUCE: Utilisez le %, il sera remplacé par l\'id de la commande du paiement. N\'oubliez pas que %/code> peut devenir plusieurs caractères!'; $_['help_show_icons'] = 'Afficher les icônes à côté des méthodes de paiement Mollie sur la page de paiement.'; $_['help_show_order_canceled_page'] = 'Afficher un message au client si un paiement est annulé, avant de rediriger le client vers leur panier.'; +$_['help_creditcard_max_amount'] = 'Entrez le montant que vous avez défini pour la carte de crédit dans votre compte mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/german/extension/payment/mollie.php b/admin/language/german/extension/payment/mollie.php index 5a9c32e7..31eddd6d 100644 --- a/admin/language/german/extension/payment/mollie.php +++ b/admin/language/german/extension/payment/mollie.php @@ -90,6 +90,8 @@ $_['entry_show_icons'] = "Icons anzeigen"; $_['entry_show_order_canceled_page'] = "Meldung bei annullierten Bezahlungen anzeigen"; $_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Höchstbetrag für Kreditkarte"; +$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Sie können Ihren API Key auf Ihren Mollie-Webseiten-Profilen finden.'; @@ -98,6 +100,8 @@ $_['help_description'] = "Die Beschreibung soll auf der Banküberweisung Ihres Kunden erscheinen und Sie können sie in der Mollie Verwaltung sehen. Sie können maximal 29 Zeichen verwenden. TIPP: Verwenden Sie %, dies wird durch die Auftragsnummer ersetzt werden. Die Auftragsnummer selbst kann auch mehrere Zeichen lang sein!"; $_['help_show_icons'] = "Icons neben den Zahlungsarten von Mollie auf der Zahlungsseite anzeigen."; $_['help_show_order_canceled_page'] = "Eine Meldung für den Kunden anzeigen, wenn eine Zahlung annulliert wurde, bevor der Kunde zurück zum Warenkorb verwiesen wird."; +$_['help_creditcard_max_amount'] = 'Geben Sie den Betrag ein, den Sie in Ihrem mollie-Konto für die Kreditkarte festgelegt haben.'; + // Info $_['entry_module'] = "Module"; diff --git a/admin/language/nl-nl/extension/payment/mollie.php b/admin/language/nl-nl/extension/payment/mollie.php index 7583be08..0775aa99 100644 --- a/admin/language/nl-nl/extension/payment/mollie.php +++ b/admin/language/nl-nl/extension/payment/mollie.php @@ -90,6 +90,8 @@ $_['entry_show_icons'] = "Toon icoontjes"; $_['entry_show_order_canceled_page'] = "Toon melding bij geannuleerde betalingen"; $_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Maximumbedrag voor creditcard"; +$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'U kunt uw API-sleutel vinden bij uw Mollie-websiteprofielen.'; @@ -98,6 +100,7 @@ $_['help_description'] = "De omschrijving zal op het bankafschrift van uw klant verschijnen en kunt u terugvinden in het Mollie beheer. U kunt maximaal 29 tekens gebruiken. TIP: Gebruik %, dit zal vervangen worden door het ordernummer. Het ordernummer kan zelf ook meerdere tekens lang zijn!"; $_['help_show_icons'] = "Toon icoontjes naast de betaalmethodes van Mollie op de betaalpagina."; $_['help_show_order_canceled_page'] = "Toon een melding aan de klant als een betaling geannuleerd wordt, alvorens de klant terug naar het winkelmandje te verwijzen."; +$_['help_creditcard_max_amount'] = 'Voer het bedrag in dat u hebt ingesteld voor uw creditcard in uw mollie-account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/spanish/extension/payment/mollie.php b/admin/language/spanish/extension/payment/mollie.php index 4640a5ba..d669c41b 100644 --- a/admin/language/spanish/extension/payment/mollie.php +++ b/admin/language/spanish/extension/payment/mollie.php @@ -90,6 +90,8 @@ $_['entry_show_icons'] = "Mostrar iconos"; $_['entry_show_order_canceled_page'] = "Mostrar notificación en caso de cancelación de pagos"; $_['entry_geo_zone'] = "Zona Geo"; +$_['entry_creditcard_max_amount'] = "Monto máximo por tarjeta de crédito"; +$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Puede encontrar su clave API en sus @@ -99,6 +101,7 @@ $_['help_description'] = "La descripción aparecerá en el estado de cuenta de su cliente y se puede encontrar en la administración de Mollie. Puede utilizar hasta 29 caracteres. CONSEJO: Use%, que será reemplazado por el número de pedido. ¡El número de pedido puede tener algunos caracteres más!"; $_['help_show_icons'] = "Mostrar iconos junto a los métodos de pago de Mollie en la página de pago."; $_['help_show_order_canceled_page'] = "Mostrar una notificación al cliente si un pago es cancelado, antes de redirigir al cliente de nuevo a la cesta de la compra."; +$_['help_creditcard_max_amount'] = 'Ingrese el monto que ha configurado para la tarjeta de crédito en su cuenta de Mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/view/template/extension/payment/mollie.tpl b/admin/view/template/extension/payment/mollie.tpl index a0ba4285..78de655c 100644 --- a/admin/view/template/extension/payment/mollie.tpl +++ b/admin/view/template/extension/payment/mollie.tpl @@ -235,6 +235,12 @@
+
+ +
+ +
+
@@ -261,11 +267,11 @@
- Module by Quality Works - Technical Support + Module by Comercia - Technical Support Mollie - Support diff --git a/admin/view/template/extension/payment/mollie.twig b/admin/view/template/extension/payment/mollie.twig index 22f526a3..2eab341b 100644 --- a/admin/view/template/extension/payment/mollie.twig +++ b/admin/view/template/extension/payment/mollie.twig @@ -234,6 +234,12 @@ {% endif %}
+
+
+ +
+ +
diff --git a/admin/view/template/extension/payment/mollie_1.tpl b/admin/view/template/extension/payment/mollie_1.tpl index e9a30bb8..4d69ce25 100644 --- a/admin/view/template/extension/payment/mollie_1.tpl +++ b/admin/view/template/extension/payment/mollie_1.tpl @@ -224,6 +224,12 @@ +
+ +
+ +
+
diff --git a/catalog/model/extension/payment/mollie/base.php b/catalog/model/extension/payment/mollie/base.php index 80b064ee..b204c4d6 100644 --- a/catalog/model/extension/payment/mollie/base.php +++ b/catalog/model/extension/payment/mollie/base.php @@ -98,6 +98,13 @@ public function getMethod($address, $total) $icon = ''; } + if (static::MODULE_NAME == 'creditcard'){ + $amount_limit = $this->config->get($moduleCode .'_creditcard_max_amount'); + if(($amount_limit != NULL) && ($total > $amount_limit)) { + return; + } + } + return array( "code" => "mollie_" . static::MODULE_NAME, "title" => $icon . $payment_method->description, From 20f4b3a538d8f0d23ea2f19970ca22e58ebe3334 Mon Sep 17 00:00:00 2001 From: Pradeep Date: Wed, 19 Sep 2018 17:15:12 +0530 Subject: [PATCH 04/35] COMDEVNL-1336 -- Fixed amount more than 1000 issue --- catalog/controller/extension/payment/mollie/base.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/catalog/controller/extension/payment/mollie/base.php b/catalog/controller/extension/payment/mollie/base.php index 148d3b06..53bc3e65 100644 --- a/catalog/controller/extension/payment/mollie/base.php +++ b/catalog/controller/extension/payment/mollie/base.php @@ -164,15 +164,15 @@ public function payment() $order_id = $this->getOrderID(); $order = $this->getOpenCartOrder($order_id); - $amount = $this->currency->convert($order['total'], $this->config->get("config_currency"), "EUR"); - $amount = round($amount, 2); + $currency = $this->session->data['currency']; + $amount = $this->currency->convert($order['total'], $this->config->get("config_currency"), $currency); $description = str_replace("%", $order['order_id'], html_entity_decode($this->config->get(MollieHelper::getModuleCode() . "_ideal_description"), ENT_QUOTES, "UTF-8")); $return_url = $this->url->link("extension/payment/mollie_" . static::MODULE_NAME . "/callback&order_id=" . $order['order_id'], "", "SSL"); $issuer = $this->getIssuer(); try { $data = array( - "amount" => ["currency" => "EUR", "value" => (string)number_format($amount,2)], + "amount" => ["currency" => $currency, "value" => (string)number_format((float)$amount, 2, '.', '')], "description" => $description, "redirectUrl" => $return_url, "webhookUrl" => $this->getWebhookUrl(), @@ -230,7 +230,6 @@ public function payment() } $data["locale"]=$locale; - $payment = $api->payments->create($data); } catch (Mollie\Api\Exceptions\ApiException $e) { $this->showErrorPage($e->getMessage()); From 51e11435c03bc83cfa14130f255a95d6df443087 Mon Sep 17 00:00:00 2001 From: Pradeep Date: Thu, 20 Sep 2018 13:24:52 +0530 Subject: [PATCH 05/35] COMDEVNL-1334 -- API key saved automatically --- .../extension/payment/mollie/base.php | 17 ++++++++++ .../template/extension/payment/mollie.tpl | 32 +++++++++++++++---- .../template/extension/payment/mollie.twig | 20 ++++++++++-- .../template/extension/payment/mollie_1.tpl | 20 ++++++++++-- 4 files changed, 77 insertions(+), 12 deletions(-) diff --git a/admin/controller/extension/payment/mollie/base.php b/admin/controller/extension/payment/mollie/base.php index 19c9f93f..d98fce55 100644 --- a/admin/controller/extension/payment/mollie/base.php +++ b/admin/controller/extension/payment/mollie/base.php @@ -236,6 +236,8 @@ public function index () // Set data for template $data['api_check_url'] = $this->url->link("extension/payment/mollie_" . static::MODULE_NAME . '/validate_api_key', $this->getTokenUriPart(), "SSL"); + $data['module_name'] = static::MODULE_NAME; + $data['token'] = $this->getTokenUriPart(); $data['heading_title'] = $this->language->get("heading_title"); $data['title_global_options'] = $this->language->get("title_global_options"); $data['title_payment_status'] = $this->language->get("title_payment_status"); @@ -282,6 +284,9 @@ public function index () $data['entry_support'] = $this->language->get("entry_support"); $data['entry_module'] = $this->language->get("entry_module"); $data['entry_version'] = $this->language->get("entry_version") . " " . MollieHelper::PLUGIN_VERSION; + $data['entry_creditcard_max_amount'] = $this->language->get("entry_creditcard_max_amount"); + $data['help_creditcard_max_amount'] = $this->language->get("help_creditcard_max_amount"); + $data['eg_creditcard_max_amount'] = $this->language->get("eg_creditcard_max_amount"); $data['button_save'] = $this->language->get("button_save"); $data['button_cancel'] = $this->language->get("button_cancel"); @@ -373,6 +378,7 @@ public function index () $code . "_ideal_canceled_status_id" => 7, $code . "_ideal_failed_status_id" => 10, $code . "_ideal_expired_status_id" => 14, + $code . "_creditcard_max_amount" => NULL, ); foreach($shops as $store) @@ -746,4 +752,15 @@ private function getUserId() return $this->user->getId(); } + + public function saveAPIKey() { + $this->load->model('setting/setting'); + $code = 'mollie'; + $store_id = $_POST['store_id']; + $data = array( + 'mollie_api_key' => $_POST['api_key'] + ); + $this->model_setting_setting->editSetting($code, $data, $store_id); + return true; + } } diff --git a/admin/view/template/extension/payment/mollie.tpl b/admin/view/template/extension/payment/mollie.tpl index a0ba4285..e2885ac0 100644 --- a/admin/view/template/extension/payment/mollie.tpl +++ b/admin/view/template/extension/payment/mollie.tpl @@ -191,7 +191,7 @@
- +
@@ -235,6 +235,12 @@
+
+ +
+ +
+
@@ -261,11 +267,11 @@
- Module by Quality Works - Technical Support + Module by Comercia - Technical Support
- +
- Wold 13 50
8225BZ Lelystad
the Netherlands

tel: +31 (0)85 7430150
E-mail: info@qualityworks.eu
Internet: www.qualityworks.eu + Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: support@comercia.nl
Internet: www.comercia.nl
Mollie - Support @@ -316,6 +322,7 @@ checkIfAPIKeyIsValid(value).then(function (response) { if (response.valid) { updateIcon($icon_container, 'fa-check'); + saveAPIKey(value, $('#mollie_api_key').attr('store')); } else if (response.invalid) { updateIcon($icon_container, 'fa-times', response.message); } else if (response.error) { @@ -325,6 +332,21 @@ }, 400); } + function saveAPIKey(key, store_id) { + var data = { + 'api_key': key, + 'store_id': store_id + }; + $.ajax({ + type: "POST", + url: 'index.php?route=extension/payment/mollie_/saveAPIKey&', + data: data, + success: function() { + window.location.reload(); + } + }); + } + function updateIcon($container, className, message, dontClearErrors) { var colorClass = ''; var classPerIcon = { @@ -369,8 +391,6 @@ $('[data-payment-mollie-api-key]').on('keyup', function () { validateAPIKey(this.value, $(this).siblings('.input-group-addon')); - }).each(function () { - validateAPIKey(this.value, $(this).siblings('.input-group-addon')); }); })(); diff --git a/admin/view/template/extension/payment/mollie.twig b/admin/view/template/extension/payment/mollie.twig index 22f526a3..2bb76df9 100644 --- a/admin/view/template/extension/payment/mollie.twig +++ b/admin/view/template/extension/payment/mollie.twig @@ -191,7 +191,7 @@
- +
{% if stores[shop.id].error_api_key %}
{{ stores[shop.id].error_api_key }}
@@ -316,6 +316,7 @@ checkIfAPIKeyIsValid(value).then(function (response) { if (response.valid) { updateIcon($icon_container, 'fa-check'); + saveAPIKey(value, $('#mollie_api_key').attr('store')); } else if (response.invalid) { updateIcon($icon_container, 'fa-times', response.message); } else if (response.error) { @@ -324,6 +325,21 @@ }); }, 400); } + + function saveAPIKey(key, store_id) { + var data = { + 'api_key': key, + 'store_id': store_id + }; + $.ajax({ + type: "POST", + url: 'index.php?route=extension/payment/mollie_/saveAPIKey&', + data: data, + success: function() { + window.location.reload(); + } + }); + } function updateIcon($container, className, message, dontClearErrors) { var colorClass = ''; @@ -369,8 +385,6 @@ $('[data-payment-mollie-api-key]').on('keyup', function () { validateAPIKey(this.value, $(this).siblings('.input-group-addon')); - }).each(function () { - validateAPIKey(this.value, $(this).siblings('.input-group-addon')); }); })(); diff --git a/admin/view/template/extension/payment/mollie_1.tpl b/admin/view/template/extension/payment/mollie_1.tpl index e9a30bb8..c33042e6 100644 --- a/admin/view/template/extension/payment/mollie_1.tpl +++ b/admin/view/template/extension/payment/mollie_1.tpl @@ -180,7 +180,7 @@
- +
@@ -305,6 +305,7 @@ checkIfAPIKeyIsValid(value).then(function (response) { if (response.valid) { updateIcon($icon_container, 'success'); + saveAPIKey(value, $('#mollie_api_key').attr('store')); } else if (response.invalid) { updateIcon($icon_container, 'attention', response.message); } else if (response.error) { @@ -313,6 +314,21 @@ }); }, 400); } + + function saveAPIKey(key, store_id) { + var data = { + 'api_key': key, + 'store_id': store_id + }; + $.ajax({ + type: "POST", + url: 'index.php?route=extension/payment/mollie_/saveAPIKey&', + data: data, + success: function() { + window.location.reload(); + } + }); + } function updateIcon($container, className, message, dontClearErrors) { $container.removeClass('success loading empty attention warning').addClass(className); @@ -330,8 +346,6 @@ $('[data-payment-mollie-api-key]').on('keyup', function () { validateAPIKey(this.value, $(this).closest('.input-group')); - }).each(function () { - validateAPIKey(this.value, $(this).closest('.input-group')); }); })(); From 13d65d02ff0420ff8773cc698a315ba85f5eaf74 Mon Sep 17 00:00:00 2001 From: Pradeep Date: Thu, 20 Sep 2018 16:35:18 +0530 Subject: [PATCH 06/35] COMDEVNL-1316 -- Order update check --- catalog/controller/extension/payment/mollie/base.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/catalog/controller/extension/payment/mollie/base.php b/catalog/controller/extension/payment/mollie/base.php index 148d3b06..03b019e9 100644 --- a/catalog/controller/extension/payment/mollie/base.php +++ b/catalog/controller/extension/payment/mollie/base.php @@ -164,15 +164,15 @@ public function payment() $order_id = $this->getOrderID(); $order = $this->getOpenCartOrder($order_id); - $amount = $this->currency->convert($order['total'], $this->config->get("config_currency"), "EUR"); - $amount = round($amount, 2); + $currency = $this->session->data['currency']; + $amount = $this->currency->convert($order['total'], $this->config->get("config_currency"), $currency); $description = str_replace("%", $order['order_id'], html_entity_decode($this->config->get(MollieHelper::getModuleCode() . "_ideal_description"), ENT_QUOTES, "UTF-8")); $return_url = $this->url->link("extension/payment/mollie_" . static::MODULE_NAME . "/callback&order_id=" . $order['order_id'], "", "SSL"); $issuer = $this->getIssuer(); try { $data = array( - "amount" => ["currency" => "EUR", "value" => (string)number_format($amount,2)], + "amount" => ["currency" => $currency, "value" => (string)number_format((float)$amount, 2, '.', '')], "description" => $description, "redirectUrl" => $return_url, "webhookUrl" => $this->getWebhookUrl(), @@ -230,7 +230,6 @@ public function payment() } $data["locale"]=$locale; - $payment = $api->payments->create($data); } catch (Mollie\Api\Exceptions\ApiException $e) { $this->showErrorPage($e->getMessage()); @@ -290,6 +289,10 @@ public function webhook() return; } + if($order['order_status_id'] != 0) { + return; + } + // Only process the status if the order is stateless or in 'pending' status. if (!empty($order['order_status_id']) && $order['order_status_id'] != $this->config->get($moduleCode . "_ideal_pending_status_id")) { $this->writeToMollieLog("The order was already processed before (order status ID: " . intval($order['order_status_id']) . ")"); From 28302aab84bdeec57802fa9f30208eb802b1221b Mon Sep 17 00:00:00 2001 From: Pradeep Date: Thu, 27 Sep 2018 17:54:43 +0530 Subject: [PATCH 07/35] COMDEVNL-1332 -- Util implemented and made version compatible(In progress) --- .../extension/payment/mollie_bancontact.php | 9 +- .../extension/payment/mollie_banktransfer.php | 8 +- .../extension/payment/mollie_belfius.php | 8 +- .../extension/payment/mollie_bitcoin.php | 8 +- .../extension/payment/mollie_creditcard.php | 8 +- .../extension/payment/mollie_directdebit.php | 8 +- .../extension/payment/mollie_eps.php | 9 +- .../extension/payment/mollie_giftcard.php | 8 +- .../extension/payment/mollie_giropay.php | 9 +- .../extension/payment/mollie_ideal.php | 8 +- .../extension/payment/mollie_inghomepay.php | 8 +- .../extension/payment/mollie_kbc.php | 8 +- .../extension/payment/mollie_paypal.php | 8 +- .../extension/payment/mollie_paysafecard.php | 8 +- .../extension/payment/mollie_sofort.php | 8 +- .../{extension => }/payment/mollie/base.php | 375 +- .../controller/payment/mollie_bancontact.php | 7 + .../payment/mollie_banktransfer.php | 7 + admin/controller/payment/mollie_belfius.php | 7 + admin/controller/payment/mollie_bitcoin.php | 7 + .../controller/payment/mollie_creditcard.php | 7 + .../controller/payment/mollie_directdebit.php | 7 + admin/controller/payment/mollie_eps.php | 6 + admin/controller/payment/mollie_giftcard.php | 7 + admin/controller/payment/mollie_giropay.php | 6 + admin/controller/payment/mollie_ideal.php | 7 + .../controller/payment/mollie_inghomepay.php | 7 + admin/controller/payment/mollie_kbc.php | 7 + admin/controller/payment/mollie_paypal.php | 7 + .../controller/payment/mollie_paysafecard.php | 7 + admin/controller/payment/mollie_sofort.php | 7 + .../de-de/extension/payment/mollie.php | 122 +- .../extension/payment/mollie_banktransfer.php | 4 +- .../extension/payment/mollie_belfius.php | 4 +- .../extension/payment/mollie_bitcoin.php | 4 +- .../extension/payment/mollie_creditcard.php | 4 +- .../extension/payment/mollie_directdebit.php | 4 +- .../de-de/extension/payment/mollie_eps.php | 3 +- .../extension/payment/mollie_giftcard.php | 4 +- .../extension/payment/mollie_giropay.php | 3 +- .../de-de/extension/payment/mollie_ideal.php | 4 +- .../extension/payment/mollie_inghomepay.php | 4 +- .../de-de/extension/payment/mollie_kbc.php | 4 +- .../extension/payment/mollie_mistercash.php | 4 +- .../de-de/extension/payment/mollie_paypal.php | 4 +- .../extension/payment/mollie_paysafecard.php | 4 +- .../de-de/extension/payment/mollie_sofort.php | 4 +- admin/language/de-de/payment/mollie.php | 125 + .../de-de/payment/mollie_banktransfer.php | 4 + .../language/de-de/payment/mollie_belfius.php | 4 + .../language/de-de/payment/mollie_bitcoin.php | 4 + .../de-de/payment/mollie_creditcard.php | 4 + .../de-de/payment/mollie_directdebit.php | 4 + admin/language/de-de/payment/mollie_eps.php | 3 + .../de-de/payment/mollie_giftcard.php | 4 + .../language/de-de/payment/mollie_giropay.php | 3 + admin/language/de-de/payment/mollie_ideal.php | 4 + .../de-de/payment/mollie_inghomepay.php | 4 + admin/language/de-de/payment/mollie_kbc.php | 4 + .../de-de/payment/mollie_mistercash.php | 4 + .../language/de-de/payment/mollie_paypal.php | 4 + .../de-de/payment/mollie_paysafecard.php | 4 + .../language/de-de/payment/mollie_sofort.php | 4 + .../dutch/extension/payment/mollie.php | 122 +- .../extension/payment/mollie_bancontact.php | 4 +- .../extension/payment/mollie_banktransfer.php | 4 +- .../extension/payment/mollie_belfius.php | 4 +- .../extension/payment/mollie_bitcoin.php | 4 +- .../extension/payment/mollie_creditcard.php | 4 +- .../extension/payment/mollie_directdebit.php | 4 +- .../dutch/extension/payment/mollie_eps.php | 3 +- .../extension/payment/mollie_giftcard.php | 4 +- .../extension/payment/mollie_giropay.php | 3 +- .../dutch/extension/payment/mollie_ideal.php | 4 +- .../extension/payment/mollie_inghomepay.php | 4 +- .../dutch/extension/payment/mollie_kbc.php | 4 +- .../extension/payment/mollie_mistercash.php | 2 + .../dutch/extension/payment/mollie_paypal.php | 4 +- .../extension/payment/mollie_paysafecard.php | 4 +- .../dutch/extension/payment/mollie_sofort.php | 4 +- admin/language/dutch/payment/mollie.php | 125 + .../dutch/payment/mollie_bancontact.php | 4 + .../dutch/payment/mollie_banktransfer.php | 4 + .../language/dutch/payment/mollie_belfius.php | 4 + .../language/dutch/payment/mollie_bitcoin.php | 4 + .../dutch/payment/mollie_creditcard.php | 4 + .../dutch/payment/mollie_directdebit.php | 4 + admin/language/dutch/payment/mollie_eps.php | 3 + .../dutch/payment/mollie_giftcard.php | 4 + .../language/dutch/payment/mollie_giropay.php | 3 + admin/language/dutch/payment/mollie_ideal.php | 4 + .../dutch/payment/mollie_inghomepay.php | 4 + admin/language/dutch/payment/mollie_kbc.php | 4 + .../language/dutch/payment/mollie_paypal.php | 4 + .../dutch/payment/mollie_paysafecard.php | 4 + .../language/dutch/payment/mollie_sofort.php | 4 + .../en-gb/extension/payment/mollie.php | 122 +- .../extension/payment/mollie_bancontact.php | 4 +- .../extension/payment/mollie_banktransfer.php | 4 +- .../extension/payment/mollie_belfius.php | 4 +- .../extension/payment/mollie_bitcoin.php | 4 +- .../extension/payment/mollie_creditcard.php | 4 +- .../extension/payment/mollie_directdebit.php | 4 +- .../en-gb/extension/payment/mollie_eps.php | 4 +- .../extension/payment/mollie_giftcard.php | 4 +- .../extension/payment/mollie_giropay.php | 4 +- .../en-gb/extension/payment/mollie_ideal.php | 4 +- .../extension/payment/mollie_inghomepay.php | 4 +- .../en-gb/extension/payment/mollie_kbc.php | 4 +- .../extension/payment/mollie_mistercash.php | 2 + .../en-gb/extension/payment/mollie_paypal.php | 4 +- .../extension/payment/mollie_paysafecard.php | 4 +- .../en-gb/extension/payment/mollie_sofort.php | 4 +- admin/language/en-gb/payment/mollie.php | 125 + .../en-gb/payment/mollie_bancontact.php | 4 + .../en-gb/payment/mollie_banktransfer.php | 4 + .../language/en-gb/payment/mollie_belfius.php | 4 + .../language/en-gb/payment/mollie_bitcoin.php | 4 + .../en-gb/payment/mollie_creditcard.php | 4 + .../en-gb/payment/mollie_directdebit.php | 4 + admin/language/en-gb/payment/mollie_eps.php | 4 + .../en-gb/payment/mollie_giftcard.php | 4 + .../language/en-gb/payment/mollie_giropay.php | 4 + admin/language/en-gb/payment/mollie_ideal.php | 4 + .../en-gb/payment/mollie_inghomepay.php | 4 + admin/language/en-gb/payment/mollie_kbc.php | 4 + .../language/en-gb/payment/mollie_paypal.php | 4 + .../en-gb/payment/mollie_paysafecard.php | 4 + .../language/en-gb/payment/mollie_sofort.php | 4 + .../english/extension/payment/mollie.php | 120 +- .../extension/payment/mollie_bancontact.php | 4 +- .../extension/payment/mollie_banktransfer.php | 4 +- .../extension/payment/mollie_belfius.php | 4 +- .../extension/payment/mollie_bitcoin.php | 4 +- .../extension/payment/mollie_creditcard.php | 4 +- .../extension/payment/mollie_directdebit.php | 4 +- .../english/extension/payment/mollie_eps.php | 3 +- .../extension/payment/mollie_giftcard.php | 4 +- .../extension/payment/mollie_giropay.php | 3 +- .../extension/payment/mollie_ideal.php | 4 +- .../extension/payment/mollie_inghomepay.php | 4 +- .../english/extension/payment/mollie_kbc.php | 4 +- .../extension/payment/mollie_mistercash.php | 2 + .../extension/payment/mollie_paypal.php | 4 +- .../extension/payment/mollie_paysafecard.php | 4 +- .../extension/payment/mollie_sofort.php | 4 +- admin/language/english/payment/mollie.php | 123 + .../english/payment/mollie_bancontact.php | 4 + .../english/payment/mollie_banktransfer.php | 4 + .../english/payment/mollie_belfius.php | 4 + .../english/payment/mollie_bitcoin.php | 4 + .../english/payment/mollie_creditcard.php | 4 + .../english/payment/mollie_directdebit.php | 4 + admin/language/english/payment/mollie_eps.php | 3 + .../english/payment/mollie_giftcard.php | 4 + .../english/payment/mollie_giropay.php | 3 + .../language/english/payment/mollie_ideal.php | 4 + .../english/payment/mollie_inghomepay.php | 4 + admin/language/english/payment/mollie_kbc.php | 4 + .../english/payment/mollie_paypal.php | 4 + .../english/payment/mollie_paysafecard.php | 4 + .../english/payment/mollie_sofort.php | 4 + .../es-es/extension/payment/mollie.php | 123 +- .../extension/payment/mollie_bancontact.php | 2 + .../extension/payment/mollie_banktransfer.php | 4 +- .../extension/payment/mollie_belfius.php | 4 +- .../extension/payment/mollie_bitcoin.php | 4 +- .../extension/payment/mollie_creditcard.php | 4 +- .../extension/payment/mollie_directdebit.php | 4 +- .../es-es/extension/payment/mollie_eps.php | 3 +- .../extension/payment/mollie_giftcard.php | 4 +- .../extension/payment/mollie_giropay.php | 3 +- .../es-es/extension/payment/mollie_ideal.php | 4 +- .../extension/payment/mollie_inghomepay.php | 4 +- .../es-es/extension/payment/mollie_kbc.php | 4 +- .../extension/payment/mollie_mistercash.php | 4 +- .../es-es/extension/payment/mollie_paypal.php | 4 +- .../extension/payment/mollie_paysafecard.php | 4 +- .../es-es/extension/payment/mollie_sofort.php | 4 +- admin/language/es-es/payment/mollie.php | 127 + .../es-es/payment/mollie_banktransfer.php | 4 + .../language/es-es/payment/mollie_belfius.php | 4 + .../language/es-es/payment/mollie_bitcoin.php | 4 + .../es-es/payment/mollie_creditcard.php | 4 + .../es-es/payment/mollie_directdebit.php | 4 + admin/language/es-es/payment/mollie_eps.php | 3 + .../es-es/payment/mollie_giftcard.php | 4 + .../language/es-es/payment/mollie_giropay.php | 3 + admin/language/es-es/payment/mollie_ideal.php | 4 + .../es-es/payment/mollie_inghomepay.php | 4 + admin/language/es-es/payment/mollie_kbc.php | 4 + .../es-es/payment/mollie_mistercash.php | 4 + .../language/es-es/payment/mollie_paypal.php | 4 + .../es-es/payment/mollie_paysafecard.php | 4 + .../language/es-es/payment/mollie_sofort.php | 4 + .../fr-fr/extension/payment/mollie.php | 121 +- .../extension/payment/mollie_bancontact.php | 4 +- .../extension/payment/mollie_banktransfer.php | 4 +- .../extension/payment/mollie_belfius.php | 4 +- .../extension/payment/mollie_bitcoin.php | 4 +- .../extension/payment/mollie_creditcard.php | 4 +- .../extension/payment/mollie_directdebit.php | 4 +- .../fr-fr/extension/payment/mollie_eps.php | 3 +- .../extension/payment/mollie_giftcard.php | 4 +- .../extension/payment/mollie_giropay.php | 3 +- .../fr-fr/extension/payment/mollie_ideal.php | 4 +- .../extension/payment/mollie_inghomepay.php | 4 +- .../fr-fr/extension/payment/mollie_kbc.php | 4 +- .../extension/payment/mollie_mistercash.php | 2 + .../fr-fr/extension/payment/mollie_paypal.php | 4 +- .../extension/payment/mollie_paysafecard.php | 4 +- .../fr-fr/extension/payment/mollie_sofort.php | 4 +- admin/language/fr-fr/payment/mollie.php | 124 + .../fr-fr/payment/mollie_bancontact.php | 4 + .../fr-fr/payment/mollie_banktransfer.php | 4 + .../language/fr-fr/payment/mollie_belfius.php | 4 + .../language/fr-fr/payment/mollie_bitcoin.php | 4 + .../fr-fr/payment/mollie_creditcard.php | 4 + .../fr-fr/payment/mollie_directdebit.php | 4 + admin/language/fr-fr/payment/mollie_eps.php | 3 + .../fr-fr/payment/mollie_giftcard.php | 4 + .../language/fr-fr/payment/mollie_giropay.php | 3 + admin/language/fr-fr/payment/mollie_ideal.php | 4 + .../fr-fr/payment/mollie_inghomepay.php | 4 + admin/language/fr-fr/payment/mollie_kbc.php | 4 + .../language/fr-fr/payment/mollie_paypal.php | 4 + .../fr-fr/payment/mollie_paysafecard.php | 4 + .../language/fr-fr/payment/mollie_sofort.php | 4 + .../french/extension/payment/mollie.php | 121 +- .../extension/payment/mollie_bancontact.php | 4 +- .../extension/payment/mollie_banktransfer.php | 4 +- .../extension/payment/mollie_belfius.php | 4 +- .../extension/payment/mollie_bitcoin.php | 4 +- .../extension/payment/mollie_creditcard.php | 4 +- .../extension/payment/mollie_directdebit.php | 4 +- .../french/extension/payment/mollie_eps.php | 4 +- .../extension/payment/mollie_giftcard.php | 4 +- .../extension/payment/mollie_giropay.php | 4 +- .../french/extension/payment/mollie_ideal.php | 4 +- .../extension/payment/mollie_inghomepay.php | 4 +- .../french/extension/payment/mollie_kbc.php | 4 +- .../extension/payment/mollie_mistercash.php | 2 + .../extension/payment/mollie_paypal.php | 4 +- .../extension/payment/mollie_paysafecard.php | 4 +- .../extension/payment/mollie_sofort.php | 4 +- admin/language/french/payment/mollie.php | 124 + .../french/payment/mollie_bancontact.php | 4 + .../french/payment/mollie_banktransfer.php | 4 + .../french/payment/mollie_belfius.php | 4 + .../french/payment/mollie_bitcoin.php | 4 + .../french/payment/mollie_creditcard.php | 4 + .../french/payment/mollie_directdebit.php | 4 + admin/language/french/payment/mollie_eps.php | 4 + .../french/payment/mollie_giftcard.php | 4 + .../french/payment/mollie_giropay.php | 4 + .../language/french/payment/mollie_ideal.php | 4 + .../french/payment/mollie_inghomepay.php | 4 + admin/language/french/payment/mollie_kbc.php | 4 + .../language/french/payment/mollie_paypal.php | 4 + .../french/payment/mollie_paysafecard.php | 4 + .../language/french/payment/mollie_sofort.php | 4 + .../german/extension/payment/mollie.php | 122 +- .../extension/payment/mollie_bancontact.php | 2 + .../extension/payment/mollie_banktransfer.php | 4 +- .../extension/payment/mollie_belfius.php | 4 +- .../extension/payment/mollie_bitcoin.php | 4 +- .../extension/payment/mollie_creditcard.php | 4 +- .../extension/payment/mollie_directdebit.php | 4 +- .../german/extension/payment/mollie_eps.php | 3 +- .../extension/payment/mollie_giftcard.php | 4 +- .../extension/payment/mollie_giropay.php | 3 +- .../german/extension/payment/mollie_ideal.php | 4 +- .../extension/payment/mollie_inghomepay.php | 4 +- .../german/extension/payment/mollie_kbc.php | 4 +- .../extension/payment/mollie_mistercash.php | 4 +- .../extension/payment/mollie_paypal.php | 4 +- .../extension/payment/mollie_paysafecard.php | 4 +- .../extension/payment/mollie_sofort.php | 4 +- admin/language/german/payment/mollie.php | 126 + .../german/payment/mollie_banktransfer.php | 4 + .../german/payment/mollie_belfius.php | 4 + .../german/payment/mollie_bitcoin.php | 4 + .../german/payment/mollie_creditcard.php | 4 + .../german/payment/mollie_directdebit.php | 4 + admin/language/german/payment/mollie_eps.php | 3 + .../german/payment/mollie_giftcard.php | 4 + .../german/payment/mollie_giropay.php | 3 + .../language/german/payment/mollie_ideal.php | 4 + .../german/payment/mollie_inghomepay.php | 4 + admin/language/german/payment/mollie_kbc.php | 4 + .../german/payment/mollie_mistercash.php | 4 + .../language/german/payment/mollie_paypal.php | 4 + .../german/payment/mollie_paysafecard.php | 4 + .../language/german/payment/mollie_sofort.php | 4 + .../nl-nl/extension/payment/mollie.php | 122 +- .../extension/payment/mollie_bancontact.php | 4 +- .../extension/payment/mollie_banktransfer.php | 4 +- .../extension/payment/mollie_belfius.php | 4 +- .../extension/payment/mollie_bitcoin.php | 4 +- .../extension/payment/mollie_creditcard.php | 4 +- .../extension/payment/mollie_directdebit.php | 4 +- .../nl-nl/extension/payment/mollie_eps.php | 3 +- .../extension/payment/mollie_giftcard.php | 4 +- .../extension/payment/mollie_giropay.php | 3 +- .../nl-nl/extension/payment/mollie_ideal.php | 4 +- .../extension/payment/mollie_inghomepay.php | 4 +- .../nl-nl/extension/payment/mollie_kbc.php | 4 +- .../extension/payment/mollie_mistercash.php | 2 + .../nl-nl/extension/payment/mollie_paypal.php | 4 +- .../extension/payment/mollie_paysafecard.php | 4 +- .../nl-nl/extension/payment/mollie_sofort.php | 4 +- admin/language/nl-nl/payment/mollie.php | 125 + .../nl-nl/payment/mollie_bancontact.php | 4 + .../nl-nl/payment/mollie_banktransfer.php | 4 + .../language/nl-nl/payment/mollie_belfius.php | 4 + .../language/nl-nl/payment/mollie_bitcoin.php | 4 + .../nl-nl/payment/mollie_creditcard.php | 4 + .../nl-nl/payment/mollie_directdebit.php | 4 + admin/language/nl-nl/payment/mollie_eps.php | 3 + .../nl-nl/payment/mollie_giftcard.php | 4 + .../language/nl-nl/payment/mollie_giropay.php | 3 + admin/language/nl-nl/payment/mollie_ideal.php | 4 + .../nl-nl/payment/mollie_inghomepay.php | 4 + admin/language/nl-nl/payment/mollie_kbc.php | 4 + .../language/nl-nl/payment/mollie_paypal.php | 4 + .../nl-nl/payment/mollie_paysafecard.php | 4 + .../language/nl-nl/payment/mollie_sofort.php | 4 + .../spanish/extension/payment/mollie.php | 123 +- .../extension/payment/mollie_bancontact.php | 2 + .../extension/payment/mollie_banktransfer.php | 4 +- .../extension/payment/mollie_belfius.php | 4 +- .../extension/payment/mollie_bitcoin.php | 4 +- .../extension/payment/mollie_creditcard.php | 4 +- .../extension/payment/mollie_directdebit.php | 4 +- .../spanish/extension/payment/mollie_eps.php | 3 +- .../extension/payment/mollie_giftcard.php | 4 +- .../extension/payment/mollie_giropay.php | 3 +- .../extension/payment/mollie_ideal.php | 4 +- .../extension/payment/mollie_inghomepay.php | 4 +- .../spanish/extension/payment/mollie_kbc.php | 4 +- .../extension/payment/mollie_mistercash.php | 4 +- .../extension/payment/mollie_paypal.php | 4 +- .../extension/payment/mollie_paysafecard.php | 4 +- .../extension/payment/mollie_sofort.php | 4 +- admin/language/spanish/payment/mollie.php | 126 + .../spanish/payment/mollie_banktransfer.php | 4 + .../spanish/payment/mollie_belfius.php | 4 + .../spanish/payment/mollie_bitcoin.php | 4 + .../spanish/payment/mollie_creditcard.php | 4 + .../spanish/payment/mollie_directdebit.php | 4 + admin/language/spanish/payment/mollie_eps.php | 3 + .../spanish/payment/mollie_giftcard.php | 4 + .../spanish/payment/mollie_giropay.php | 3 + .../language/spanish/payment/mollie_ideal.php | 4 + .../spanish/payment/mollie_inghomepay.php | 4 + admin/language/spanish/payment/mollie_kbc.php | 4 + .../spanish/payment/mollie_mistercash.php | 4 + .../spanish/payment/mollie_paypal.php | 4 + .../spanish/payment/mollie_paysafecard.php | 4 + .../spanish/payment/mollie_sofort.php | 4 + .../template/extension/payment/mollie.tpl | 399 +- .../template/extension/payment/mollie.twig | 390 -- .../template/extension/payment/mollie_1.tpl | 390 +- admin/view/template/payment/mollie.tpl | 396 ++ admin/view/template/payment/mollie_1.tpl | 393 ++ .../extension/payment/mollie-api-client | 1 - .../extension/payment/mollie_bancontact.php | 6 +- .../extension/payment/mollie_banktransfer.php | 16 +- .../extension/payment/mollie_belfius.php | 6 +- .../extension/payment/mollie_bitcoin.php | 5 +- .../extension/payment/mollie_creditcard.php | 5 +- .../extension/payment/mollie_directdebit.php | 5 +- .../extension/payment/mollie_eps.php | 5 +- .../extension/payment/mollie_giftcard.php | 5 +- .../extension/payment/mollie_giropay.php | 5 +- .../extension/payment/mollie_ideal.php | 6 +- .../extension/payment/mollie_inghomepay.php | 5 +- .../extension/payment/mollie_kbc.php | 6 +- .../extension/payment/mollie_paypal.php | 6 +- .../extension/payment/mollie_paysafecard.php | 5 +- .../extension/payment/mollie_sofort.php | 6 +- .../src/CompatibilityChecker.php | 47 + .../src/Endpoints/CustomerEndpoint.php | 88 + .../Endpoints/CustomerPaymentsEndpoint.php | 60 + .../src/Endpoints/EndpointAbstract.php | 180 + .../src/Endpoints/InvoiceEndpoint.php | 72 + .../src/Endpoints/MandateEndpoint.php | 81 + .../src/Endpoints/MethodEndpoint.php | 59 + .../src/Endpoints/PaymentEndpoint.php | 132 + .../src/Endpoints/PaymentRefundEndpoint.php | 44 + .../src/Endpoints/ProfileEndpoint.php | 89 + .../src/Endpoints/RefundEndpoint.php | 46 + .../src/Endpoints/SettlementsEndpoint.php | 80 + .../src/Endpoints/SubscriptionEndpoint.php | 84 + .../src/Exceptions/ApiException.php | 48 + .../src/Exceptions/IncompatiblePlatform.php | 11 + .../mollie-api-client/src/MollieApiClient.php | 356 ++ .../src/Resources/BaseCollection.php | 30 + .../src/Resources/BaseResource.php | 19 + .../src/Resources/Chargeback.php | 48 + .../src/Resources/ChargebackCollection.php | 21 + .../src/Resources/CursorCollection.php | 60 + .../src/Resources/Customer.php | 187 + .../src/Resources/CustomerCollection.php | 21 + .../src/Resources/Invoice.php | 98 + .../src/Resources/InvoiceCollection.php | 21 + .../src/Resources/Issuer.php | 32 + .../src/Resources/IssuerCollection.php | 14 + .../src/Resources/Mandate.php | 85 + .../src/Resources/MandateCollection.php | 21 + .../src/Resources/Method.php | 49 + .../src/Resources/MethodCollection.php | 14 + .../src/Resources/Payment.php | 394 ++ .../src/Resources/PaymentCollection.php | 21 + .../src/Resources/Profile.php | 170 + .../src/Resources/ProfileCollection.php | 21 + .../src/Resources/Refund.php | 106 + .../src/Resources/RefundCollection.php | 21 + .../src/Resources/ResourceFactory.php | 22 + .../src/Resources/Settlement.php | 145 + .../src/Resources/SettlementCollection.php | 21 + .../src/Resources/Subscription.php | 150 + .../src/Resources/SubscriptionCollection.php | 21 + .../src/Types/InvoiceStatus.php | 19 + .../src/Types/MandateMethod.php | 8 + .../src/Types/MandateStatus.php | 10 + .../src/Types/PaymentMethod.php | 72 + .../src/Types/PaymentStatus.php | 31 + .../src/Types/ProfileStatus.php | 19 + .../src/Types/RefundStatus.php | 23 + .../src/Types/SequenceType.php | 15 + .../src/Types/SettlementStatus.php | 23 + .../src/Types/SubscriptionStatus.php | 14 + .../mollie-api-client/vendor/autoload.php | 25 + .../vendor/composer-autoload.php | 7 + .../vendor/composer/ClassLoader.php | 445 +++ .../mollie-api-client/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 159 + .../vendor/composer/autoload_files.php | 12 + .../vendor/composer/autoload_namespaces.php | 9 + .../vendor/composer/autoload_psr4.php | 16 + .../vendor/composer/autoload_real.php | 61 + .../vendor/composer/autoload_static.php | 224 ++ .../vendor/composer/ca-bundle/LICENSE | 19 + .../vendor/composer/ca-bundle/README.md | 85 + .../vendor/composer/ca-bundle/composer.json | 54 + .../vendor/composer/ca-bundle/res/cacert.pem | 3314 +++++++++++++++++ .../composer/ca-bundle/src/CaBundle.php | 260 ++ .../vendor/composer/installed.json | 299 ++ .../vendor/guzzlehttp/guzzle/CHANGELOG.md | 1287 +++++++ .../vendor/guzzlehttp/guzzle/LICENSE | 19 + .../vendor/guzzlehttp/guzzle/README.md | 91 + .../vendor/guzzlehttp/guzzle/UPGRADING.md | 1203 ++++++ .../vendor/guzzlehttp/guzzle/composer.json | 54 + .../vendor/guzzlehttp/guzzle/src/Client.php | 347 ++ .../guzzlehttp/guzzle/src/ClientInterface.php | 79 + .../guzzle/src/Cookie/CookieJar.php | 245 ++ .../guzzle/src/Cookie/CookieJarInterface.php | 76 + .../guzzle/src/Cookie/FileCookieJar.php | 83 + .../guzzle/src/Cookie/SessionCookieJar.php | 66 + .../guzzle/src/Cookie/SetCookie.php | 343 ++ .../src/Exception/BadResponseException.php | 19 + .../guzzle/src/Exception/ClientException.php | 10 + .../guzzle/src/Exception/ConnectException.php | 31 + .../guzzle/src/Exception/GuzzleException.php | 16 + .../guzzle/src/Exception/RequestException.php | 165 + .../guzzle/src/Exception/SeekException.php | 25 + .../guzzle/src/Exception/ServerException.php | 10 + .../Exception/TooManyRedirectsException.php | 7 + .../src/Exception/TransferException.php | 7 + .../guzzle/src/Handler/CurlFactory.php | 425 +++ .../src/Handler/CurlFactoryInterface.php | 26 + .../guzzle/src/Handler/CurlHandler.php | 39 + .../guzzle/src/Handler/CurlMultiHandler.php | 160 + .../guzzle/src/Handler/EasyHandle.php | 67 + .../guzzle/src/Handler/MockHandler.php | 152 + .../guzzlehttp/guzzle/src/Handler/Proxy.php | 46 + .../guzzle/src/Handler/StreamHandler.php | 376 ++ .../guzzlehttp/guzzle/src/HandlerStack.php | 239 ++ .../guzzle/src/MessageFormatter.php | 151 + .../guzzlehttp/guzzle/src/Middleware.php | 222 ++ .../vendor/guzzlehttp/guzzle/src/Pool.php | 106 + .../guzzle/src/PrepareBodyMiddleware.php | 86 + .../guzzle/src/RedirectMiddleware.php | 160 + .../guzzlehttp/guzzle/src/RequestOptions.php | 228 ++ .../guzzlehttp/guzzle/src/RetryMiddleware.php | 84 + .../guzzlehttp/guzzle/src/TransferStats.php | 110 + .../guzzlehttp/guzzle/src/UriTemplate.php | 191 + .../guzzlehttp/guzzle/src/functions.php | 294 ++ .../guzzle/src/functions_include.php | 8 + .../vendor/guzzlehttp/promises/CHANGELOG.md | 65 + .../vendor/guzzlehttp/promises/LICENSE | 19 + .../vendor/guzzlehttp/promises/Makefile | 13 + .../vendor/guzzlehttp/promises/README.md | 504 +++ .../vendor/guzzlehttp/promises/composer.json | 38 + .../promises/src/AggregateException.php | 14 + .../promises/src/CancellationException.php | 10 + .../guzzlehttp/promises/src/Coroutine.php | 135 + .../guzzlehttp/promises/src/EachPromise.php | 190 + .../promises/src/FulfilledPromise.php | 69 + .../guzzlehttp/promises/src/Promise.php | 231 ++ .../promises/src/PromiseInterface.php | 84 + .../promises/src/PromisorInterface.php | 16 + .../promises/src/RejectedPromise.php | 74 + .../promises/src/RejectionException.php | 40 + .../guzzlehttp/promises/src/TaskQueue.php | 62 + .../promises/src/TaskQueueInterface.php | 24 + .../guzzlehttp/promises/src/functions.php | 387 ++ .../promises/src/functions_include.php | 8 + .../vendor/guzzlehttp/psr7/CHANGELOG.md | 110 + .../vendor/guzzlehttp/psr7/LICENSE | 19 + .../vendor/guzzlehttp/psr7/README.md | 739 ++++ .../vendor/guzzlehttp/psr7/composer.json | 49 + .../guzzlehttp/psr7/src/AppendStream.php | 196 + .../guzzlehttp/psr7/src/BufferStream.php | 115 + .../guzzlehttp/psr7/src/CachingStream.php | 115 + .../guzzlehttp/psr7/src/DroppingStream.php | 36 + .../vendor/guzzlehttp/psr7/src/FnStream.php | 124 + .../guzzlehttp/psr7/src/InflateStream.php | 48 + .../guzzlehttp/psr7/src/LazyOpenStream.php | 35 + .../guzzlehttp/psr7/src/LimitStream.php | 128 + .../guzzlehttp/psr7/src/MessageTrait.php | 150 + .../guzzlehttp/psr7/src/MultipartStream.php | 123 + .../guzzlehttp/psr7/src/NoSeekStream.php | 20 + .../vendor/guzzlehttp/psr7/src/PumpStream.php | 140 + .../vendor/guzzlehttp/psr7/src/Request.php | 112 + .../vendor/guzzlehttp/psr7/src/Response.php | 58 + .../guzzlehttp/psr7/src/ServerRequest.php | 289 ++ .../vendor/guzzlehttp/psr7/src/Stream.php | 200 + .../psr7/src/StreamDecoratorTrait.php | 128 + .../guzzlehttp/psr7/src/StreamWrapper.php | 82 + .../guzzlehttp/psr7/src/UploadedFile.php | 244 ++ .../vendor/guzzlehttp/psr7/src/Uri.php | 555 +++ .../guzzlehttp/psr7/src/UriNormalizer.php | 179 + .../guzzlehttp/psr7/src/UriResolver.php | 190 + .../vendor/guzzlehttp/psr7/src/functions.php | 614 +++ .../guzzlehttp/psr7/src/functions_include.php | 8 + .../vendor/psr/http-message/CHANGELOG.md | 36 + .../vendor/psr/http-message/LICENSE | 19 + .../vendor/psr/http-message/README.md | 13 + .../vendor/psr/http-message/composer.json | 33 + .../psr/http-message/src/MessageInterface.php | 177 + .../psr/http-message/src/RequestInterface.php | 124 + .../http-message/src/ResponseInterface.php | 66 + .../src/ServerRequestInterface.php | 249 ++ .../psr/http-message/src/StreamInterface.php | 144 + .../src/UploadedFileInterface.php | 118 + .../psr/http-message/src/UriInterface.php | 309 ++ .../{extension => }/payment/mollie/base.php | 48 +- .../{extension => }/payment/mollie/helper.php | 8 +- .../controller/payment/mollie_bancontact.php | 7 + .../payment/mollie_banktransfer.php | 17 + catalog/controller/payment/mollie_belfius.php | 7 + catalog/controller/payment/mollie_bitcoin.php | 7 + .../controller/payment/mollie_creditcard.php | 7 + .../controller/payment/mollie_directdebit.php | 7 + catalog/controller/payment/mollie_eps.php | 6 + .../controller/payment/mollie_giftcard.php | 7 + catalog/controller/payment/mollie_giropay.php | 6 + catalog/controller/payment/mollie_ideal.php | 7 + .../controller/payment/mollie_inghomepay.php | 7 + catalog/controller/payment/mollie_kbc.php | 7 + catalog/controller/payment/mollie_paypal.php | 7 + .../controller/payment/mollie_paysafecard.php | 7 + catalog/controller/payment/mollie_sofort.php | 7 + .../de-de/extension/payment/mollie.php | 83 +- catalog/language/de-de/payment/mollie.php | 83 + .../dutch/extension/payment/mollie.php | 83 +- catalog/language/dutch/payment/mollie.php | 83 + .../en-gb/extension/payment/mollie.php | 83 +- catalog/language/en-gb/payment/mollie.php | 83 + .../english/extension/payment/mollie.php | 83 +- catalog/language/english/payment/mollie.php | 83 + .../es-es/extension/payment/mollie.php | 83 +- catalog/language/es-es/payment/mollie.php | 83 + .../fr-fr/extension/payment/mollie.php | 83 +- catalog/language/fr-fr/payment/mollie.php | 83 + .../french/extension/payment/mollie.php | 83 +- catalog/language/french/payment/mollie.php | 83 + .../german/extension/payment/mollie.php | 83 +- catalog/language/german/payment/mollie.php | 83 + .../nl-nl/extension/payment/mollie.php | 83 +- catalog/language/nl-nl/payment/mollie.php | 83 + .../spanish/extension/payment/mollie.php | 83 +- catalog/language/spanish/payment/mollie.php | 83 + .../extension/payment/mollie_bancontact.php | 6 +- .../extension/payment/mollie_banktransfer.php | 6 +- .../extension/payment/mollie_belfius.php | 6 +- .../extension/payment/mollie_bitcoin.php | 6 +- .../extension/payment/mollie_creditcard.php | 5 +- .../extension/payment/mollie_directdebit.php | 6 +- .../model/extension/payment/mollie_eps.php | 5 +- .../extension/payment/mollie_giftcard.php | 6 +- .../extension/payment/mollie_giropay.php | 5 +- .../model/extension/payment/mollie_ideal.php | 6 +- .../extension/payment/mollie_inghomepay.php | 6 +- .../model/extension/payment/mollie_kbc.php | 6 +- .../model/extension/payment/mollie_paypal.php | 6 +- .../extension/payment/mollie_paysafecard.php | 6 +- .../model/extension/payment/mollie_sofort.php | 6 +- .../{extension => }/payment/mollie/base.php | 13 +- catalog/model/payment/mollie_bancontact.php | 7 + catalog/model/payment/mollie_banktransfer.php | 7 + catalog/model/payment/mollie_belfius.php | 7 + catalog/model/payment/mollie_bitcoin.php | 7 + catalog/model/payment/mollie_creditcard.php | 7 + catalog/model/payment/mollie_directdebit.php | 7 + catalog/model/payment/mollie_eps.php | 6 + catalog/model/payment/mollie_giftcard.php | 7 + catalog/model/payment/mollie_giropay.php | 6 + catalog/model/payment/mollie_ideal.php | 7 + catalog/model/payment/mollie_inghomepay.php | 7 + catalog/model/payment/mollie_kbc.php | 7 + catalog/model/payment/mollie_paypal.php | 7 + catalog/model/payment/mollie_paysafecard.php | 7 + catalog/model/payment/mollie_sofort.php | 7 + .../payment/mollie_checkout_form.tpl | 59 +- .../payment/mollie_checkout_form.twig | 59 +- .../extension/payment/mollie_return.tpl | 36 +- .../extension/payment/mollie_return.twig | 36 +- .../template/payment/mollie_checkout_form.tpl | 56 + .../payment/mollie_checkout_form.twig | 56 + .../template/payment/mollie_return.tpl | 33 + .../template/payment/mollie_return.twig | 33 + system/comercia/arrayHelper.php | 48 + system/comercia/arrayObject.php | 62 + system/comercia/breadcrumb.php | 37 + system/comercia/component/breadcrumb.php | 5 + system/comercia/component/selectbox.php | 13 + system/comercia/component/variables.php | 7 + system/comercia/config.php | 64 + system/comercia/controllerHelper.php | 10 + .../comercia/controllers/moduleSettings.php | 94 + system/comercia/dateTimeHelper.php | 24 + system/comercia/db.php | 163 + system/comercia/document.php | 78 + system/comercia/fakeController.php | 13 + system/comercia/filesystem.php | 28 + system/comercia/form.php | 176 + system/comercia/html.php | 37 + system/comercia/http.php | 29 + system/comercia/image.php | 67 + system/comercia/info.php | 42 + system/comercia/language.php | 34 + system/comercia/load.php | 359 ++ system/comercia/log.php | 8 + system/comercia/patch.php | 89 + system/comercia/patchTable.php | 171 + system/comercia/request.php | 126 + system/comercia/response.php | 66 + system/comercia/route.php | 24 + system/comercia/selectboxOptions.php | 30 + system/comercia/stringHelper.php | 36 + system/comercia/twig.php | 45 + system/comercia/url.php | 91 + system/comercia/util.php | 254 ++ system/comercia/version.php | 26 + vqmod/xml/comercia_util.xml | 81 + 658 files changed, 30836 insertions(+), 4280 deletions(-) rename admin/controller/{extension => }/payment/mollie/base.php (53%) create mode 100644 admin/controller/payment/mollie_bancontact.php create mode 100644 admin/controller/payment/mollie_banktransfer.php create mode 100644 admin/controller/payment/mollie_belfius.php create mode 100644 admin/controller/payment/mollie_bitcoin.php create mode 100644 admin/controller/payment/mollie_creditcard.php create mode 100644 admin/controller/payment/mollie_directdebit.php create mode 100644 admin/controller/payment/mollie_eps.php create mode 100644 admin/controller/payment/mollie_giftcard.php create mode 100644 admin/controller/payment/mollie_giropay.php create mode 100644 admin/controller/payment/mollie_ideal.php create mode 100644 admin/controller/payment/mollie_inghomepay.php create mode 100644 admin/controller/payment/mollie_kbc.php create mode 100644 admin/controller/payment/mollie_paypal.php create mode 100644 admin/controller/payment/mollie_paysafecard.php create mode 100644 admin/controller/payment/mollie_sofort.php create mode 100644 admin/language/de-de/payment/mollie.php create mode 100644 admin/language/de-de/payment/mollie_banktransfer.php create mode 100644 admin/language/de-de/payment/mollie_belfius.php create mode 100644 admin/language/de-de/payment/mollie_bitcoin.php create mode 100644 admin/language/de-de/payment/mollie_creditcard.php create mode 100644 admin/language/de-de/payment/mollie_directdebit.php create mode 100644 admin/language/de-de/payment/mollie_eps.php create mode 100644 admin/language/de-de/payment/mollie_giftcard.php create mode 100644 admin/language/de-de/payment/mollie_giropay.php create mode 100644 admin/language/de-de/payment/mollie_ideal.php create mode 100644 admin/language/de-de/payment/mollie_inghomepay.php create mode 100644 admin/language/de-de/payment/mollie_kbc.php create mode 100644 admin/language/de-de/payment/mollie_mistercash.php create mode 100644 admin/language/de-de/payment/mollie_paypal.php create mode 100644 admin/language/de-de/payment/mollie_paysafecard.php create mode 100644 admin/language/de-de/payment/mollie_sofort.php create mode 100644 admin/language/dutch/extension/payment/mollie_mistercash.php create mode 100644 admin/language/dutch/payment/mollie.php create mode 100644 admin/language/dutch/payment/mollie_bancontact.php create mode 100644 admin/language/dutch/payment/mollie_banktransfer.php create mode 100644 admin/language/dutch/payment/mollie_belfius.php create mode 100644 admin/language/dutch/payment/mollie_bitcoin.php create mode 100644 admin/language/dutch/payment/mollie_creditcard.php create mode 100644 admin/language/dutch/payment/mollie_directdebit.php create mode 100644 admin/language/dutch/payment/mollie_eps.php create mode 100644 admin/language/dutch/payment/mollie_giftcard.php create mode 100644 admin/language/dutch/payment/mollie_giropay.php create mode 100644 admin/language/dutch/payment/mollie_ideal.php create mode 100644 admin/language/dutch/payment/mollie_inghomepay.php create mode 100644 admin/language/dutch/payment/mollie_kbc.php create mode 100644 admin/language/dutch/payment/mollie_paypal.php create mode 100644 admin/language/dutch/payment/mollie_paysafecard.php create mode 100644 admin/language/dutch/payment/mollie_sofort.php create mode 100644 admin/language/en-gb/extension/payment/mollie_mistercash.php create mode 100644 admin/language/en-gb/payment/mollie.php create mode 100644 admin/language/en-gb/payment/mollie_bancontact.php create mode 100644 admin/language/en-gb/payment/mollie_banktransfer.php create mode 100644 admin/language/en-gb/payment/mollie_belfius.php create mode 100644 admin/language/en-gb/payment/mollie_bitcoin.php create mode 100644 admin/language/en-gb/payment/mollie_creditcard.php create mode 100644 admin/language/en-gb/payment/mollie_directdebit.php create mode 100644 admin/language/en-gb/payment/mollie_eps.php create mode 100644 admin/language/en-gb/payment/mollie_giftcard.php create mode 100644 admin/language/en-gb/payment/mollie_giropay.php create mode 100644 admin/language/en-gb/payment/mollie_ideal.php create mode 100644 admin/language/en-gb/payment/mollie_inghomepay.php create mode 100644 admin/language/en-gb/payment/mollie_kbc.php create mode 100644 admin/language/en-gb/payment/mollie_paypal.php create mode 100644 admin/language/en-gb/payment/mollie_paysafecard.php create mode 100644 admin/language/en-gb/payment/mollie_sofort.php create mode 100644 admin/language/english/extension/payment/mollie_mistercash.php create mode 100644 admin/language/english/payment/mollie.php create mode 100644 admin/language/english/payment/mollie_bancontact.php create mode 100644 admin/language/english/payment/mollie_banktransfer.php create mode 100644 admin/language/english/payment/mollie_belfius.php create mode 100644 admin/language/english/payment/mollie_bitcoin.php create mode 100644 admin/language/english/payment/mollie_creditcard.php create mode 100644 admin/language/english/payment/mollie_directdebit.php create mode 100644 admin/language/english/payment/mollie_eps.php create mode 100644 admin/language/english/payment/mollie_giftcard.php create mode 100644 admin/language/english/payment/mollie_giropay.php create mode 100644 admin/language/english/payment/mollie_ideal.php create mode 100644 admin/language/english/payment/mollie_inghomepay.php create mode 100644 admin/language/english/payment/mollie_kbc.php create mode 100644 admin/language/english/payment/mollie_paypal.php create mode 100644 admin/language/english/payment/mollie_paysafecard.php create mode 100644 admin/language/english/payment/mollie_sofort.php create mode 100644 admin/language/es-es/extension/payment/mollie_bancontact.php create mode 100644 admin/language/es-es/payment/mollie.php create mode 100644 admin/language/es-es/payment/mollie_banktransfer.php create mode 100644 admin/language/es-es/payment/mollie_belfius.php create mode 100644 admin/language/es-es/payment/mollie_bitcoin.php create mode 100644 admin/language/es-es/payment/mollie_creditcard.php create mode 100644 admin/language/es-es/payment/mollie_directdebit.php create mode 100644 admin/language/es-es/payment/mollie_eps.php create mode 100644 admin/language/es-es/payment/mollie_giftcard.php create mode 100644 admin/language/es-es/payment/mollie_giropay.php create mode 100644 admin/language/es-es/payment/mollie_ideal.php create mode 100644 admin/language/es-es/payment/mollie_inghomepay.php create mode 100644 admin/language/es-es/payment/mollie_kbc.php create mode 100644 admin/language/es-es/payment/mollie_mistercash.php create mode 100644 admin/language/es-es/payment/mollie_paypal.php create mode 100644 admin/language/es-es/payment/mollie_paysafecard.php create mode 100644 admin/language/es-es/payment/mollie_sofort.php create mode 100644 admin/language/fr-fr/extension/payment/mollie_mistercash.php create mode 100644 admin/language/fr-fr/payment/mollie.php create mode 100644 admin/language/fr-fr/payment/mollie_bancontact.php create mode 100644 admin/language/fr-fr/payment/mollie_banktransfer.php create mode 100644 admin/language/fr-fr/payment/mollie_belfius.php create mode 100644 admin/language/fr-fr/payment/mollie_bitcoin.php create mode 100644 admin/language/fr-fr/payment/mollie_creditcard.php create mode 100644 admin/language/fr-fr/payment/mollie_directdebit.php create mode 100644 admin/language/fr-fr/payment/mollie_eps.php create mode 100644 admin/language/fr-fr/payment/mollie_giftcard.php create mode 100644 admin/language/fr-fr/payment/mollie_giropay.php create mode 100644 admin/language/fr-fr/payment/mollie_ideal.php create mode 100644 admin/language/fr-fr/payment/mollie_inghomepay.php create mode 100644 admin/language/fr-fr/payment/mollie_kbc.php create mode 100644 admin/language/fr-fr/payment/mollie_paypal.php create mode 100644 admin/language/fr-fr/payment/mollie_paysafecard.php create mode 100644 admin/language/fr-fr/payment/mollie_sofort.php create mode 100644 admin/language/french/extension/payment/mollie_mistercash.php create mode 100644 admin/language/french/payment/mollie.php create mode 100644 admin/language/french/payment/mollie_bancontact.php create mode 100644 admin/language/french/payment/mollie_banktransfer.php create mode 100644 admin/language/french/payment/mollie_belfius.php create mode 100644 admin/language/french/payment/mollie_bitcoin.php create mode 100644 admin/language/french/payment/mollie_creditcard.php create mode 100644 admin/language/french/payment/mollie_directdebit.php create mode 100644 admin/language/french/payment/mollie_eps.php create mode 100644 admin/language/french/payment/mollie_giftcard.php create mode 100644 admin/language/french/payment/mollie_giropay.php create mode 100644 admin/language/french/payment/mollie_ideal.php create mode 100644 admin/language/french/payment/mollie_inghomepay.php create mode 100644 admin/language/french/payment/mollie_kbc.php create mode 100644 admin/language/french/payment/mollie_paypal.php create mode 100644 admin/language/french/payment/mollie_paysafecard.php create mode 100644 admin/language/french/payment/mollie_sofort.php create mode 100644 admin/language/german/extension/payment/mollie_bancontact.php create mode 100644 admin/language/german/payment/mollie.php create mode 100644 admin/language/german/payment/mollie_banktransfer.php create mode 100644 admin/language/german/payment/mollie_belfius.php create mode 100644 admin/language/german/payment/mollie_bitcoin.php create mode 100644 admin/language/german/payment/mollie_creditcard.php create mode 100644 admin/language/german/payment/mollie_directdebit.php create mode 100644 admin/language/german/payment/mollie_eps.php create mode 100644 admin/language/german/payment/mollie_giftcard.php create mode 100644 admin/language/german/payment/mollie_giropay.php create mode 100644 admin/language/german/payment/mollie_ideal.php create mode 100644 admin/language/german/payment/mollie_inghomepay.php create mode 100644 admin/language/german/payment/mollie_kbc.php create mode 100644 admin/language/german/payment/mollie_mistercash.php create mode 100644 admin/language/german/payment/mollie_paypal.php create mode 100644 admin/language/german/payment/mollie_paysafecard.php create mode 100644 admin/language/german/payment/mollie_sofort.php create mode 100644 admin/language/nl-nl/extension/payment/mollie_mistercash.php create mode 100644 admin/language/nl-nl/payment/mollie.php create mode 100644 admin/language/nl-nl/payment/mollie_bancontact.php create mode 100644 admin/language/nl-nl/payment/mollie_banktransfer.php create mode 100644 admin/language/nl-nl/payment/mollie_belfius.php create mode 100644 admin/language/nl-nl/payment/mollie_bitcoin.php create mode 100644 admin/language/nl-nl/payment/mollie_creditcard.php create mode 100644 admin/language/nl-nl/payment/mollie_directdebit.php create mode 100644 admin/language/nl-nl/payment/mollie_eps.php create mode 100644 admin/language/nl-nl/payment/mollie_giftcard.php create mode 100644 admin/language/nl-nl/payment/mollie_giropay.php create mode 100644 admin/language/nl-nl/payment/mollie_ideal.php create mode 100644 admin/language/nl-nl/payment/mollie_inghomepay.php create mode 100644 admin/language/nl-nl/payment/mollie_kbc.php create mode 100644 admin/language/nl-nl/payment/mollie_paypal.php create mode 100644 admin/language/nl-nl/payment/mollie_paysafecard.php create mode 100644 admin/language/nl-nl/payment/mollie_sofort.php create mode 100644 admin/language/spanish/extension/payment/mollie_bancontact.php create mode 100644 admin/language/spanish/payment/mollie.php create mode 100644 admin/language/spanish/payment/mollie_banktransfer.php create mode 100644 admin/language/spanish/payment/mollie_belfius.php create mode 100644 admin/language/spanish/payment/mollie_bitcoin.php create mode 100644 admin/language/spanish/payment/mollie_creditcard.php create mode 100644 admin/language/spanish/payment/mollie_directdebit.php create mode 100644 admin/language/spanish/payment/mollie_eps.php create mode 100644 admin/language/spanish/payment/mollie_giftcard.php create mode 100644 admin/language/spanish/payment/mollie_giropay.php create mode 100644 admin/language/spanish/payment/mollie_ideal.php create mode 100644 admin/language/spanish/payment/mollie_inghomepay.php create mode 100644 admin/language/spanish/payment/mollie_kbc.php create mode 100644 admin/language/spanish/payment/mollie_mistercash.php create mode 100644 admin/language/spanish/payment/mollie_paypal.php create mode 100644 admin/language/spanish/payment/mollie_paysafecard.php create mode 100644 admin/language/spanish/payment/mollie_sofort.php delete mode 100644 admin/view/template/extension/payment/mollie.twig create mode 100644 admin/view/template/payment/mollie.tpl create mode 100644 admin/view/template/payment/mollie_1.tpl delete mode 160000 catalog/controller/extension/payment/mollie-api-client create mode 100644 catalog/controller/payment/mollie-api-client/src/CompatibilityChecker.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerPaymentsEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/EndpointAbstract.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/InvoiceEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/MandateEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/MethodEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentRefundEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/ProfileEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/RefundEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/SettlementsEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/SubscriptionEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Exceptions/ApiException.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Exceptions/IncompatiblePlatform.php create mode 100644 catalog/controller/payment/mollie-api-client/src/MollieApiClient.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/BaseCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/BaseResource.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Chargeback.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/ChargebackCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/CursorCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Customer.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/CustomerCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Invoice.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/InvoiceCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Issuer.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/IssuerCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Mandate.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/MandateCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Method.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/MethodCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Payment.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/PaymentCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Profile.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/ProfileCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Refund.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/RefundCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/ResourceFactory.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Settlement.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/SettlementCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Subscription.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/SubscriptionCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/InvoiceStatus.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/MandateMethod.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/MandateStatus.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/PaymentMethod.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/PaymentStatus.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/ProfileStatus.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/RefundStatus.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/SequenceType.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/SettlementStatus.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/SubscriptionStatus.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/autoload.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer-autoload.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/ClassLoader.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/LICENSE create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/autoload_classmap.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/autoload_files.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/autoload_namespaces.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/autoload_psr4.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/autoload_real.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/autoload_static.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/LICENSE create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/README.md create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/composer.json create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/res/cacert.pem create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/src/CaBundle.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/composer/installed.json create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/CHANGELOG.md create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/LICENSE create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/README.md create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/UPGRADING.md create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/composer.json create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Client.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/ClientInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/HandlerStack.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/MessageFormatter.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Middleware.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Pool.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RequestOptions.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/TransferStats.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/UriTemplate.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/functions.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/functions_include.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/CHANGELOG.md create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/LICENSE create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/Makefile create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/README.md create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/composer.json create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/AggregateException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/CancellationException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/Coroutine.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/EachPromise.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/FulfilledPromise.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/Promise.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/PromiseInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/PromisorInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/RejectedPromise.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/RejectionException.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueue.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueueInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/functions.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/functions_include.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/CHANGELOG.md create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/LICENSE create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/README.md create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/composer.json create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/AppendStream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/BufferStream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/CachingStream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/DroppingStream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/FnStream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/InflateStream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LazyOpenStream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LimitStream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MessageTrait.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MultipartStream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/NoSeekStream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/PumpStream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Request.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Response.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/ServerRequest.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Stream.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamWrapper.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UploadedFile.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Uri.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriNormalizer.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriResolver.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions_include.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/psr/http-message/CHANGELOG.md create mode 100644 catalog/controller/payment/mollie-api-client/vendor/psr/http-message/LICENSE create mode 100644 catalog/controller/payment/mollie-api-client/vendor/psr/http-message/README.md create mode 100644 catalog/controller/payment/mollie-api-client/vendor/psr/http-message/composer.json create mode 100644 catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/MessageInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/RequestInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/ResponseInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/ServerRequestInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/StreamInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/UploadedFileInterface.php create mode 100644 catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/UriInterface.php rename catalog/controller/{extension => }/payment/mollie/base.php (93%) rename catalog/controller/{extension => }/payment/mollie/helper.php (93%) create mode 100644 catalog/controller/payment/mollie_bancontact.php create mode 100644 catalog/controller/payment/mollie_banktransfer.php create mode 100644 catalog/controller/payment/mollie_belfius.php create mode 100644 catalog/controller/payment/mollie_bitcoin.php create mode 100644 catalog/controller/payment/mollie_creditcard.php create mode 100644 catalog/controller/payment/mollie_directdebit.php create mode 100644 catalog/controller/payment/mollie_eps.php create mode 100644 catalog/controller/payment/mollie_giftcard.php create mode 100644 catalog/controller/payment/mollie_giropay.php create mode 100644 catalog/controller/payment/mollie_ideal.php create mode 100644 catalog/controller/payment/mollie_inghomepay.php create mode 100644 catalog/controller/payment/mollie_kbc.php create mode 100644 catalog/controller/payment/mollie_paypal.php create mode 100644 catalog/controller/payment/mollie_paysafecard.php create mode 100644 catalog/controller/payment/mollie_sofort.php create mode 100644 catalog/language/de-de/payment/mollie.php create mode 100644 catalog/language/dutch/payment/mollie.php create mode 100644 catalog/language/en-gb/payment/mollie.php create mode 100644 catalog/language/english/payment/mollie.php create mode 100644 catalog/language/es-es/payment/mollie.php create mode 100644 catalog/language/fr-fr/payment/mollie.php create mode 100644 catalog/language/french/payment/mollie.php create mode 100644 catalog/language/german/payment/mollie.php create mode 100644 catalog/language/nl-nl/payment/mollie.php create mode 100644 catalog/language/spanish/payment/mollie.php rename catalog/model/{extension => }/payment/mollie/base.php (93%) create mode 100644 catalog/model/payment/mollie_bancontact.php create mode 100644 catalog/model/payment/mollie_banktransfer.php create mode 100644 catalog/model/payment/mollie_belfius.php create mode 100644 catalog/model/payment/mollie_bitcoin.php create mode 100644 catalog/model/payment/mollie_creditcard.php create mode 100644 catalog/model/payment/mollie_directdebit.php create mode 100644 catalog/model/payment/mollie_eps.php create mode 100644 catalog/model/payment/mollie_giftcard.php create mode 100644 catalog/model/payment/mollie_giropay.php create mode 100644 catalog/model/payment/mollie_ideal.php create mode 100644 catalog/model/payment/mollie_inghomepay.php create mode 100644 catalog/model/payment/mollie_kbc.php create mode 100644 catalog/model/payment/mollie_paypal.php create mode 100644 catalog/model/payment/mollie_paysafecard.php create mode 100644 catalog/model/payment/mollie_sofort.php create mode 100644 catalog/view/theme/default/template/payment/mollie_checkout_form.tpl create mode 100644 catalog/view/theme/default/template/payment/mollie_checkout_form.twig create mode 100644 catalog/view/theme/default/template/payment/mollie_return.tpl create mode 100644 catalog/view/theme/default/template/payment/mollie_return.twig create mode 100644 system/comercia/arrayHelper.php create mode 100644 system/comercia/arrayObject.php create mode 100644 system/comercia/breadcrumb.php create mode 100644 system/comercia/component/breadcrumb.php create mode 100644 system/comercia/component/selectbox.php create mode 100644 system/comercia/component/variables.php create mode 100644 system/comercia/config.php create mode 100644 system/comercia/controllerHelper.php create mode 100644 system/comercia/controllers/moduleSettings.php create mode 100644 system/comercia/dateTimeHelper.php create mode 100644 system/comercia/db.php create mode 100644 system/comercia/document.php create mode 100644 system/comercia/fakeController.php create mode 100644 system/comercia/filesystem.php create mode 100644 system/comercia/form.php create mode 100644 system/comercia/html.php create mode 100644 system/comercia/http.php create mode 100644 system/comercia/image.php create mode 100644 system/comercia/info.php create mode 100644 system/comercia/language.php create mode 100644 system/comercia/load.php create mode 100644 system/comercia/log.php create mode 100644 system/comercia/patch.php create mode 100644 system/comercia/patchTable.php create mode 100644 system/comercia/request.php create mode 100644 system/comercia/response.php create mode 100644 system/comercia/route.php create mode 100644 system/comercia/selectboxOptions.php create mode 100644 system/comercia/stringHelper.php create mode 100644 system/comercia/twig.php create mode 100644 system/comercia/url.php create mode 100644 system/comercia/util.php create mode 100644 system/comercia/version.php create mode 100644 vqmod/xml/comercia_util.xml diff --git a/admin/controller/extension/payment/mollie_bancontact.php b/admin/controller/extension/payment/mollie_bancontact.php index c37c6d61..af80e932 100644 --- a/admin/controller/extension/payment/mollie_bancontact.php +++ b/admin/controller/extension/payment/mollie_bancontact.php @@ -1,7 +1,4 @@ \ No newline at end of file diff --git a/admin/controller/extension/payment/mollie_banktransfer.php b/admin/controller/extension/payment/mollie_banktransfer.php index b7431e89..32629efa 100644 --- a/admin/controller/extension/payment/mollie_banktransfer.php +++ b/admin/controller/extension/payment/mollie_banktransfer.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_belfius.php b/admin/controller/extension/payment/mollie_belfius.php index 4baf4f0b..7a7dd60a 100644 --- a/admin/controller/extension/payment/mollie_belfius.php +++ b/admin/controller/extension/payment/mollie_belfius.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_bitcoin.php b/admin/controller/extension/payment/mollie_bitcoin.php index b9ee39f3..037f3f3a 100644 --- a/admin/controller/extension/payment/mollie_bitcoin.php +++ b/admin/controller/extension/payment/mollie_bitcoin.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_creditcard.php b/admin/controller/extension/payment/mollie_creditcard.php index 73764f5c..fe4ae30f 100644 --- a/admin/controller/extension/payment/mollie_creditcard.php +++ b/admin/controller/extension/payment/mollie_creditcard.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_directdebit.php b/admin/controller/extension/payment/mollie_directdebit.php index 60188e91..dee1f9f3 100644 --- a/admin/controller/extension/payment/mollie_directdebit.php +++ b/admin/controller/extension/payment/mollie_directdebit.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_eps.php b/admin/controller/extension/payment/mollie_eps.php index 88c3ab96..cdd176fd 100644 --- a/admin/controller/extension/payment/mollie_eps.php +++ b/admin/controller/extension/payment/mollie_eps.php @@ -1,6 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_giftcard.php b/admin/controller/extension/payment/mollie_giftcard.php index 7f39bed0..aebde959 100644 --- a/admin/controller/extension/payment/mollie_giftcard.php +++ b/admin/controller/extension/payment/mollie_giftcard.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_giropay.php b/admin/controller/extension/payment/mollie_giropay.php index 228c7044..23511d24 100644 --- a/admin/controller/extension/payment/mollie_giropay.php +++ b/admin/controller/extension/payment/mollie_giropay.php @@ -1,6 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_ideal.php b/admin/controller/extension/payment/mollie_ideal.php index 15400ba7..38b6909e 100644 --- a/admin/controller/extension/payment/mollie_ideal.php +++ b/admin/controller/extension/payment/mollie_ideal.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_inghomepay.php b/admin/controller/extension/payment/mollie_inghomepay.php index 5a936fb9..094b6ef6 100644 --- a/admin/controller/extension/payment/mollie_inghomepay.php +++ b/admin/controller/extension/payment/mollie_inghomepay.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_kbc.php b/admin/controller/extension/payment/mollie_kbc.php index ce2fc570..83cf4497 100644 --- a/admin/controller/extension/payment/mollie_kbc.php +++ b/admin/controller/extension/payment/mollie_kbc.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_paypal.php b/admin/controller/extension/payment/mollie_paypal.php index 5ce42df3..b8b0d325 100644 --- a/admin/controller/extension/payment/mollie_paypal.php +++ b/admin/controller/extension/payment/mollie_paypal.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_paysafecard.php b/admin/controller/extension/payment/mollie_paysafecard.php index 90f2b6a6..e02ab2e3 100644 --- a/admin/controller/extension/payment/mollie_paysafecard.php +++ b/admin/controller/extension/payment/mollie_paysafecard.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_sofort.php b/admin/controller/extension/payment/mollie_sofort.php index 31fe2713..e673ebb0 100644 --- a/admin/controller/extension/payment/mollie_sofort.php +++ b/admin/controller/extension/payment/mollie_sofort.php @@ -1,7 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie/base.php b/admin/controller/payment/mollie/base.php similarity index 53% rename from admin/controller/extension/payment/mollie/base.php rename to admin/controller/payment/mollie/base.php index d98fce55..3b33a88f 100644 --- a/admin/controller/extension/payment/mollie/base.php +++ b/admin/controller/payment/mollie/base.php @@ -46,9 +46,13 @@ use Mollie\Api\Exceptions\IncompatiblePlatform; use Mollie\Api\MollieApiClient; -require_once(dirname(DIR_SYSTEM) . "/catalog/controller/extension/payment/mollie/helper.php"); +require_once(dirname(DIR_SYSTEM) . "/catalog/controller/payment/mollie/helper.php"); -class ControllerExtensionPaymentMollieBase extends Controller +require_once(DIR_SYSTEM . "comercia/util.php"); + +use comercia\Util; + +class ControllerPaymentMollieBase extends Controller { // Current module name - should be overwritten by subclass using one of the MollieHelper::MODULE_NAME_* values. const MODULE_NAME = NULL; @@ -65,7 +69,7 @@ class ControllerExtensionPaymentMollieBase extends Controller */ protected function getAPIClient ($store = 0) { - return MollieHelper::getAPIClientAdmin($this->data['stores'][$store]); + return MollieHelper::getAPIClientAdmin($this->data); } /** @@ -143,7 +147,9 @@ protected function installAllModules () $extensions->install("payment", "mollie_" . $module_name); // Set permissions. + $this->model_user_user_group->addPermission($user_id, "access", "payment/mollie_" . $module_name); $this->model_user_user_group->addPermission($user_id, "access", "extension/payment/mollie_" . $module_name); + $this->model_user_user_group->addPermission($user_id, "modify", "payment/mollie_" . $module_name); $this->model_user_user_group->addPermission($user_id, "modify", "extension/payment/mollie_" . $module_name); } } @@ -188,184 +194,130 @@ public function index () $this->cleanUp(); } } + + //Load language data + $data = array(); + Util::load()->language("payment/mollie", $data); + $form = Util::form($data); // Load essential models - $this->load->language("extension/payment/mollie"); - $this->load->model("setting/setting"); - $this->load->model("setting/store"); - $this->load->model("localisation/order_status"); - $this->load->model("localisation/geo_zone"); + $modelSetting = Util::load()->model("setting/setting"); + $modelStore = Util::load()->model("setting/store"); + $modelOrderStatus = Util::load()->model("localisation/order_status"); + $modelGeoZone = Util::load()->model("localisation/geo_zone"); - $this->document->setTitle($this->language->get("heading_title")); - - $shops = $this->getMultiStores(); $code = MollieHelper::getModuleCode(); - $this->retrieveMultiStoreConfigs(); - // Call validate method on POST - - $doRedirect = false; - foreach($shops as $store) - { - if (($this->request->server['REQUEST_METHOD'] == "POST") && ($this->validate($store['id']))) - { - - $post = $this->request->post['stores'][$store['id']]; - - foreach (MollieHelper::$MODULE_NAMES as $module_name) - { - $status = $code . "_" . $module_name . "_status"; + $form->finish(function ($data) { + $code = MollieHelper::getModuleCode(); + $redirect = false; + $stores = Util::info()->stores(); + foreach ($stores as $store) { + if ($this->validate($store["store_id"])) { + $configSet = Util::request()->post()->allPrefixed($store["store_id"] . "_"); + if (!$store["store_id"]) { + $configSet = array_merge($configSet, Util::request()->post()->allPrefixed($code, false)); + } + Util::config($store["store_id"])->set($code, $configSet); + + $redirect = true; + } + } + + if ($redirect) { + Util::session()->success = $data['text_success']; + Util::response()->redirectToUrl(Util::url()->link(Util::route()->extension(), "type=payment")); + } + }); + + //title + Util::document() + ->setTitle(Util::language()->heading_title); + + //place the prepared data into the form + $form + ->fillFromSessionClear("error_warning", "success"); + + //Set form variables + $paymentStatus = array(); + $paymentSortOrder = array(); + $paymentGeoZone = array(); + + foreach (MollieHelper::$MODULE_NAMES as $module_name) { + $paymentStatus[] = $code . '_' . $module_name . '_status'; + $paymentSortOrder[] = $code . '_' . $module_name . '_sort_order'; + $paymentGeoZone[] = $code . '_' . $module_name . '_geo_zone'; + } - $post[$status] = (isset($post[$status]) && $post[$status] == "on") ? 1 : 0; - } + $settingFields = array($code . "_creditcard_max_amount", $code . "_show_icons", $code . "_show_order_canceled_page", $code . "_ideal_description", $code . "_api_key", $code . "_ideal_processing_status_id", $code . "_ideal_expired_status_id", $code . "_ideal_canceled_status_id", $code . "_ideal_failed_status_id", $code . "_ideal_pending_status_id"); - $this->model_setting_setting->editSetting($code, $post, $store['id']); + $storeFormFields = array_merge($settingFields, $paymentStatus, $paymentSortOrder, $paymentGeoZone); - // Migrate old settings if needed. We used to use "ideal" as setting group, but Opencart 2 requires us to use "mollie". - $this->model_setting_setting->deleteSetting("ideal", $store['id']); + $data['shops'] = Util::info()->stores(); + foreach ($data['shops'] as &$store) { - $doRedirect = true; - } - } + Util::form($store, $store["store_id"]) + ->fillFromPost($storeFormFields) + ->fillFromConfig($storeFormFields); + } - if ($doRedirect) - { - $this->session->data['success'] = $this->language->get("text_success"); - $this->redirect($this->url->link($this->getExtensionsUri(), "type=payment&" . $this->getTokenUriPart(), "SSL")); - } + //Breadcrumb + Util::breadcrumb($data) + ->add("text_home", "common/home") + ->add("text_payment", "payment", "type=payment") + ->add("heading_title", "payment/mollie_" . static::MODULE_NAME); // Set data for template - $data['api_check_url'] = $this->url->link("extension/payment/mollie_" . static::MODULE_NAME . '/validate_api_key', $this->getTokenUriPart(), "SSL"); + $data['api_check_url'] = Util::url()->link("payment/mollie_" . static::MODULE_NAME . '/validate_api_key'); $data['module_name'] = static::MODULE_NAME; $data['token'] = $this->getTokenUriPart(); - $data['heading_title'] = $this->language->get("heading_title"); - $data['title_global_options'] = $this->language->get("title_global_options"); - $data['title_payment_status'] = $this->language->get("title_payment_status"); - $data['title_mod_about'] = $this->language->get("title_mod_about"); - $data['footer_text'] = $this->language->get("footer_text"); - - $data['text_enabled'] = $this->language->get("text_enabled"); - $data['text_disabled'] = $this->language->get("text_disabled"); - $data['text_yes'] = $this->language->get("text_yes"); - $data['text_no'] = $this->language->get("text_no"); - $data['text_none'] = $this->language->get("text_none"); - $data['text_edit'] = $this->language->get("text_edit"); - $data['text_missing_api_key'] = $this->language->get("text_missing_api_key"); - $data['text_activate_payment_method'] = $this->language->get("text_activate_payment_method"); - $data['text_no_status_id'] = $this->language->get("text_no_status_id"); - $data['text_all_zones'] = $this->language->get("text_all_zones"); - - $data['entry_api_key'] = $this->language->get("entry_api_key"); - $data['entry_description'] = $this->language->get("entry_description"); - $data['entry_show_icons'] = $this->language->get("entry_show_icons"); - $data['entry_show_order_canceled_page'] = $this->language->get("entry_show_order_canceled_page"); - $data['entry_mod_status'] = $this->language->get("entry_mod_status"); - $data['entry_comm_status'] = $this->language->get("entry_comm_status"); - $data['entry_geo_zone'] = $this->language->get("entry_geo_zone"); - - $data['help_view_profile'] = $this->language->get("help_view_profile"); - $data['help_api_key'] = $this->language->get("help_api_key"); - $data['help_description'] = $this->language->get("help_description"); - $data['help_show_icons'] = $this->language->get("help_show_icons"); - $data['help_show_order_canceled_page'] = $this->language->get("help_show_order_canceled_page"); - $data['help_status'] = $this->language->get("help_status"); - - $data['order_statuses'] = $this->model_localisation_order_status->getOrderStatuses(); - $data['entry_failed_status'] = $this->language->get("entry_failed_status"); - $data['entry_canceled_status'] = $this->language->get("entry_canceled_status"); - $data['entry_pending_status'] = $this->language->get("entry_pending_status"); - $data['entry_expired_status'] = $this->language->get("entry_expired_status"); - $data['entry_processing_status']= $this->language->get("entry_processing_status"); - $data['entry_processed_status'] = $this->language->get("entry_processed_status"); - - $data['entry_payment_method'] = $this->language->get("entry_payment_method"); - $data['entry_activate'] = $this->language->get("entry_activate"); - $data['entry_sort_order'] = $this->language->get("entry_sort_order"); - $data['entry_support'] = $this->language->get("entry_support"); - $data['entry_module'] = $this->language->get("entry_module"); $data['entry_version'] = $this->language->get("entry_version") . " " . MollieHelper::PLUGIN_VERSION; - $data['entry_creditcard_max_amount'] = $this->language->get("entry_creditcard_max_amount"); - $data['help_creditcard_max_amount'] = $this->language->get("help_creditcard_max_amount"); - $data['eg_creditcard_max_amount'] = $this->language->get("eg_creditcard_max_amount"); - - $data['button_save'] = $this->language->get("button_save"); - $data['button_cancel'] = $this->language->get("button_cancel"); - $data['tab_general'] = $this->language->get("tab_general"); - - $data['shops'] = $shops; + //$data['shops'] = $data['stores']; $data['code'] = $code; - // If there are errors, show the error. - if (isset($this->error['warning'])) { - $data['error_warning'] = $this->error['warning']; - } else { - $data['error_warning'] = ''; - } - - $data['geo_zones'] = $this->model_localisation_geo_zone->getGeoZones(); + $data['geo_zones'] = $modelGeoZone->getGeoZones(); + $data['order_statuses'] = $modelOrderStatus->getOrderStatuses(); + $shops = $data['shops']; foreach($shops as $store) { - $data['stores'][$store['id']]['entry_cstatus'] = $this->checkCommunicationStatus(isset($store[$code . '_api_key']) ? $store[$code . '_api_key'] : null); + $data['shops'][$store['store_id']]['entry_cstatus'] = $this->checkCommunicationStatus(isset($store[$code . '_api_key']) ? $store[$code . '_api_key'] : null); - if (isset($this->error[$store['id']]['api_key'])) { - $data['stores'][$store['id']]['error_api_key'] = $this->error[$store['id']]['api_key']; + if (isset($this->error[$store['store_id']]['api_key'])) { + $data['shops'][$store['store_id']]['error_api_key'] = $this->error[$store['store_id']]['api_key']; } else { - $data['stores'][$store['id']]['error_api_key'] = ''; + $data['shops'][$store['store_id']]['error_api_key'] = ''; } - if (isset($this->error[$store['id']]['description'])) { - $data['stores'][$store['id']]['error_description'] = $this->error[$store['id']]['description']; + if (isset($this->error[$store['store_id']]['description'])) { + $data['shops'][$store['store_id']]['error_description'] = $this->error[$store['store_id']]['description']; } else { - $data['stores'][$store['id']]['error_description'] = ''; + $data['shops'][$store['store_id']]['error_description'] = ''; } - if (isset($this->error[$store['id']]['show_icons'])) { - $data['stores'][$store['id']]['error_show_icons'] = $this->error[$store['id']]['show_icons']; + if (isset($this->error[$store['store_id']]['show_icons'])) { + $data['shops'][$store['store_id']]['error_show_icons'] = $this->error[$store['store_id']]['show_icons']; } else { - $data['stores'][$store['id']]['error_show_icons'] = ''; + $data['shops'][$store['store_id']]['error_show_icons'] = ''; } - if (isset($this->error[$store['id']]['show_order_canceled_page'])) { - $data['stores'][$store['id']]['show_order_canceled_page'] = $this->error[$store['id']]['show_order_canceled_page']; + if (isset($this->error[$store['store_id']]['show_order_canceled_page'])) { + $data['shops'][$store['store_id']]['show_order_canceled_page'] = $this->error[$store['store_id']]['show_order_canceled_page']; } else { - $data['stores'][$store['id']]['show_order_canceled_page'] = ''; + $data['shops'][$store['store_id']]['show_order_canceled_page'] = ''; } - if (isset($this->error[$store['id']]['total'])) { - $data['stores'][$store['id']]['error_total'] = $this->error[$store['id']]['total']; + if (isset($this->error[$store['store_id']]['total'])) { + $data['shops'][$store['store_id']]['error_total'] = $this->error[$store['store_id']]['total']; } else { - $data['stores'][$store['id']]['error_total'] = ''; + $data['shops'][$store['store_id']]['error_total'] = ''; } } - - $data['error_file_missing'] = $this->language->get("error_file_missing"); - - // Breadcrumbs - $data['breadcrumbs'] = array(); - - $data['breadcrumbs'][] = array( - "href" => $this->url->link("common/dashboard", $this->getTokenUriPart(), "SSL"), - "text" => $this->language->get("text_home"), - "separator" => FALSE, - ); - - $data['breadcrumbs'][] = array( - "href" => $this->url->link($this->getExtensionsUri(), "type=payment&" . $this->getTokenUriPart(), "SSL"), - "text" => $this->language->get("text_payment"), - "separator" => ' :: ', - ); - - $data['breadcrumbs'][] = array( - "href" => $this->url->link("extension/payment/mollie_" . static::MODULE_NAME, $this->getTokenUriPart(), "SSL"), - "text" => $this->language->get("heading_title"), - "separator" => " :: ", - ); - + // Form action url - $data['action'] = $this->url->link("extension/payment/mollie_" . static::MODULE_NAME, $this->getTokenUriPart(), "SSL"); - $data['cancel'] = $this->url->link($this->getExtensionsUri(), "type=payment&" . $this->getTokenUriPart(), "SSL"); + $data['action'] = Util::url()->link("payment/mollie_" . static::MODULE_NAME); + $data['cancel'] = Util::url()->link( Util::route()->extension(), "type=payment"); // Load global settings. Some are prefixed with mollie_ideal_ for legacy reasons. $settings = array( @@ -383,37 +335,38 @@ public function index () foreach($shops as $store) { + $this->data = $store; foreach ($settings as $setting_name => $default_value) { // Attempt to read from post - if (isset($this->request->post['stores'][$store['id']][$setting_name])) + if (isset(Util::request()->post()->{$store['store_id'] . '_' . $setting_name})) { - $data['stores'][$store['id']][$setting_name] = $this->request->post['stores'][$store['id']][$setting_name]; + $data['shops'][$store['store_id']][$setting_name] = Util::request()->post()->{$store['store_id'] . '_' . $setting_name}; } // Otherwise, attempt to get the setting from the database else { // same as $this->config->get() - $stored_setting = isset($this->data['stores'][$store['id']][$setting_name]) ? $this->data['stores'][$store['id']][$setting_name] : null; + $stored_setting = !empty($this->data[$setting_name]) ? $this->data[$setting_name] : null; if($stored_setting === NULL && $default_value !== NULL) { - $data['stores'][$store['id']][$setting_name] = $default_value; + $data['shops'][$store['store_id']][$setting_name] = $default_value; } else { - $data['stores'][$store['id']][$setting_name] = $stored_setting; + $data['shops'][$store['store_id']][$setting_name] = $stored_setting; } } } + // Check which payment methods we can use with the current API key. $allowed_methods = array(); - try { - $api_methods = $this->getAPIClient($store['id'])->methods->all(); + $api_methods = $this->getAPIClient($store['store_id'])->methods->all(); foreach ($api_methods as $api_method) { @@ -423,13 +376,13 @@ public function index () catch (Mollie\Api\Exceptions\ApiException $e) { // If we have an unauthorized request, our API key is likely invalid. - if ($data['stores'][$store['id']][$code . '_api_key'] !== NULL && strpos($e->getMessage(), "Unauthorized request") >= 0) + if ($store[$code . '_api_key'] !== NULL && strpos($e->getMessage(), "Unauthorized request") >= 0) { - $data['stores'][$store['id']]['error_api_key'] = $this->language->get("error_api_key_invalid"); + $data['error_api_key'] = $this->language->get("error_api_key_invalid"); } } - $data['stores'][$store['id']]['payment_methods'] = array(); + $data['store'][$store['store_id'] . '_' . $code . '_payment_methods'] = array(); foreach (MollieHelper::$MODULE_NAMES as $module_name) { @@ -440,43 +393,38 @@ public function index () $payment_method['allowed'] = in_array($module_name, $allowed_methods); // Load module specific settings. - if (isset($this->request->post['stores'][$store['id']][$code . '_' . $module_name . '_status'])) + if (isset(Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_status'})) { - $payment_method['status'] = ($this->request->post['stores'][$store['id']][$code . '_' . $module_name . '_status'] == "on"); + $payment_method['status'] = (Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_status'} == "on"); } else { - $payment_method['status'] = (bool) isset($this->data['stores'][$store['id']][$code . "_" . $module_name . "_status"]) ? $this->data['stores'][$store['id']][$code . "_" . $module_name . "_status"] : null; + $payment_method['status'] = (bool) isset($store[$code . "_" . $module_name . "_status"]) ? $store[$code . "_" . $module_name . "_status"] : null; } - if (isset($this->request->post['stores'][$store['id']][$code . '_' . $module_name . '_sort_order'])) + if (isset(Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_sort_order'})) { - $payment_method['sort_order'] = $this->request->post['stores'][$store['id']][$code . '_' . $module_name . '_sort_order']; + $payment_method['sort_order'] = Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_sort_order'}; } else { - $payment_method['sort_order'] = isset($this->data['stores'][$store['id']][$code . "_" . $module_name . "_sort_order"]) ? $this->data['stores'][$store['id']][$code . "_" . $module_name . "_sort_order"] : null; + $payment_method['sort_order'] = isset($store[$code . "_" . $module_name . "_sort_order"]) ? $store[$code . "_" . $module_name . "_sort_order"] : null; } - if (isset($this->request->post['stores'][$store['id']][$code . '_' . $module_name . '_geo_zone'])) + if (isset(Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_geo_zone'})) { - $payment_method['geo_zone'] = $this->request->post['stores'][$store['id']][$code . '_' . $module_name . '_geo_zone']; + $payment_method['geo_zone'] = Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_geo_zone'}; } else { - $payment_method['geo_zone'] = isset($this->data['stores'][$store['id']][$code . "_" . $module_name . "_geo_zone"]) ? $this->data['stores'][$store['id']][$code . "_" . $module_name . "_geo_zone"] : null; + $payment_method['geo_zone'] = isset($store[$code . "_" . $module_name . "_geo_zone"]) ? $store[$code . "_" . $module_name . "_geo_zone"] : null; } - $data['stores'][$store['id']]['payment_methods'][$module_name] = $payment_method; + $data['store'][$store['store_id'] . '_' . $code . '_payment_methods'][$module_name] = $payment_method; } } - - $template = 'extension/payment/mollie'; - if (!MollieHelper::isOpenCart2x()) { - $template = 'extension/payment/mollie_1'; - } - + $template = 'mollie'; $this->renderTemplate($template, $data, array( "header", "column_left", @@ -542,17 +490,17 @@ public function validate_api_key() */ private function validate ($store = 0) { - if (!$this->user->hasPermission("modify", "extension/payment/mollie_" . static::MODULE_NAME)) + if (!$this->user->hasPermission("modify", "payment/mollie_" . static::MODULE_NAME)) { $this->error['warning'] = $this->language->get("error_permission"); } - if (!$this->request->post['stores'][$store][MollieHelper::getModuleCode() . '_api_key']) + if (!Util::request()->post()->{$store . '_' . MollieHelper::getModuleCode() . '_api_key'}) { $this->error[$store]['api_key'] = $this->language->get("error_api_key"); } - if (!$this->request->post['stores'][$store][MollieHelper::getModuleCode() . '_ideal_description']) + if (!Util::request()->post()->{$store . '_' . MollieHelper::getModuleCode() . '_ideal_description'}) { $this->error[$store]['description'] = $this->language->get("error_description"); } @@ -618,9 +566,16 @@ protected function renderTemplate ($template, $data, $common_children = array(), $data[$child] = $this->load->controller("common/" . $child); } - $html = $this->load->view($template, $data); + if (MollieHelper::isOpenCart3x()) { + $this->config->set('template_engine', 'template'); + $html = $this->load->view('payment/'.$template, $data); + } else { + $html = $this->load->view('payment/'.$template, $data); + } + } else { - $this->template = $template; + $template = 'mollie_1.tpl'; + $this->template = 'payment/'.$template; $this->children = array(); foreach ($data as $field => $value) { @@ -645,54 +600,6 @@ protected function renderTemplate ($template, $data, $common_children = array(), return $html; } - /** - * @param string $url - * @param int $status - */ - protected function redirect ($url, $status = 302) - { - $this->response->redirect(str_replace('&', '&', $url), $status); - } - - /** - * Retrieve additional store id's from store table. - * Will not include default store. Only the additional stores. So we inject the default store here. - * @return array - */ - protected function getMultiStores() - { - $sql = $this->db->query(sprintf("SELECT store_id as id, name FROM %sstore", DB_PREFIX)); - $rows = $sql->rows; - $default = array( - array( - 'id' => 0, - 'name' => $this->config->get('config_name') - ) - ); - $allStores = array_merge($default, $rows); - - return $allStores; - } - - /** - * Retrieve mollie options according to multistore (default is store 0) - */ - protected function retrieveMultiStoreConfigs() - { - $shops = $this->getMultiStores(); - foreach($shops as $store) - { - $sql = $this->db->query(sprintf("SELECT * FROM %ssetting WHERE store_id = %s", DB_PREFIX, $store['id'])); - $rows = $sql->rows; - $newArrray = array(); - foreach($rows as $setting) - { - $newArrray[$setting['key']] = $setting['value']; - } - $this->data['stores'][$store['id']] = $newArrray; - } - } - /** * Get the extension installation handler. * @@ -700,12 +607,12 @@ protected function retrieveMultiStoreConfigs() */ protected function getExtensionModel() { - if (MollieHelper::isOpenCart3x()) { + if (Util::version()->isMinimal("3")) { $this->load->model('setting/extension'); return $this->model_setting_extension; } - if (MollieHelper::isOpenCart2x()) { + if (Util::version()->isMinimal("2")) { $this->load->model('extension/extension'); return $this->model_extension_extension; } @@ -714,22 +621,6 @@ protected function getExtensionModel() return $this->model_setting_extension; } - /** - * @return string - */ - private function getExtensionsUri() - { - if (MollieHelper::isOpenCart3x()) { - return 'marketplace/extension'; - } - - if (MollieHelper::isOpenCart23x()) { - return 'extension/extension'; - } - - return 'extension/payment'; - } - /** * @return string */ @@ -755,10 +646,10 @@ private function getUserId() public function saveAPIKey() { $this->load->model('setting/setting'); - $code = 'mollie'; $store_id = $_POST['store_id']; + $code = MollieHelper::getModuleCode(); $data = array( - 'mollie_api_key' => $_POST['api_key'] + $code.'_api_key' => $_POST['api_key'] ); $this->model_setting_setting->editSetting($code, $data, $store_id); return true; diff --git a/admin/controller/payment/mollie_bancontact.php b/admin/controller/payment/mollie_bancontact.php new file mode 100644 index 00000000..98fc8a70 --- /dev/null +++ b/admin/controller/payment/mollie_bancontact.php @@ -0,0 +1,7 @@ + - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -// These are called automatically by the Payment modules list - do not change the names -$method_list_logo = 'Mollie'; -$_['text_mollie_banktransfer'] = $method_list_logo; -$_['text_mollie_belfius'] = $method_list_logo; -$_['text_mollie_bitcoin'] = $method_list_logo; -$_['text_mollie_creditcard'] = $method_list_logo; -$_['text_mollie_directdebit'] = $method_list_logo; -$_['text_mollie_ideal'] = $method_list_logo; -$_['text_mollie_kbc'] = $method_list_logo; -$_['text_mollie_mistercash'] = $method_list_logo; -$_['text_mollie_paypal'] = $method_list_logo; -$_['text_mollie_paysafecard'] = $method_list_logo; -$_['text_mollie_sofort'] = $method_list_logo; -$_['text_mollie_giftcard'] = $method_list_logo; -$_['text_mollie_inghomepay'] = $method_list_logo; -$_['text_mollie_eps'] = $method_list_logo; -$_['text_mollie_giropay'] = $method_list_logo; - -// Heading -$_['heading_title'] = "Mollie"; -$_['title_global_options'] = "Einstellungen"; -$_['title_payment_status'] = "Bezahlungs-Status"; -$_['title_mod_about'] = "Über dieses Modul"; -$_['footer_text'] = "Zahlungsdienste"; - -// Module names -$_['name_mollie_banktransfer'] = "Übertragung"; -$_['name_mollie_belfius'] = "Belfius Direct Net"; -$_['name_mollie_bitcoin'] = "Bitcoin"; -$_['name_mollie_creditcard'] = "Creditcard"; -$_['name_mollie_directdebit'] = "Einmaliges Inkasso"; -$_['name_mollie_ideal'] = "iDEAL"; -$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; -$_['name_mollie_mistercash'] = "Bancontact/MisterCash"; -$_['name_mollie_paypal'] = "PayPal"; -$_['name_mollie_paysafecard'] = "paysafecard"; -$_['name_mollie_sofort'] = "SOFORT Banking"; -$_['name_mollie_giftcard'] = 'Giftcard'; -$_['name_mollie_inghomepay'] = 'ING Home\'Pay'; -$_['name_mollie_eps'] = 'EPS'; -$_['name_mollie_giropay'] = 'Giropay'; - -// Text -$_['text_edit'] = "Mollie bearbeiten"; -$_['text_payment'] = "Bezahlung"; -$_['text_success'] = "Erfolg: Die Einstellungen für dieses Modul wurden angepasst!"; -$_['text_missing_api_key'] = "Geben Sie den API Key ein."; -$_['text_activate_payment_method'] = 'Aktivieren Sie diese Zahlungsart über das Mollie Dashboard.'; -$_['text_no_status_id'] = "- Status nicht ändern (nicht empfohlen) -"; - -// Entry -$_['entry_payment_method'] = "Zahlungsart"; -$_['entry_activate'] = "Aktivieren"; -$_['entry_sort_order'] = "Sortierreihenfolge"; -$_['entry_api_key'] = "API Key"; -$_['entry_description'] = "Beschreibung"; -$_['entry_show_icons'] = "Icons anzeigen"; -$_['entry_show_order_canceled_page'] = "Meldung bei annullierten Bezahlungen anzeigen"; -$_['entry_geo_zone'] = "Geo Zone"; - -// Help -$_['help_view_profile'] = 'Sie können Ihren API Key auf Ihren Mollie-Webseiten-Profilen finden.'; -$_['help_status'] = "Das Modul aktivieren"; -$_['help_api_key'] = "Geben Sie hier den api_key des Webseiten-Profils ein, das Sie verwenden wollen. Der API Key beginnt mit test_ oder live_."; -$_['help_description'] = "Die Beschreibung soll auf der Banküberweisung Ihres Kunden erscheinen und Sie können sie in der Mollie Verwaltung sehen. Sie können maximal 29 Zeichen verwenden. TIPP: Verwenden Sie %, dies wird durch die Auftragsnummer ersetzt werden. Die Auftragsnummer selbst kann auch mehrere Zeichen lang sein!"; -$_['help_show_icons'] = "Icons neben den Zahlungsarten von Mollie auf der Zahlungsseite anzeigen."; -$_['help_show_order_canceled_page'] = "Eine Meldung für den Kunden anzeigen, wenn eine Zahlung annulliert wurde, bevor der Kunde zurück zum Warenkorb verwiesen wird."; - -// Info -$_['entry_module'] = "Module"; -$_['entry_mod_status'] = "Modulestatus"; -$_['entry_comm_status'] = "Kommunikationsstatus"; -$_['entry_support'] = "Support"; - -$_['entry_version'] = 'Mollie Opencart'; - -// Error -$_['error_permission'] = "Warnung: Sie haben keine Berechtigung, das Modul zu bearbeiten."; -$_['error_api_key'] = "Mollie API Key ist verpflichtend!"; -$_['error_api_key_invalid'] = "Ungültiger Mollie API Key!"; -$_['error_description'] = "Die Beschreibung ist obligatorisch!"; -$_['error_file_missing'] = "Die Datei existiert nicht"; - -// Status -$_['entry_pending_status'] = "Status Zahlung erstellt"; -$_['entry_failed_status'] = "Status Zahlung fehlgeschlagen"; -$_['entry_canceled_status'] = "Status Zahlung annulliert"; -$_['entry_expired_status'] = "Status Zahlung verstrichen"; -$_['entry_processing_status']= "Status Zahlung erfolgreich"; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/admin/language/de-de/extension/payment/mollie_banktransfer.php b/admin/language/de-de/extension/payment/mollie_banktransfer.php index 8a40e816..ba52898e 100644 --- a/admin/language/de-de/extension/payment/mollie_banktransfer.php +++ b/admin/language/de-de/extension/payment/mollie_banktransfer.php @@ -1,4 +1,2 @@ + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +// These are called automatically by the Payment modules list - do not change the names +$method_list_logo = 'Mollie'; +$_['text_mollie_banktransfer'] = $method_list_logo; +$_['text_mollie_belfius'] = $method_list_logo; +$_['text_mollie_bitcoin'] = $method_list_logo; +$_['text_mollie_creditcard'] = $method_list_logo; +$_['text_mollie_directdebit'] = $method_list_logo; +$_['text_mollie_ideal'] = $method_list_logo; +$_['text_mollie_kbc'] = $method_list_logo; +$_['text_mollie_mistercash'] = $method_list_logo; +$_['text_mollie_paypal'] = $method_list_logo; +$_['text_mollie_paysafecard'] = $method_list_logo; +$_['text_mollie_sofort'] = $method_list_logo; +$_['text_mollie_giftcard'] = $method_list_logo; +$_['text_mollie_inghomepay'] = $method_list_logo; +$_['text_mollie_eps'] = $method_list_logo; +$_['text_mollie_giropay'] = $method_list_logo; + +// Heading +$_['heading_title'] = "Mollie"; +$_['title_global_options'] = "Einstellungen"; +$_['title_payment_status'] = "Bezahlungs-Status"; +$_['title_mod_about'] = "Über dieses Modul"; +$_['footer_text'] = "Zahlungsdienste"; + +// Module names +$_['name_mollie_banktransfer'] = "Übertragung"; +$_['name_mollie_belfius'] = "Belfius Direct Net"; +$_['name_mollie_bitcoin'] = "Bitcoin"; +$_['name_mollie_creditcard'] = "Creditcard"; +$_['name_mollie_directdebit'] = "Einmaliges Inkasso"; +$_['name_mollie_ideal'] = "iDEAL"; +$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; +$_['name_mollie_mistercash'] = "Bancontact/MisterCash"; +$_['name_mollie_paypal'] = "PayPal"; +$_['name_mollie_paysafecard'] = "paysafecard"; +$_['name_mollie_sofort'] = "SOFORT Banking"; +$_['name_mollie_giftcard'] = 'Giftcard'; +$_['name_mollie_inghomepay'] = 'ING Home\'Pay'; +$_['name_mollie_eps'] = 'EPS'; +$_['name_mollie_giropay'] = 'Giropay'; + +// Text +$_['text_edit'] = "Mollie bearbeiten"; +$_['text_payment'] = "Bezahlung"; +$_['text_success'] = "Erfolg: Die Einstellungen für dieses Modul wurden angepasst!"; +$_['text_missing_api_key'] = "Geben Sie den API Key ein."; +$_['text_activate_payment_method'] = 'Aktivieren Sie diese Zahlungsart über das Mollie Dashboard.'; +$_['text_no_status_id'] = "- Status nicht ändern (nicht empfohlen) -"; + +// Entry +$_['entry_payment_method'] = "Zahlungsart"; +$_['entry_activate'] = "Aktivieren"; +$_['entry_sort_order'] = "Sortierreihenfolge"; +$_['entry_api_key'] = "API Key"; +$_['entry_description'] = "Beschreibung"; +$_['entry_show_icons'] = "Icons anzeigen"; +$_['entry_show_order_canceled_page'] = "Meldung bei annullierten Bezahlungen anzeigen"; +$_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Höchstbetrag für Kreditkarte"; +$_['eg_creditcard_max_amount'] = "eg.500"; + +// Help +$_['help_view_profile'] = 'Sie können Ihren API Key auf Ihren Mollie-Webseiten-Profilen finden.'; +$_['help_status'] = "Das Modul aktivieren"; +$_['help_api_key'] = "Geben Sie hier den api_key des Webseiten-Profils ein, das Sie verwenden wollen. Der API Key beginnt mit test_ oder live_."; +$_['help_description'] = "Die Beschreibung soll auf der Banküberweisung Ihres Kunden erscheinen und Sie können sie in der Mollie Verwaltung sehen. Sie können maximal 29 Zeichen verwenden. TIPP: Verwenden Sie %, dies wird durch die Auftragsnummer ersetzt werden. Die Auftragsnummer selbst kann auch mehrere Zeichen lang sein!"; +$_['help_show_icons'] = "Icons neben den Zahlungsarten von Mollie auf der Zahlungsseite anzeigen."; +$_['help_show_order_canceled_page'] = "Eine Meldung für den Kunden anzeigen, wenn eine Zahlung annulliert wurde, bevor der Kunde zurück zum Warenkorb verwiesen wird."; +$_['help_creditcard_max_amount'] = 'Geben Sie den Betrag ein, den Sie in Ihrem mollie-Konto für die Kreditkarte festgelegt haben.'; + +// Info +$_['entry_module'] = "Module"; +$_['entry_mod_status'] = "Modulestatus"; +$_['entry_comm_status'] = "Kommunikationsstatus"; +$_['entry_support'] = "Support"; + +$_['entry_version'] = 'Mollie Opencart'; + +// Error +$_['error_permission'] = "Warnung: Sie haben keine Berechtigung, das Modul zu bearbeiten."; +$_['error_api_key'] = "Mollie API Key ist verpflichtend!"; +$_['error_api_key_invalid'] = "Ungültiger Mollie API Key!"; +$_['error_description'] = "Die Beschreibung ist obligatorisch!"; +$_['error_file_missing'] = "Die Datei existiert nicht"; + +// Status +$_['entry_pending_status'] = "Status Zahlung erstellt"; +$_['entry_failed_status'] = "Status Zahlung fehlgeschlagen"; +$_['entry_canceled_status'] = "Status Zahlung annulliert"; +$_['entry_expired_status'] = "Status Zahlung verstrichen"; +$_['entry_processing_status']= "Status Zahlung erfolgreich"; diff --git a/admin/language/de-de/payment/mollie_banktransfer.php b/admin/language/de-de/payment/mollie_banktransfer.php new file mode 100644 index 00000000..8a40e816 --- /dev/null +++ b/admin/language/de-de/payment/mollie_banktransfer.php @@ -0,0 +1,4 @@ + - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -// These are called automatically by the Payment modules list - do not change the names -$method_list_logo = 'Mollie'; -$_['text_mollie_banktransfer'] = $method_list_logo; -$_['text_mollie_belfius'] = $method_list_logo; -$_['text_mollie_bitcoin'] = $method_list_logo; -$_['text_mollie_creditcard'] = $method_list_logo; -$_['text_mollie_directdebit'] = $method_list_logo; -$_['text_mollie_ideal'] = $method_list_logo; -$_['text_mollie_kbc'] = $method_list_logo; -$_['text_mollie_bancontact'] = $method_list_logo; -$_['text_mollie_paypal'] = $method_list_logo; -$_['text_mollie_paysafecard'] = $method_list_logo; -$_['text_mollie_sofort'] = $method_list_logo; -$_['text_mollie_giftcard'] = $method_list_logo; -$_['text_mollie_inghomepay'] = $method_list_logo; -$_['text_mollie_eps'] = $method_list_logo; -$_['text_mollie_giropay'] = $method_list_logo; - -// Heading -$_['heading_title'] = "Mollie"; -$_['title_global_options'] = "Instellingen"; -$_['title_payment_status'] = "Betaalstatussen"; -$_['title_mod_about'] = "Over deze module"; -$_['footer_text'] = "Betaaldiensten"; - -// Module names -$_['name_mollie_banktransfer'] = "Overboeking"; -$_['name_mollie_belfius'] = "Belfius Direct Net"; -$_['name_mollie_bitcoin'] = "Bitcoin"; -$_['name_mollie_creditcard'] = "Creditcard"; -$_['name_mollie_directdebit'] = "Eenmalige incasso"; -$_['name_mollie_ideal'] = "iDEAL"; -$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; -$_['name_mollie_bancontact'] = "bancontact"; -$_['name_mollie_paypal'] = "PayPal"; -$_['name_mollie_paysafecard'] = "paysafecard"; -$_['name_mollie_sofort'] = "SOFORT Banking"; -$_['name_mollie_giftcard'] = 'Giftcard'; -$_['name_mollie_inghomepay'] = 'ING Home\'Pay'; -$_['name_mollie_eps'] = 'EPS'; -$_['name_mollie_giropay'] = 'Giropay'; - -// Text -$_['text_edit'] = "Bewerk Mollie"; -$_['text_payment'] = "Betaling"; -$_['text_success'] = "Gelukt: de instellingen voor de module zijn aangepast!"; -$_['text_missing_api_key'] = "Vul hieronder de API-key in."; -$_['text_activate_payment_method'] = 'Activeer deze betaalmethode via het Mollie-dashboard.'; -$_['text_no_status_id'] = "- Status niet wijzigen (niet aanbevolen) -"; - -// Entry -$_['entry_payment_method'] = "Betaalmethode"; -$_['entry_activate'] = "Activeren"; -$_['entry_sort_order'] = "Sorteervolgorde"; -$_['entry_api_key'] = "API-sleutel"; -$_['entry_description'] = "Omschrijving"; -$_['entry_show_icons'] = "Toon icoontjes"; -$_['entry_show_order_canceled_page'] = "Toon melding bij geannuleerde betalingen"; -$_['entry_geo_zone'] = "Geo Zone"; - -// Help -$_['help_view_profile'] = 'U kunt uw API-sleutel vinden bij uw Mollie-websiteprofielen.'; -$_['help_status'] = "Activeer de module"; -$_['help_api_key'] = "Voer hier de api_key van het websiteprofiel in dat u wilt gebruiken. De API-sleutel begint met test_ of live_."; -$_['help_description'] = "De omschrijving zal op het bankafschrift van uw klant verschijnen en kunt u terugvinden in het Mollie beheer. U kunt maximaal 29 tekens gebruiken. TIP: Gebruik %, dit zal vervangen worden door het ordernummer. Het ordernummer kan zelf ook meerdere tekens lang zijn!"; -$_['help_show_icons'] = "Toon icoontjes naast de betaalmethodes van Mollie op de betaalpagina."; -$_['help_show_order_canceled_page'] = "Toon een melding aan de klant als een betaling geannuleerd wordt, alvorens de klant terug naar het winkelmandje te verwijzen."; - -// Info -$_['entry_module'] = "Module"; -$_['entry_mod_status'] = "Modulestatus"; -$_['entry_comm_status'] = "Communicatiestatus"; -$_['entry_support'] = "Support"; - -$_['entry_version'] = 'Mollie Opencart'; - -// Error -$_['error_permission'] = "Waarschuwing: U heeft geen toestemming om de module aan te passen."; -$_['error_api_key'] = "Mollie API-sleutel is verplicht!"; -$_['error_api_key_invalid'] = "Ongeldige Mollie API-sleutel!"; -$_['error_description'] = "De omschrijving is verplicht!"; -$_['error_file_missing'] = "Bestand bestaat niet"; - -// Status -$_['entry_pending_status'] = "Status betaling aangemaakt"; -$_['entry_failed_status'] = "Status betaling mislukt"; -$_['entry_canceled_status'] = "Status betaling geannuleerd"; -$_['entry_expired_status'] = "Status betaling verlopen"; -$_['entry_processing_status']= "Status betaling succesvol"; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/admin/language/dutch/extension/payment/mollie_bancontact.php b/admin/language/dutch/extension/payment/mollie_bancontact.php index 4a1a8110..4d68cb30 100644 --- a/admin/language/dutch/extension/payment/mollie_bancontact.php +++ b/admin/language/dutch/extension/payment/mollie_bancontact.php @@ -1,4 +1,2 @@ + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +// These are called automatically by the Payment modules list - do not change the names +$method_list_logo = 'Mollie'; +$_['text_mollie_banktransfer'] = $method_list_logo; +$_['text_mollie_belfius'] = $method_list_logo; +$_['text_mollie_bitcoin'] = $method_list_logo; +$_['text_mollie_creditcard'] = $method_list_logo; +$_['text_mollie_directdebit'] = $method_list_logo; +$_['text_mollie_ideal'] = $method_list_logo; +$_['text_mollie_kbc'] = $method_list_logo; +$_['text_mollie_bancontact'] = $method_list_logo; +$_['text_mollie_paypal'] = $method_list_logo; +$_['text_mollie_paysafecard'] = $method_list_logo; +$_['text_mollie_sofort'] = $method_list_logo; +$_['text_mollie_giftcard'] = $method_list_logo; +$_['text_mollie_inghomepay'] = $method_list_logo; +$_['text_mollie_eps'] = $method_list_logo; +$_['text_mollie_giropay'] = $method_list_logo; + +// Heading +$_['heading_title'] = "Mollie"; +$_['title_global_options'] = "Instellingen"; +$_['title_payment_status'] = "Betaalstatussen"; +$_['title_mod_about'] = "Over deze module"; +$_['footer_text'] = "Betaaldiensten"; + +// Module names +$_['name_mollie_banktransfer'] = "Overboeking"; +$_['name_mollie_belfius'] = "Belfius Direct Net"; +$_['name_mollie_bitcoin'] = "Bitcoin"; +$_['name_mollie_creditcard'] = "Creditcard"; +$_['name_mollie_directdebit'] = "Eenmalige incasso"; +$_['name_mollie_ideal'] = "iDEAL"; +$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; +$_['name_mollie_bancontact'] = "bancontact"; +$_['name_mollie_paypal'] = "PayPal"; +$_['name_mollie_paysafecard'] = "paysafecard"; +$_['name_mollie_sofort'] = "SOFORT Banking"; +$_['name_mollie_giftcard'] = 'Giftcard'; +$_['name_mollie_inghomepay'] = 'ING Home\'Pay'; +$_['name_mollie_eps'] = 'EPS'; +$_['name_mollie_giropay'] = 'Giropay'; + +// Text +$_['text_edit'] = "Bewerk Mollie"; +$_['text_payment'] = "Betaling"; +$_['text_success'] = "Gelukt: de instellingen voor de module zijn aangepast!"; +$_['text_missing_api_key'] = "Vul hieronder de API-key in."; +$_['text_activate_payment_method'] = 'Activeer deze betaalmethode via het Mollie-dashboard.'; +$_['text_no_status_id'] = "- Status niet wijzigen (niet aanbevolen) -"; + +// Entry +$_['entry_payment_method'] = "Betaalmethode"; +$_['entry_activate'] = "Activeren"; +$_['entry_sort_order'] = "Sorteervolgorde"; +$_['entry_api_key'] = "API-sleutel"; +$_['entry_description'] = "Omschrijving"; +$_['entry_show_icons'] = "Toon icoontjes"; +$_['entry_show_order_canceled_page'] = "Toon melding bij geannuleerde betalingen"; +$_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Maximumbedrag voor creditcard"; +$_['eg_creditcard_max_amount'] = "eg.500"; + +// Help +$_['help_view_profile'] = 'U kunt uw API-sleutel vinden bij uw Mollie-websiteprofielen.'; +$_['help_status'] = "Activeer de module"; +$_['help_api_key'] = "Voer hier de api_key van het websiteprofiel in dat u wilt gebruiken. De API-sleutel begint met test_ of live_."; +$_['help_description'] = "De omschrijving zal op het bankafschrift van uw klant verschijnen en kunt u terugvinden in het Mollie beheer. U kunt maximaal 29 tekens gebruiken. TIP: Gebruik %, dit zal vervangen worden door het ordernummer. Het ordernummer kan zelf ook meerdere tekens lang zijn!"; +$_['help_show_icons'] = "Toon icoontjes naast de betaalmethodes van Mollie op de betaalpagina."; +$_['help_show_order_canceled_page'] = "Toon een melding aan de klant als een betaling geannuleerd wordt, alvorens de klant terug naar het winkelmandje te verwijzen."; +$_['help_creditcard_max_amount'] = 'Voer het bedrag in dat u hebt ingesteld voor uw creditcard in uw mollie-account.'; + +// Info +$_['entry_module'] = "Module"; +$_['entry_mod_status'] = "Modulestatus"; +$_['entry_comm_status'] = "Communicatiestatus"; +$_['entry_support'] = "Support"; + +$_['entry_version'] = 'Mollie Opencart'; + +// Error +$_['error_permission'] = "Waarschuwing: U heeft geen toestemming om de module aan te passen."; +$_['error_api_key'] = "Mollie API-sleutel is verplicht!"; +$_['error_api_key_invalid'] = "Ongeldige Mollie API-sleutel!"; +$_['error_description'] = "De omschrijving is verplicht!"; +$_['error_file_missing'] = "Bestand bestaat niet"; + +// Status +$_['entry_pending_status'] = "Status betaling aangemaakt"; +$_['entry_failed_status'] = "Status betaling mislukt"; +$_['entry_canceled_status'] = "Status betaling geannuleerd"; +$_['entry_expired_status'] = "Status betaling verlopen"; +$_['entry_processing_status']= "Status betaling succesvol"; diff --git a/admin/language/dutch/payment/mollie_bancontact.php b/admin/language/dutch/payment/mollie_bancontact.php new file mode 100644 index 00000000..4a1a8110 --- /dev/null +++ b/admin/language/dutch/payment/mollie_bancontact.php @@ -0,0 +1,4 @@ + - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -// These are called automatically by the Payment modules list - do not change the names -$method_list_logo = 'Mollie'; -$_['text_mollie_banktransfer'] = $method_list_logo; -$_['text_mollie_belfius'] = $method_list_logo; -$_['text_mollie_bitcoin'] = $method_list_logo; -$_['text_mollie_creditcard'] = $method_list_logo; -$_['text_mollie_directdebit'] = $method_list_logo; -$_['text_mollie_ideal'] = $method_list_logo; -$_['text_mollie_kbc'] = $method_list_logo; -$_['text_mollie_bancontact'] = $method_list_logo; -$_['text_mollie_paypal'] = $method_list_logo; -$_['text_mollie_paysafecard'] = $method_list_logo; -$_['text_mollie_sofort'] = $method_list_logo; -$_['text_mollie_giftcard'] = $method_list_logo; -$_['text_mollie_inghomepay'] = $method_list_logo; -$_['text_mollie_eps'] = $method_list_logo; -$_['text_mollie_giropay'] = $method_list_logo; - -// Heading -$_['heading_title'] = "Mollie"; -$_['title_global_options'] = "Settings"; -$_['title_payment_status'] = "Payment statuses"; -$_['title_mod_about'] = "About this module"; -$_['footer_text'] = "Payment services"; - -// Module names -$_['name_mollie_banktransfer'] = "Bank transfer"; -$_['name_mollie_belfius'] = "Belfius Direct Net"; -$_['name_mollie_bitcoin'] = "Bitcoin"; -$_['name_mollie_creditcard'] = "Creditcard"; -$_['name_mollie_directdebit'] = "Direct debit"; -$_['name_mollie_ideal'] = "iDEAL"; -$_['name_mollie_kbc'] = "KBC/CBC Payment Button"; -$_['name_mollie_bancontact'] = "Bancontact"; -$_['name_mollie_paypal'] = "PayPal"; -$_['name_mollie_paysafecard'] = "paysafecard"; -$_['name_mollie_sofort'] = "SOFORT Banking"; -$_['name_mollie_giftcard'] = 'Giftcard'; -$_['name_mollie_inghomepay'] = 'ING Home\'pay'; -$_['name_mollie_eps'] = 'EPS'; -$_['name_mollie_giropay'] = 'Giropay'; - -// Text -$_['text_edit'] = "Edit"; -$_['text_payment'] = "Payment"; -$_['text_success'] = "Success: You have successfully modified your Mollie settings!"; -$_['text_missing_api_key'] = "Please fill out your API key below."; -$_['text_activate_payment_method'] = 'Enable this payment method in your Mollie dashboard.'; -$_['text_no_status_id'] = "- Do not update the order status (not recommended) -"; - -// Entry -$_['entry_payment_method'] = "Payment method"; -$_['entry_activate'] = "Activate"; -$_['entry_sort_order'] = "Sort order"; -$_['entry_api_key'] = "API key"; -$_['entry_description'] = "Description"; -$_['entry_show_icons'] = "Show icons"; -$_['entry_show_order_canceled_page'] = "Show message if payment is cancelled"; -$_['entry_geo_zone'] = "Geo Zone"; - -// Help -$_['help_view_profile'] = 'You can find your API key in your Mollie website profiles.'; -$_['help_status'] = "Activate the module"; -$_['help_api_key'] = 'Enter the api_key of the website profile you want to use. The API key starts with test_ or live_.'; -$_['help_description'] = 'This description will appear on the bank / card statement of your customer. You may use a maximum of 29 characters. TIP: Use %, this will be replaced by the order id of the payment. Don\'t forget % can be multiple characters long!'; -$_['help_show_icons'] = 'Show icons next to the Mollie payment methods on the checkout page.'; -$_['help_show_order_canceled_page'] = 'Show a message to the customer if a payment is cancelled, before redirecting the customer back to their shopping cart.'; - -// Info -$_['entry_module'] = "Module"; -$_['entry_mod_status'] = "Module status"; -$_['entry_comm_status'] = "Communication status"; -$_['entry_support'] = "Support"; - -$_['entry_version'] = 'Mollie Opencart'; - -// Error -$_['error_permission'] = "Warning: You don't have permission to modify the Mollie payment methods."; -$_['error_api_key'] = "Mollie API key is required!"; -$_['error_api_key_invalid'] = "Invalid API key!"; -$_['error_description'] = "Description is required!"; -$_['error_file_missing'] = "File does not exist"; - -// Status -$_['entry_pending_status'] = "Payment created status"; -$_['entry_failed_status'] = "Payment failed status"; -$_['entry_canceled_status'] = "Payment canceled status"; -$_['entry_expired_status'] = "Payment expired status"; -$_['entry_processing_status'] = "Payment successful status"; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/admin/language/en-gb/extension/payment/mollie_bancontact.php b/admin/language/en-gb/extension/payment/mollie_bancontact.php index 4a1a8110..4d68cb30 100644 --- a/admin/language/en-gb/extension/payment/mollie_bancontact.php +++ b/admin/language/en-gb/extension/payment/mollie_bancontact.php @@ -1,4 +1,2 @@ + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +// These are called automatically by the Payment modules list - do not change the names +$method_list_logo = 'Mollie'; +$_['text_mollie_banktransfer'] = $method_list_logo; +$_['text_mollie_belfius'] = $method_list_logo; +$_['text_mollie_bitcoin'] = $method_list_logo; +$_['text_mollie_creditcard'] = $method_list_logo; +$_['text_mollie_directdebit'] = $method_list_logo; +$_['text_mollie_ideal'] = $method_list_logo; +$_['text_mollie_kbc'] = $method_list_logo; +$_['text_mollie_bancontact'] = $method_list_logo; +$_['text_mollie_paypal'] = $method_list_logo; +$_['text_mollie_paysafecard'] = $method_list_logo; +$_['text_mollie_sofort'] = $method_list_logo; +$_['text_mollie_giftcard'] = $method_list_logo; +$_['text_mollie_inghomepay'] = $method_list_logo; +$_['text_mollie_eps'] = $method_list_logo; +$_['text_mollie_giropay'] = $method_list_logo; + +// Heading +$_['heading_title'] = "Mollie"; +$_['title_global_options'] = "Settings"; +$_['title_payment_status'] = "Payment statuses"; +$_['title_mod_about'] = "About this module"; +$_['footer_text'] = "Payment services"; + +// Module names +$_['name_mollie_banktransfer'] = "Bank transfer"; +$_['name_mollie_belfius'] = "Belfius Direct Net"; +$_['name_mollie_bitcoin'] = "Bitcoin"; +$_['name_mollie_creditcard'] = "Creditcard"; +$_['name_mollie_directdebit'] = "Direct debit"; +$_['name_mollie_ideal'] = "iDEAL"; +$_['name_mollie_kbc'] = "KBC/CBC Payment Button"; +$_['name_mollie_bancontact'] = "Bancontact"; +$_['name_mollie_paypal'] = "PayPal"; +$_['name_mollie_paysafecard'] = "paysafecard"; +$_['name_mollie_sofort'] = "SOFORT Banking"; +$_['name_mollie_giftcard'] = 'Giftcard'; +$_['name_mollie_inghomepay'] = 'ING Home\'pay'; +$_['name_mollie_eps'] = 'EPS'; +$_['name_mollie_giropay'] = 'Giropay'; + +// Text +$_['text_edit'] = "Edit"; +$_['text_payment'] = "Payment"; +$_['text_success'] = "Success: You have successfully modified your Mollie settings!"; +$_['text_missing_api_key'] = "Please fill out your API key below."; +$_['text_activate_payment_method'] = 'Enable this payment method in your Mollie dashboard.'; +$_['text_no_status_id'] = "- Do not update the order status (not recommended) -"; + +// Entry +$_['entry_payment_method'] = "Payment method"; +$_['entry_activate'] = "Activate"; +$_['entry_sort_order'] = "Sort order"; +$_['entry_api_key'] = "API key"; +$_['entry_description'] = "Description"; +$_['entry_show_icons'] = "Show icons"; +$_['entry_show_order_canceled_page'] = "Show message if payment is cancelled"; +$_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Maximum amount for credit card"; +$_['eg_creditcard_max_amount'] = "eg.500"; + +// Help +$_['help_view_profile'] = 'You can find your API key in your Mollie website profiles.'; +$_['help_status'] = "Activate the module"; +$_['help_api_key'] = 'Enter the api_key of the website profile you want to use. The API key starts with test_ or live_.'; +$_['help_description'] = 'This description will appear on the bank / card statement of your customer. You may use a maximum of 29 characters. TIP: Use %, this will be replaced by the order id of the payment. Don\'t forget % can be multiple characters long!'; +$_['help_show_icons'] = 'Show icons next to the Mollie payment methods on the checkout page.'; +$_['help_show_order_canceled_page'] = 'Show a message to the customer if a payment is cancelled, before redirecting the customer back to their shopping cart.'; +$_['help_creditcard_max_amount'] = 'Enter the amount you have set for credit card in your mollie account.'; + +// Info +$_['entry_module'] = "Module"; +$_['entry_mod_status'] = "Module status"; +$_['entry_comm_status'] = "Communication status"; +$_['entry_support'] = "Support"; + +$_['entry_version'] = 'Mollie Opencart'; + +// Error +$_['error_permission'] = "Warning: You don't have permission to modify the Mollie payment methods."; +$_['error_api_key'] = "Mollie API key is required!"; +$_['error_api_key_invalid'] = "Invalid API key!"; +$_['error_description'] = "Description is required!"; +$_['error_file_missing'] = "File does not exist"; + +// Status +$_['entry_pending_status'] = "Payment created status"; +$_['entry_failed_status'] = "Payment failed status"; +$_['entry_canceled_status'] = "Payment canceled status"; +$_['entry_expired_status'] = "Payment expired status"; +$_['entry_processing_status'] = "Payment successful status"; diff --git a/admin/language/en-gb/payment/mollie_bancontact.php b/admin/language/en-gb/payment/mollie_bancontact.php new file mode 100644 index 00000000..4a1a8110 --- /dev/null +++ b/admin/language/en-gb/payment/mollie_bancontact.php @@ -0,0 +1,4 @@ + - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -// These are called automatically by the Payment modules list - do not change the names -$method_list_logo = 'Mollie'; -$_['text_mollie_banktransfer'] = $method_list_logo; -$_['text_mollie_belfius'] = $method_list_logo; -$_['text_mollie_bitcoin'] = $method_list_logo; -$_['text_mollie_creditcard'] = $method_list_logo; -$_['text_mollie_directdebit'] = $method_list_logo; -$_['text_mollie_ideal'] = $method_list_logo; -$_['text_mollie_kbc'] = $method_list_logo; -$_['text_mollie_bancontact'] = $method_list_logo; -$_['text_mollie_paypal'] = $method_list_logo; -$_['text_mollie_paysafecard'] = $method_list_logo; -$_['text_mollie_sofort'] = $method_list_logo; -$_['text_mollie_giftcard'] = $method_list_logo; -$_['text_mollie_inghomepay'] = $method_list_logo; - -// Heading -$_['heading_title'] = "Mollie"; -$_['title_global_options'] = "Settings"; -$_['title_payment_status'] = "Payment statuses"; -$_['title_mod_about'] = "About this module"; -$_['footer_text'] = "Payment services"; - -// Module names -$_['name_mollie_banktransfer'] = "Bank transfer"; -$_['name_mollie_belfius'] = "Belfius Direct Net"; -$_['name_mollie_bitcoin'] = "Bitcoin"; -$_['name_mollie_creditcard'] = "Creditcard"; -$_['name_mollie_directdebit'] = "Direct debit"; -$_['name_mollie_ideal'] = "iDEAL"; -$_['name_mollie_kbc'] = "KBC/CBC Payment Button"; -$_['name_mollie_bancontact'] = "Bancontact"; -$_['name_mollie_paypal'] = "PayPal"; -$_['name_mollie_paysafecard'] = "paysafecard"; -$_['name_mollie_sofort'] = "SOFORT Banking"; -$_['name_mollie_giftcard'] = 'Giftcard'; -$_['name_mollie_inghomepay'] = 'ING Home\'pay'; -$_['name_mollie_eps'] = 'EPS'; -$_['name_mollie_giropay'] = 'Giropay'; - -// Text -$_['text_edit'] = "Edit"; -$_['text_payment'] = "Payment"; -$_['text_success'] = "Success: You have successfully modified your Mollie settings!"; -$_['text_missing_api_key'] = "Please fill out your API key below."; -$_['text_activate_payment_method'] = 'Enable this payment method in your Mollie dashboard.'; -$_['text_no_status_id'] = "- Do not update the order status (not recommended) -"; - -// Entry -$_['entry_payment_method'] = "Payment method"; -$_['entry_activate'] = "Activate"; -$_['entry_sort_order'] = "Sort order"; -$_['entry_api_key'] = "API key"; -$_['entry_description'] = "Description"; -$_['entry_show_icons'] = "Show icons"; -$_['entry_show_order_canceled_page'] = "Show message if payment is cancelled"; -$_['entry_geo_zone'] = "Geo Zone"; - -// Help -$_['help_view_profile'] = 'You can find your API key in your Mollie website profiles.'; -$_['help_status'] = "Activate the module"; -$_['help_api_key'] = 'Enter the api_key of the website profile you want to use. The API key starts with test_ or live_.'; -$_['help_description'] = 'This description will appear on the bank / card statement of your customer. You may use a maximum of 29 characters. TIP: Use %, this will be replaced by the order id of the payment. Don\'t forget % can be multiple characters long!'; -$_['help_show_icons'] = 'Show icons next to the Mollie payment methods on the checkout page.'; -$_['help_show_order_canceled_page'] = 'Show a message to the customer if a payment is cancelled, before redirecting the customer back to their shopping cart.'; - -// Info -$_['entry_module'] = "Module"; -$_['entry_mod_status'] = "Module status"; -$_['entry_comm_status'] = "Communication status"; -$_['entry_support'] = "Support"; - -$_['entry_version'] = 'Mollie Opencart'; - -// Error -$_['error_permission'] = "Warning: You don't have permission to modify the Mollie payment methods."; -$_['error_api_key'] = "Mollie API key is required!"; -$_['error_api_key_invalid'] = "Invalid API key!"; -$_['error_description'] = "Description is required!"; -$_['error_file_missing'] = "File does not exist"; - -// Status -$_['entry_pending_status'] = "Payment created status"; -$_['entry_failed_status'] = "Payment failed status"; -$_['entry_canceled_status'] = "Payment canceled status"; -$_['entry_expired_status'] = "Payment expired status"; -$_['entry_processing_status'] = "Payment successful status"; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/admin/language/english/extension/payment/mollie_bancontact.php b/admin/language/english/extension/payment/mollie_bancontact.php index 4a1a8110..4d68cb30 100644 --- a/admin/language/english/extension/payment/mollie_bancontact.php +++ b/admin/language/english/extension/payment/mollie_bancontact.php @@ -1,4 +1,2 @@ + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +// These are called automatically by the Payment modules list - do not change the names +$method_list_logo = 'Mollie'; +$_['text_mollie_banktransfer'] = $method_list_logo; +$_['text_mollie_belfius'] = $method_list_logo; +$_['text_mollie_bitcoin'] = $method_list_logo; +$_['text_mollie_creditcard'] = $method_list_logo; +$_['text_mollie_directdebit'] = $method_list_logo; +$_['text_mollie_ideal'] = $method_list_logo; +$_['text_mollie_kbc'] = $method_list_logo; +$_['text_mollie_bancontact'] = $method_list_logo; +$_['text_mollie_paypal'] = $method_list_logo; +$_['text_mollie_paysafecard'] = $method_list_logo; +$_['text_mollie_sofort'] = $method_list_logo; +$_['text_mollie_giftcard'] = $method_list_logo; +$_['text_mollie_inghomepay'] = $method_list_logo; + +// Heading +$_['heading_title'] = "Mollie"; +$_['title_global_options'] = "Settings"; +$_['title_payment_status'] = "Payment statuses"; +$_['title_mod_about'] = "About this module"; +$_['footer_text'] = "Payment services"; + +// Module names +$_['name_mollie_banktransfer'] = "Bank transfer"; +$_['name_mollie_belfius'] = "Belfius Direct Net"; +$_['name_mollie_bitcoin'] = "Bitcoin"; +$_['name_mollie_creditcard'] = "Creditcard"; +$_['name_mollie_directdebit'] = "Direct debit"; +$_['name_mollie_ideal'] = "iDEAL"; +$_['name_mollie_kbc'] = "KBC/CBC Payment Button"; +$_['name_mollie_bancontact'] = "Bancontact"; +$_['name_mollie_paypal'] = "PayPal"; +$_['name_mollie_paysafecard'] = "paysafecard"; +$_['name_mollie_sofort'] = "SOFORT Banking"; +$_['name_mollie_giftcard'] = 'Giftcard'; +$_['name_mollie_inghomepay'] = 'ING Home\'pay'; +$_['name_mollie_eps'] = 'EPS'; +$_['name_mollie_giropay'] = 'Giropay'; + +// Text +$_['text_edit'] = "Edit"; +$_['text_payment'] = "Payment"; +$_['text_success'] = "Success: You have successfully modified your Mollie settings!"; +$_['text_missing_api_key'] = "Please fill out your API key below."; +$_['text_activate_payment_method'] = 'Enable this payment method in your Mollie dashboard.'; +$_['text_no_status_id'] = "- Do not update the order status (not recommended) -"; + +// Entry +$_['entry_payment_method'] = "Payment method"; +$_['entry_activate'] = "Activate"; +$_['entry_sort_order'] = "Sort order"; +$_['entry_api_key'] = "API key"; +$_['entry_description'] = "Description"; +$_['entry_show_icons'] = "Show icons"; +$_['entry_show_order_canceled_page'] = "Show message if payment is cancelled"; +$_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Maximum amount for credit card"; +$_['eg_creditcard_max_amount'] = "eg.500"; + +// Help +$_['help_view_profile'] = 'You can find your API key in your Mollie website profiles.'; +$_['help_status'] = "Activate the module"; +$_['help_api_key'] = 'Enter the api_key of the website profile you want to use. The API key starts with test_ or live_.'; +$_['help_description'] = 'This description will appear on the bank / card statement of your customer. You may use a maximum of 29 characters. TIP: Use %, this will be replaced by the order id of the payment. Don\'t forget % can be multiple characters long!'; +$_['help_show_icons'] = 'Show icons next to the Mollie payment methods on the checkout page.'; +$_['help_show_order_canceled_page'] = 'Show a message to the customer if a payment is cancelled, before redirecting the customer back to their shopping cart.'; +$_['help_creditcard_max_amount'] = 'Enter the amount you have set for credit card in your mollie account.'; + +// Info +$_['entry_module'] = "Module"; +$_['entry_mod_status'] = "Module status"; +$_['entry_comm_status'] = "Communication status"; +$_['entry_support'] = "Support"; + +$_['entry_version'] = 'Mollie Opencart'; + +// Error +$_['error_permission'] = "Warning: You don't have permission to modify the Mollie payment methods."; +$_['error_api_key'] = "Mollie API key is required!"; +$_['error_api_key_invalid'] = "Invalid API key!"; +$_['error_description'] = "Description is required!"; +$_['error_file_missing'] = "File does not exist"; + +// Status +$_['entry_pending_status'] = "Payment created status"; +$_['entry_failed_status'] = "Payment failed status"; +$_['entry_canceled_status'] = "Payment canceled status"; +$_['entry_expired_status'] = "Payment expired status"; +$_['entry_processing_status'] = "Payment successful status"; diff --git a/admin/language/english/payment/mollie_bancontact.php b/admin/language/english/payment/mollie_bancontact.php new file mode 100644 index 00000000..4a1a8110 --- /dev/null +++ b/admin/language/english/payment/mollie_bancontact.php @@ -0,0 +1,4 @@ + - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -// These are called automatically by the Payment modules list - do not change the names -$method_list_logo = 'Mollie'; -$_['text_mollie_banktransfer'] = $method_list_logo; -$_['text_mollie_belfius'] = $method_list_logo; -$_['text_mollie_bitcoin'] = $method_list_logo; -$_['text_mollie_creditcard'] = $method_list_logo; -$_['text_mollie_directdebit'] = $method_list_logo; -$_['text_mollie_ideal'] = $method_list_logo; -$_['text_mollie_kbc'] = $method_list_logo; -$_['text_mollie_mistercash'] = $method_list_logo; -$_['text_mollie_paypal'] = $method_list_logo; -$_['text_mollie_paysafecard'] = $method_list_logo; -$_['text_mollie_sofort'] = $method_list_logo; -$_['text_mollie_giftcard'] = $method_list_logo; -$_['text_mollie_inghomepay'] = $method_list_logo; -$_['text_mollie_eps'] = $method_list_logo; -$_['text_mollie_giropay'] = $method_list_logo; - -// Heading -$_['heading_title'] = "Mollie"; -$_['title_global_options'] = "Ajustes"; -$_['title_payment_status'] = "Estados de pago"; -$_['title_mod_about'] = "Acerca de este módulo"; -$_['footer_text'] = "Servicios de pago"; - -// Module names -$_['name_mollie_banktransfer'] = "Transferencia bancaria"; -$_['name_mollie_belfius'] = "Belfius Direct Net"; -$_['name_mollie_bitcoin'] = "Bitcoin"; -$_['name_mollie_creditcard'] = "Creditcard"; -$_['name_mollie_directdebit'] = "Adeudo bancario"; -$_['name_mollie_ideal'] = "iDEAL"; -$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; -$_['name_mollie_mistercash'] = "Bancontact/MisterCash"; -$_['name_mollie_paypal'] = "PayPal"; -$_['name_mollie_paysafecard'] = "paysafecard"; -$_['name_mollie_sofort'] = "SOFORT Banking"; -$_['name_mollie_giftcard'] = 'Giftcard'; -$_['name_mollie_inghomepay'] = 'ING Home\'Pay'; -$_['name_mollie_eps'] = 'EPS'; -$_['name_mollie_giropay'] = 'Giropay'; - -// Text -$_['text_edit'] = "Corregir Mollie"; -$_['text_payment'] = "Pago"; -$_['text_success'] = "Realizado con éxito: ¡los ajustes para el módulo han sido modificados!"; -$_['text_missing_api_key'] = "Escriba la clave API."; -$_['text_activate_payment_method'] = 'Active esta forma de pago a través del panel de control de Mollie.'; -$_['text_no_status_id'] = "- No cambiar de estado (no recomendado) -"; - -// Entry -$_['entry_payment_method'] = "Método de pago"; -$_['entry_activate'] = "Activar"; -$_['entry_sort_order'] = "Orden de clasificación"; -$_['entry_api_key'] = "Clave API"; -$_['entry_description'] = "Descripción"; -$_['entry_show_icons'] = "Mostrar iconos"; -$_['entry_show_order_canceled_page'] = "Mostrar notificación en caso de cancelación de pagos"; -$_['entry_geo_zone'] = "Zona Geo"; - -// Help -$_['help_view_profile'] = 'Puede encontrar su clave API en sus -perfiles de la web de Mollie.'; -$_['help_status'] = "Activar módulo"; -$_['help_api_key'] = "Introduzca aquí la clave_api del perfil de la web que desea utilizar. La clave API comienza con test_ o live_."; -$_['help_description'] = "La descripción aparecerá en el estado de cuenta de su cliente y se puede encontrar en la administración de Mollie. Puede utilizar hasta 29 caracteres. CONSEJO: Use%, que será reemplazado por el número de pedido. ¡El número de pedido puede tener algunos caracteres más!"; -$_['help_show_icons'] = "Mostrar iconos junto a los métodos de pago de Mollie en la página de pago."; -$_['help_show_order_canceled_page'] = "Mostrar una notificación al cliente si un pago es cancelado, antes de redirigir al cliente de nuevo a la cesta de la compra."; - -// Info -$_['entry_module'] = "Module"; -$_['entry_mod_status'] = "Modulestatus"; -$_['entry_comm_status'] = "Estado de comunicación"; -$_['entry_support'] = "Ayuda"; - -$_['entry_version'] = 'Mollie Opencart'; - -// Error -$_['error_permission'] = "Advertencia: no tienes permiso para modificar el módulo."; -$_['error_api_key'] = "¡La clave API de Mollie es obligatoria!"; -$_['error_api_key_invalid'] = "¡Clave inválida de Mollie API!"; -$_['error_description'] = "¡La descripción es obligatoria!"; -$_['error_file_missing'] = "El archivo no existe"; - -// Status -$_['entry_pending_status'] = "¡Clave de API Mollie inválida!"; -$_['entry_failed_status'] = "Estado de pago creado"; -$_['entry_canceled_status'] = "Estado del pago fallido"; -$_['entry_expired_status'] = "Estado del pago cancelado"; -$_['entry_processing_status']= "Estado del pago vencido"; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/admin/language/es-es/extension/payment/mollie_bancontact.php b/admin/language/es-es/extension/payment/mollie_bancontact.php new file mode 100644 index 00000000..4d68cb30 --- /dev/null +++ b/admin/language/es-es/extension/payment/mollie_bancontact.php @@ -0,0 +1,2 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +// These are called automatically by the Payment modules list - do not change the names +$method_list_logo = 'Mollie'; +$_['text_mollie_banktransfer'] = $method_list_logo; +$_['text_mollie_belfius'] = $method_list_logo; +$_['text_mollie_bitcoin'] = $method_list_logo; +$_['text_mollie_creditcard'] = $method_list_logo; +$_['text_mollie_directdebit'] = $method_list_logo; +$_['text_mollie_ideal'] = $method_list_logo; +$_['text_mollie_kbc'] = $method_list_logo; +$_['text_mollie_mistercash'] = $method_list_logo; +$_['text_mollie_paypal'] = $method_list_logo; +$_['text_mollie_paysafecard'] = $method_list_logo; +$_['text_mollie_sofort'] = $method_list_logo; +$_['text_mollie_giftcard'] = $method_list_logo; +$_['text_mollie_inghomepay'] = $method_list_logo; +$_['text_mollie_eps'] = $method_list_logo; +$_['text_mollie_giropay'] = $method_list_logo; + +// Heading +$_['heading_title'] = "Mollie"; +$_['title_global_options'] = "Ajustes"; +$_['title_payment_status'] = "Estados de pago"; +$_['title_mod_about'] = "Acerca de este módulo"; +$_['footer_text'] = "Servicios de pago"; + +// Module names +$_['name_mollie_banktransfer'] = "Transferencia bancaria"; +$_['name_mollie_belfius'] = "Belfius Direct Net"; +$_['name_mollie_bitcoin'] = "Bitcoin"; +$_['name_mollie_creditcard'] = "Creditcard"; +$_['name_mollie_directdebit'] = "Adeudo bancario"; +$_['name_mollie_ideal'] = "iDEAL"; +$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; +$_['name_mollie_mistercash'] = "Bancontact/MisterCash"; +$_['name_mollie_paypal'] = "PayPal"; +$_['name_mollie_paysafecard'] = "paysafecard"; +$_['name_mollie_sofort'] = "SOFORT Banking"; +$_['name_mollie_giftcard'] = 'Giftcard'; +$_['name_mollie_inghomepay'] = 'ING Home\'Pay'; +$_['name_mollie_eps'] = 'EPS'; +$_['name_mollie_giropay'] = 'Giropay'; + +// Text +$_['text_edit'] = "Corregir Mollie"; +$_['text_payment'] = "Pago"; +$_['text_success'] = "Realizado con éxito: ¡los ajustes para el módulo han sido modificados!"; +$_['text_missing_api_key'] = "Escriba la clave API."; +$_['text_activate_payment_method'] = 'Active esta forma de pago a través del panel de control de Mollie.'; +$_['text_no_status_id'] = "- No cambiar de estado (no recomendado) -"; + +// Entry +$_['entry_payment_method'] = "Método de pago"; +$_['entry_activate'] = "Activar"; +$_['entry_sort_order'] = "Orden de clasificación"; +$_['entry_api_key'] = "Clave API"; +$_['entry_description'] = "Descripción"; +$_['entry_show_icons'] = "Mostrar iconos"; +$_['entry_show_order_canceled_page'] = "Mostrar notificación en caso de cancelación de pagos"; +$_['entry_geo_zone'] = "Zona Geo"; +$_['entry_creditcard_max_amount'] = "Monto máximo por tarjeta de crédito"; +$_['eg_creditcard_max_amount'] = "eg.500"; + + +// Help +$_['help_view_profile'] = 'Puede encontrar su clave API en sus +perfiles de la web de Mollie.'; +$_['help_status'] = "Activar módulo"; +$_['help_api_key'] = "Introduzca aquí la clave_api del perfil de la web que desea utilizar. La clave API comienza con test_ o live_."; +$_['help_description'] = "La descripción aparecerá en el estado de cuenta de su cliente y se puede encontrar en la administración de Mollie. Puede utilizar hasta 29 caracteres. CONSEJO: Use%, que será reemplazado por el número de pedido. ¡El número de pedido puede tener algunos caracteres más!"; +$_['help_show_icons'] = "Mostrar iconos junto a los métodos de pago de Mollie en la página de pago."; +$_['help_show_order_canceled_page'] = "Mostrar una notificación al cliente si un pago es cancelado, antes de redirigir al cliente de nuevo a la cesta de la compra."; +$_['help_creditcard_max_amount'] = 'Ingrese el monto que ha configurado para la tarjeta de crédito en su cuenta de Mollie.'; + +// Info +$_['entry_module'] = "Module"; +$_['entry_mod_status'] = "Modulestatus"; +$_['entry_comm_status'] = "Estado de comunicación"; +$_['entry_support'] = "Ayuda"; + +$_['entry_version'] = 'Mollie Opencart'; + +// Error +$_['error_permission'] = "Advertencia: no tienes permiso para modificar el módulo."; +$_['error_api_key'] = "¡La clave API de Mollie es obligatoria!"; +$_['error_api_key_invalid'] = "¡Clave inválida de Mollie API!"; +$_['error_description'] = "¡La descripción es obligatoria!"; +$_['error_file_missing'] = "El archivo no existe"; + +// Status +$_['entry_pending_status'] = "¡Clave de API Mollie inválida!"; +$_['entry_failed_status'] = "Estado de pago creado"; +$_['entry_canceled_status'] = "Estado del pago fallido"; +$_['entry_expired_status'] = "Estado del pago cancelado"; +$_['entry_processing_status']= "Estado del pago vencido"; diff --git a/admin/language/es-es/payment/mollie_banktransfer.php b/admin/language/es-es/payment/mollie_banktransfer.php new file mode 100644 index 00000000..8a40e816 --- /dev/null +++ b/admin/language/es-es/payment/mollie_banktransfer.php @@ -0,0 +1,4 @@ + - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -// These are called automatically by the Payment modules list - do not change the names -$method_list_logo = 'Mollie'; -$_['text_mollie_banktransfer'] = $method_list_logo; -$_['text_mollie_belfius'] = $method_list_logo; -$_['text_mollie_bitcoin'] = $method_list_logo; -$_['text_mollie_creditcard'] = $method_list_logo; -$_['text_mollie_directdebit'] = $method_list_logo; -$_['text_mollie_ideal'] = $method_list_logo; -$_['text_mollie_kbc'] = $method_list_logo; -$_['text_mollie_bancontact'] = $method_list_logo; -$_['text_mollie_paypal'] = $method_list_logo; -$_['text_mollie_paysafecard'] = $method_list_logo; -$_['text_mollie_sofort'] = $method_list_logo; -$_['text_mollie_giftcard'] = $method_list_logo; -$_['text_mollie_inghomepay'] = $method_list_logo; -$_['text_mollie_eps'] = $method_list_logo; -$_['text_mollie_giropay'] = $method_list_logo; - -// Heading -$_['heading_title'] = "Mollie"; -$_['title_global_options'] = "Paramètres"; -$_['title_payment_status'] = "États de paiement"; -$_['title_mod_about'] = "Sur ce module"; -$_['footer_text'] = "Services paiement"; - -// Module names -$_['name_mollie_banktransfer'] = "Virement bancaire"; -$_['name_mollie_belfius'] = "Belfius Direct Net"; -$_['name_mollie_bitcoin'] = "Bitcoin"; -$_['name_mollie_creditcard'] = "Creditcard"; -$_['name_mollie_directdebit'] = "Débit direct"; -$_['name_mollie_ideal'] = "iDEAL"; -$_['name_mollie_kbc'] = "Bouton de paiement KBC/CBC"; -$_['name_mollie_bancontact'] = "Bancontact"; -$_['name_mollie_paypal'] = "PayPal"; -$_['name_mollie_paysafecard'] = "paysafecard"; -$_['name_mollie_sofort'] = "SOFORT Banking"; -$_['name_mollie_giftcard'] = 'Giftcard'; -$_['name_mollie_inghomepay'] = 'ING Home\'pay'; -$_['name_mollie_eps'] = 'EPS'; -$_['name_mollie_giropay'] = 'Giropay'; - -// Text -$_['text_edit'] = "Éditer Mollie"; -$_['text_payment'] = "Paiement"; -$_['text_success'] = "Succès: Vous avez réussi à modifier les paramètres Mollie!"; -$_['text_missing_api_key'] = "Remplir votre clé API ci-dessous."; -$_['text_activate_payment_method'] = 'Activer ce mode de paiement via le Mollie dashboard.'; -$_['text_no_status_id'] = '- Ne pas mettre à jour le statut (non recommandé) -'; - -// Entry -$_['entry_payment_method'] = "Procédé de paiement"; -$_['entry_activate'] = "Activate"; -$_['entry_sort_order'] = "Ordre de triage"; -$_['entry_api_key'] = "Clé API"; -$_['entry_description'] = "Description"; -$_['entry_show_icons'] = "Afficher des icônes"; -$_['entry_show_order_canceled_page'] = "Afficher un message si le paiement est annulé"; - -// Help -$_['help_view_profile'] = 'Vous pouvez trouver votre clé API dans vos profils de site à Mollie.'; -$_['help_status'] = "Activer le module"; -$_['help_api_key'] = 'Entrer ici le api_key du profil que vous souhaitez utiliser. Le clé API commence par test_ ou live_.'; -$_['help_description'] = 'Cette description apparaîtra sur le relevé bancaire de votre client. Vous pouvez utiliser un maximum de 29 caractères. ASTUCE: Utilisez le %, il sera remplacé par l\'id de la commande du paiement. N\'oubliez pas que %/code> peut devenir plusieurs caractères!'; -$_['help_show_icons'] = 'Afficher les icônes à côté des méthodes de paiement Mollie sur la page de paiement.'; -$_['help_show_order_canceled_page'] = 'Afficher un message au client si un paiement est annulé, avant de rediriger le client vers leur panier.'; - -// Info -$_['entry_module'] = "Module"; -$_['entry_mod_status'] = "État du module"; -$_['entry_comm_status'] = "État de la communication"; -$_['entry_support'] = "Assistance"; - -$_['entry_version'] = 'MollieOpenCart'; - -// Error -$_['error_permission'] = "Attention: Vous n'avez pas l'autorisation de modifier les méthodes de paiement Mollie."; -$_['error_api_key'] = "La clé API est nécessaire!"; -$_['error_api_key_invalid'] = "La clé API est invalide!"; -$_['error_description'] = "Description est nécessaire!"; -$_['error_file_missing'] = "Fichier ne existe pas"; - -// Status -$_['entry_pending_status'] = "État de paiement attente"; -$_['entry_failed_status'] = "État de paiement échoué"; -$_['entry_canceled_status'] = "État de paiement annulé"; -$_['entry_expired_status'] = "État de paiement expiré"; -$_['entry_processing_status'] = "État de paiement traitement"; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/admin/language/fr-fr/extension/payment/mollie_bancontact.php b/admin/language/fr-fr/extension/payment/mollie_bancontact.php index 4a1a8110..4d68cb30 100644 --- a/admin/language/fr-fr/extension/payment/mollie_bancontact.php +++ b/admin/language/fr-fr/extension/payment/mollie_bancontact.php @@ -1,4 +1,2 @@ + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +// These are called automatically by the Payment modules list - do not change the names +$method_list_logo = 'Mollie'; +$_['text_mollie_banktransfer'] = $method_list_logo; +$_['text_mollie_belfius'] = $method_list_logo; +$_['text_mollie_bitcoin'] = $method_list_logo; +$_['text_mollie_creditcard'] = $method_list_logo; +$_['text_mollie_directdebit'] = $method_list_logo; +$_['text_mollie_ideal'] = $method_list_logo; +$_['text_mollie_kbc'] = $method_list_logo; +$_['text_mollie_bancontact'] = $method_list_logo; +$_['text_mollie_paypal'] = $method_list_logo; +$_['text_mollie_paysafecard'] = $method_list_logo; +$_['text_mollie_sofort'] = $method_list_logo; +$_['text_mollie_giftcard'] = $method_list_logo; +$_['text_mollie_inghomepay'] = $method_list_logo; +$_['text_mollie_eps'] = $method_list_logo; +$_['text_mollie_giropay'] = $method_list_logo; + +// Heading +$_['heading_title'] = "Mollie"; +$_['title_global_options'] = "Paramètres"; +$_['title_payment_status'] = "États de paiement"; +$_['title_mod_about'] = "Sur ce module"; +$_['footer_text'] = "Services paiement"; + +// Module names +$_['name_mollie_banktransfer'] = "Virement bancaire"; +$_['name_mollie_belfius'] = "Belfius Direct Net"; +$_['name_mollie_bitcoin'] = "Bitcoin"; +$_['name_mollie_creditcard'] = "Creditcard"; +$_['name_mollie_directdebit'] = "Débit direct"; +$_['name_mollie_ideal'] = "iDEAL"; +$_['name_mollie_kbc'] = "Bouton de paiement KBC/CBC"; +$_['name_mollie_bancontact'] = "Bancontact"; +$_['name_mollie_paypal'] = "PayPal"; +$_['name_mollie_paysafecard'] = "paysafecard"; +$_['name_mollie_sofort'] = "SOFORT Banking"; +$_['name_mollie_giftcard'] = 'Giftcard'; +$_['name_mollie_inghomepay'] = 'ING Home\'pay'; +$_['name_mollie_eps'] = 'EPS'; +$_['name_mollie_giropay'] = 'Giropay'; + +// Text +$_['text_edit'] = "Éditer Mollie"; +$_['text_payment'] = "Paiement"; +$_['text_success'] = "Succès: Vous avez réussi à modifier les paramètres Mollie!"; +$_['text_missing_api_key'] = "Remplir votre clé API ci-dessous."; +$_['text_activate_payment_method'] = 'Activer ce mode de paiement via le Mollie dashboard.'; +$_['text_no_status_id'] = '- Ne pas mettre à jour le statut (non recommandé) -'; + +// Entry +$_['entry_payment_method'] = "Procédé de paiement"; +$_['entry_activate'] = "Activate"; +$_['entry_sort_order'] = "Ordre de triage"; +$_['entry_api_key'] = "Clé API"; +$_['entry_description'] = "Description"; +$_['entry_show_icons'] = "Afficher des icônes"; +$_['entry_show_order_canceled_page'] = "Afficher un message si le paiement est annulé"; +$_['entry_creditcard_max_amount'] = "Montant maximum pour carte de crédit"; +$_['eg_creditcard_max_amount'] = "eg.500"; + +// Help +$_['help_view_profile'] = 'Vous pouvez trouver votre clé API dans vos profils de site à Mollie.'; +$_['help_status'] = "Activer le module"; +$_['help_api_key'] = 'Entrer ici le api_key du profil que vous souhaitez utiliser. Le clé API commence par test_ ou live_.'; +$_['help_description'] = 'Cette description apparaîtra sur le relevé bancaire de votre client. Vous pouvez utiliser un maximum de 29 caractères. ASTUCE: Utilisez le %, il sera remplacé par l\'id de la commande du paiement. N\'oubliez pas que %/code> peut devenir plusieurs caractères!'; +$_['help_show_icons'] = 'Afficher les icônes à côté des méthodes de paiement Mollie sur la page de paiement.'; +$_['help_show_order_canceled_page'] = 'Afficher un message au client si un paiement est annulé, avant de rediriger le client vers leur panier.'; +$_['help_creditcard_max_amount'] = 'Entrez le montant que vous avez défini pour la carte de crédit dans votre compte mollie.'; + +// Info +$_['entry_module'] = "Module"; +$_['entry_mod_status'] = "État du module"; +$_['entry_comm_status'] = "État de la communication"; +$_['entry_support'] = "Assistance"; + +$_['entry_version'] = 'MollieOpenCart'; + +// Error +$_['error_permission'] = "Attention: Vous n'avez pas l'autorisation de modifier les méthodes de paiement Mollie."; +$_['error_api_key'] = "La clé API est nécessaire!"; +$_['error_api_key_invalid'] = "La clé API est invalide!"; +$_['error_description'] = "Description est nécessaire!"; +$_['error_file_missing'] = "Fichier ne existe pas"; + +// Status +$_['entry_pending_status'] = "État de paiement attente"; +$_['entry_failed_status'] = "État de paiement échoué"; +$_['entry_canceled_status'] = "État de paiement annulé"; +$_['entry_expired_status'] = "État de paiement expiré"; +$_['entry_processing_status'] = "État de paiement traitement"; diff --git a/admin/language/fr-fr/payment/mollie_bancontact.php b/admin/language/fr-fr/payment/mollie_bancontact.php new file mode 100644 index 00000000..4a1a8110 --- /dev/null +++ b/admin/language/fr-fr/payment/mollie_bancontact.php @@ -0,0 +1,4 @@ + - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -// These are called automatically by the Payment modules list - do not change the names -$method_list_logo = 'Mollie'; -$_['text_mollie_banktransfer'] = $method_list_logo; -$_['text_mollie_belfius'] = $method_list_logo; -$_['text_mollie_bitcoin'] = $method_list_logo; -$_['text_mollie_creditcard'] = $method_list_logo; -$_['text_mollie_directdebit'] = $method_list_logo; -$_['text_mollie_ideal'] = $method_list_logo; -$_['text_mollie_kbc'] = $method_list_logo; -$_['text_mollie_bancontact'] = $method_list_logo; -$_['text_mollie_paypal'] = $method_list_logo; -$_['text_mollie_paysafecard'] = $method_list_logo; -$_['text_mollie_sofort'] = $method_list_logo; -$_['text_mollie_giftcard'] = $method_list_logo; -$_['text_mollie_inghomepay'] = $method_list_logo; -$_['text_mollie_eps'] = $method_list_logo; -$_['text_mollie_giropay'] = $method_list_logo; - -// Heading -$_['heading_title'] = "Mollie"; -$_['title_global_options'] = "Paramètres"; -$_['title_payment_status'] = "États de paiement"; -$_['title_mod_about'] = "Sur ce module"; -$_['footer_text'] = "Services paiement"; - -// Module names -$_['name_mollie_banktransfer'] = "Virement bancaire"; -$_['name_mollie_belfius'] = "Belfius Direct Net"; -$_['name_mollie_bitcoin'] = "Bitcoin"; -$_['name_mollie_creditcard'] = "Creditcard"; -$_['name_mollie_directdebit'] = "Débit direct"; -$_['name_mollie_ideal'] = "iDEAL"; -$_['name_mollie_kbc'] = "Bouton de paiement KBC/CBC"; -$_['name_mollie_bancontact'] = "Bancontact"; -$_['name_mollie_paypal'] = "PayPal"; -$_['name_mollie_paysafecard'] = "paysafecard"; -$_['name_mollie_sofort'] = "SOFORT Banking"; -$_['name_mollie_giftcard'] = 'Giftcard'; -$_['name_mollie_inghomepay'] = 'ING Home\'pay'; -$_['name_mollie_eps'] = 'EPS'; -$_['name_mollie_giropay'] = 'Giropay'; - -// Text -$_['text_edit'] = "Éditer Mollie"; -$_['text_payment'] = "Paiement"; -$_['text_success'] = "Succès: Vous avez réussi à modifier les paramètres Mollie!"; -$_['text_missing_api_key'] = "Remplir votre clé API ci-dessous."; -$_['text_activate_payment_method'] = 'Activer ce mode de paiement via le Mollie dashboard.'; -$_['text_no_status_id'] = '- Ne pas mettre à jour le statut (non recommandé) -'; - -// Entry -$_['entry_payment_method'] = "Procédé de paiement"; -$_['entry_activate'] = "Activate"; -$_['entry_sort_order'] = "Ordre de triage"; -$_['entry_api_key'] = "Clé API"; -$_['entry_description'] = "Description"; -$_['entry_show_icons'] = "Afficher des icônes"; -$_['entry_show_order_canceled_page'] = "Afficher un message si le paiement est annulé"; - -// Help -$_['help_view_profile'] = 'Vous pouvez trouver votre clé API dans vos profils de site à Mollie.'; -$_['help_status'] = "Activer le module"; -$_['help_api_key'] = 'Entrer ici le api_key du profil que vous souhaitez utiliser. Le clé API commence par test_ ou live_.'; -$_['help_description'] = 'Cette description apparaîtra sur le relevé bancaire de votre client. Vous pouvez utiliser un maximum de 29 caractères. ASTUCE: Utilisez le %, il sera remplacé par l\'id de la commande du paiement. N\'oubliez pas que %/code> peut devenir plusieurs caractères!'; -$_['help_show_icons'] = 'Afficher les icônes à côté des méthodes de paiement Mollie sur la page de paiement.'; -$_['help_show_order_canceled_page'] = 'Afficher un message au client si un paiement est annulé, avant de rediriger le client vers leur panier.'; - -// Info -$_['entry_module'] = "Module"; -$_['entry_mod_status'] = "État du module"; -$_['entry_comm_status'] = "État de la communication"; -$_['entry_support'] = "Assistance"; - -$_['entry_version'] = 'MollieOpenCart'; - -// Error -$_['error_permission'] = "Attention: Vous n'avez pas l'autorisation de modifier les méthodes de paiement Mollie."; -$_['error_api_key'] = "La clé API est nécessaire!"; -$_['error_api_key_invalid'] = "La clé API est invalide!"; -$_['error_description'] = "Description est nécessaire!"; -$_['error_file_missing'] = "Fichier ne existe pas"; - -// Status -$_['entry_pending_status'] = "État de paiement attente"; -$_['entry_failed_status'] = "État de paiement échoué"; -$_['entry_canceled_status'] = "État de paiement annulé"; -$_['entry_expired_status'] = "État de paiement expiré"; -$_['entry_processing_status'] = "État de paiement traitement"; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/admin/language/french/extension/payment/mollie_bancontact.php b/admin/language/french/extension/payment/mollie_bancontact.php index 4a1a8110..4d68cb30 100644 --- a/admin/language/french/extension/payment/mollie_bancontact.php +++ b/admin/language/french/extension/payment/mollie_bancontact.php @@ -1,4 +1,2 @@ + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +// These are called automatically by the Payment modules list - do not change the names +$method_list_logo = 'Mollie'; +$_['text_mollie_banktransfer'] = $method_list_logo; +$_['text_mollie_belfius'] = $method_list_logo; +$_['text_mollie_bitcoin'] = $method_list_logo; +$_['text_mollie_creditcard'] = $method_list_logo; +$_['text_mollie_directdebit'] = $method_list_logo; +$_['text_mollie_ideal'] = $method_list_logo; +$_['text_mollie_kbc'] = $method_list_logo; +$_['text_mollie_bancontact'] = $method_list_logo; +$_['text_mollie_paypal'] = $method_list_logo; +$_['text_mollie_paysafecard'] = $method_list_logo; +$_['text_mollie_sofort'] = $method_list_logo; +$_['text_mollie_giftcard'] = $method_list_logo; +$_['text_mollie_inghomepay'] = $method_list_logo; +$_['text_mollie_eps'] = $method_list_logo; +$_['text_mollie_giropay'] = $method_list_logo; + +// Heading +$_['heading_title'] = "Mollie"; +$_['title_global_options'] = "Paramètres"; +$_['title_payment_status'] = "États de paiement"; +$_['title_mod_about'] = "Sur ce module"; +$_['footer_text'] = "Services paiement"; + +// Module names +$_['name_mollie_banktransfer'] = "Virement bancaire"; +$_['name_mollie_belfius'] = "Belfius Direct Net"; +$_['name_mollie_bitcoin'] = "Bitcoin"; +$_['name_mollie_creditcard'] = "Creditcard"; +$_['name_mollie_directdebit'] = "Débit direct"; +$_['name_mollie_ideal'] = "iDEAL"; +$_['name_mollie_kbc'] = "Bouton de paiement KBC/CBC"; +$_['name_mollie_bancontact'] = "Bancontact"; +$_['name_mollie_paypal'] = "PayPal"; +$_['name_mollie_paysafecard'] = "paysafecard"; +$_['name_mollie_sofort'] = "SOFORT Banking"; +$_['name_mollie_giftcard'] = 'Giftcard'; +$_['name_mollie_inghomepay'] = 'ING Home\'pay'; +$_['name_mollie_eps'] = 'EPS'; +$_['name_mollie_giropay'] = 'Giropay'; + +// Text +$_['text_edit'] = "Éditer Mollie"; +$_['text_payment'] = "Paiement"; +$_['text_success'] = "Succès: Vous avez réussi à modifier les paramètres Mollie!"; +$_['text_missing_api_key'] = "Remplir votre clé API ci-dessous."; +$_['text_activate_payment_method'] = 'Activer ce mode de paiement via le Mollie dashboard.'; +$_['text_no_status_id'] = '- Ne pas mettre à jour le statut (non recommandé) -'; + +// Entry +$_['entry_payment_method'] = "Procédé de paiement"; +$_['entry_activate'] = "Activate"; +$_['entry_sort_order'] = "Ordre de triage"; +$_['entry_api_key'] = "Clé API"; +$_['entry_description'] = "Description"; +$_['entry_show_icons'] = "Afficher des icônes"; +$_['entry_show_order_canceled_page'] = "Afficher un message si le paiement est annulé"; +$_['entry_creditcard_max_amount'] = "Montant maximum pour carte de crédit"; +$_['eg_creditcard_max_amount'] = "eg.500"; + +// Help +$_['help_view_profile'] = 'Vous pouvez trouver votre clé API dans vos profils de site à Mollie.'; +$_['help_status'] = "Activer le module"; +$_['help_api_key'] = 'Entrer ici le api_key du profil que vous souhaitez utiliser. Le clé API commence par test_ ou live_.'; +$_['help_description'] = 'Cette description apparaîtra sur le relevé bancaire de votre client. Vous pouvez utiliser un maximum de 29 caractères. ASTUCE: Utilisez le %, il sera remplacé par l\'id de la commande du paiement. N\'oubliez pas que %/code> peut devenir plusieurs caractères!'; +$_['help_show_icons'] = 'Afficher les icônes à côté des méthodes de paiement Mollie sur la page de paiement.'; +$_['help_show_order_canceled_page'] = 'Afficher un message au client si un paiement est annulé, avant de rediriger le client vers leur panier.'; +$_['help_creditcard_max_amount'] = 'Entrez le montant que vous avez défini pour la carte de crédit dans votre compte mollie.'; + +// Info +$_['entry_module'] = "Module"; +$_['entry_mod_status'] = "État du module"; +$_['entry_comm_status'] = "État de la communication"; +$_['entry_support'] = "Assistance"; + +$_['entry_version'] = 'MollieOpenCart'; + +// Error +$_['error_permission'] = "Attention: Vous n'avez pas l'autorisation de modifier les méthodes de paiement Mollie."; +$_['error_api_key'] = "La clé API est nécessaire!"; +$_['error_api_key_invalid'] = "La clé API est invalide!"; +$_['error_description'] = "Description est nécessaire!"; +$_['error_file_missing'] = "Fichier ne existe pas"; + +// Status +$_['entry_pending_status'] = "État de paiement attente"; +$_['entry_failed_status'] = "État de paiement échoué"; +$_['entry_canceled_status'] = "État de paiement annulé"; +$_['entry_expired_status'] = "État de paiement expiré"; +$_['entry_processing_status'] = "État de paiement traitement"; diff --git a/admin/language/french/payment/mollie_bancontact.php b/admin/language/french/payment/mollie_bancontact.php new file mode 100644 index 00000000..4a1a8110 --- /dev/null +++ b/admin/language/french/payment/mollie_bancontact.php @@ -0,0 +1,4 @@ + - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -// These are called automatically by the Payment modules list - do not change the names -$method_list_logo = 'Mollie'; -$_['text_mollie_banktransfer'] = $method_list_logo; -$_['text_mollie_belfius'] = $method_list_logo; -$_['text_mollie_bitcoin'] = $method_list_logo; -$_['text_mollie_creditcard'] = $method_list_logo; -$_['text_mollie_directdebit'] = $method_list_logo; -$_['text_mollie_ideal'] = $method_list_logo; -$_['text_mollie_kbc'] = $method_list_logo; -$_['text_mollie_mistercash'] = $method_list_logo; -$_['text_mollie_paypal'] = $method_list_logo; -$_['text_mollie_paysafecard'] = $method_list_logo; -$_['text_mollie_sofort'] = $method_list_logo; -$_['text_mollie_giftcard'] = $method_list_logo; -$_['text_mollie_inghomepay'] = $method_list_logo; -$_['text_mollie_eps'] = $method_list_logo; -$_['text_mollie_giropay'] = $method_list_logo; - -// Heading -$_['heading_title'] = "Mollie"; -$_['title_global_options'] = "Einstellungen"; -$_['title_payment_status'] = "Bezahlungs-Status"; -$_['title_mod_about'] = "Über dieses Modul"; -$_['footer_text'] = "Zahlungsdienste"; - -// Module names -$_['name_mollie_banktransfer'] = "Übertragung"; -$_['name_mollie_belfius'] = "Belfius Direct Net"; -$_['name_mollie_bitcoin'] = "Bitcoin"; -$_['name_mollie_creditcard'] = "Creditcard"; -$_['name_mollie_directdebit'] = "Einmaliges Inkasso"; -$_['name_mollie_ideal'] = "iDEAL"; -$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; -$_['name_mollie_mistercash'] = "Bancontact/MisterCash"; -$_['name_mollie_paypal'] = "PayPal"; -$_['name_mollie_paysafecard'] = "paysafecard"; -$_['name_mollie_sofort'] = "SOFORT Banking"; -$_['name_mollie_giftcard'] = 'Giftcard'; -$_['name_mollie_inghomepay'] = 'ING Home\'Pay'; -$_['name_mollie_eps'] = 'EPS'; -$_['name_mollie_giropay'] = 'Giropay'; - -// Text -$_['text_edit'] = "Mollie bearbeiten"; -$_['text_payment'] = "Bezahlung"; -$_['text_success'] = "Erfolg: Die Einstellungen für dieses Modul wurden angepasst!"; -$_['text_missing_api_key'] = "Geben Sie den API Key ein."; -$_['text_activate_payment_method'] = 'Aktivieren Sie diese Zahlungsart über das Mollie Dashboard.'; -$_['text_no_status_id'] = "- Status nicht ändern (nicht empfohlen) -"; - -// Entry -$_['entry_payment_method'] = "Zahlungsart"; -$_['entry_activate'] = "Aktivieren"; -$_['entry_sort_order'] = "Sortierreihenfolge"; -$_['entry_api_key'] = "API Key"; -$_['entry_description'] = "Beschreibung"; -$_['entry_show_icons'] = "Icons anzeigen"; -$_['entry_show_order_canceled_page'] = "Meldung bei annullierten Bezahlungen anzeigen"; -$_['entry_geo_zone'] = "Geo Zone"; - -// Help -$_['help_view_profile'] = 'Sie können Ihren API Key auf Ihren Mollie-Webseiten-Profilen finden.'; -$_['help_status'] = "Das Modul aktivieren"; -$_['help_api_key'] = "Geben Sie hier den api_key des Webseiten-Profils ein, das Sie verwenden wollen. Der API Key beginnt mit test_ oder live_."; -$_['help_description'] = "Die Beschreibung soll auf der Banküberweisung Ihres Kunden erscheinen und Sie können sie in der Mollie Verwaltung sehen. Sie können maximal 29 Zeichen verwenden. TIPP: Verwenden Sie %, dies wird durch die Auftragsnummer ersetzt werden. Die Auftragsnummer selbst kann auch mehrere Zeichen lang sein!"; -$_['help_show_icons'] = "Icons neben den Zahlungsarten von Mollie auf der Zahlungsseite anzeigen."; -$_['help_show_order_canceled_page'] = "Eine Meldung für den Kunden anzeigen, wenn eine Zahlung annulliert wurde, bevor der Kunde zurück zum Warenkorb verwiesen wird."; - -// Info -$_['entry_module'] = "Module"; -$_['entry_mod_status'] = "Modulestatus"; -$_['entry_comm_status'] = "Kommunikationsstatus"; -$_['entry_support'] = "Support"; - -$_['entry_version'] = 'Mollie Opencart'; - -// Error -$_['error_permission'] = "Warnung: Sie haben keine Berechtigung, das Modul zu bearbeiten."; -$_['error_api_key'] = "Mollie API Key ist verpflichtend!"; -$_['error_api_key_invalid'] = "Ungültiger Mollie API Key!"; -$_['error_description'] = "Die Beschreibung ist obligatorisch!"; -$_['error_file_missing'] = "Die Datei existiert nicht"; - -// Status -$_['entry_pending_status'] = "Status Zahlung erstellt"; -$_['entry_failed_status'] = "Status Zahlung fehlgeschlagen"; -$_['entry_canceled_status'] = "Status Zahlung annulliert"; -$_['entry_expired_status'] = "Status Zahlung verstrichen"; -$_['entry_processing_status']= "Status Zahlung erfolgreich"; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/admin/language/german/extension/payment/mollie_bancontact.php b/admin/language/german/extension/payment/mollie_bancontact.php new file mode 100644 index 00000000..4d68cb30 --- /dev/null +++ b/admin/language/german/extension/payment/mollie_bancontact.php @@ -0,0 +1,2 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +// These are called automatically by the Payment modules list - do not change the names +$method_list_logo = 'Mollie'; +$_['text_mollie_banktransfer'] = $method_list_logo; +$_['text_mollie_belfius'] = $method_list_logo; +$_['text_mollie_bitcoin'] = $method_list_logo; +$_['text_mollie_creditcard'] = $method_list_logo; +$_['text_mollie_directdebit'] = $method_list_logo; +$_['text_mollie_ideal'] = $method_list_logo; +$_['text_mollie_kbc'] = $method_list_logo; +$_['text_mollie_mistercash'] = $method_list_logo; +$_['text_mollie_paypal'] = $method_list_logo; +$_['text_mollie_paysafecard'] = $method_list_logo; +$_['text_mollie_sofort'] = $method_list_logo; +$_['text_mollie_giftcard'] = $method_list_logo; +$_['text_mollie_inghomepay'] = $method_list_logo; +$_['text_mollie_eps'] = $method_list_logo; +$_['text_mollie_giropay'] = $method_list_logo; + +// Heading +$_['heading_title'] = "Mollie"; +$_['title_global_options'] = "Einstellungen"; +$_['title_payment_status'] = "Bezahlungs-Status"; +$_['title_mod_about'] = "Über dieses Modul"; +$_['footer_text'] = "Zahlungsdienste"; + +// Module names +$_['name_mollie_banktransfer'] = "Übertragung"; +$_['name_mollie_belfius'] = "Belfius Direct Net"; +$_['name_mollie_bitcoin'] = "Bitcoin"; +$_['name_mollie_creditcard'] = "Creditcard"; +$_['name_mollie_directdebit'] = "Einmaliges Inkasso"; +$_['name_mollie_ideal'] = "iDEAL"; +$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; +$_['name_mollie_mistercash'] = "Bancontact/MisterCash"; +$_['name_mollie_paypal'] = "PayPal"; +$_['name_mollie_paysafecard'] = "paysafecard"; +$_['name_mollie_sofort'] = "SOFORT Banking"; +$_['name_mollie_giftcard'] = 'Giftcard'; +$_['name_mollie_inghomepay'] = 'ING Home\'Pay'; +$_['name_mollie_eps'] = 'EPS'; +$_['name_mollie_giropay'] = 'Giropay'; + +// Text +$_['text_edit'] = "Mollie bearbeiten"; +$_['text_payment'] = "Bezahlung"; +$_['text_success'] = "Erfolg: Die Einstellungen für dieses Modul wurden angepasst!"; +$_['text_missing_api_key'] = "Geben Sie den API Key ein."; +$_['text_activate_payment_method'] = 'Aktivieren Sie diese Zahlungsart über das Mollie Dashboard.'; +$_['text_no_status_id'] = "- Status nicht ändern (nicht empfohlen) -"; + +// Entry +$_['entry_payment_method'] = "Zahlungsart"; +$_['entry_activate'] = "Aktivieren"; +$_['entry_sort_order'] = "Sortierreihenfolge"; +$_['entry_api_key'] = "API Key"; +$_['entry_description'] = "Beschreibung"; +$_['entry_show_icons'] = "Icons anzeigen"; +$_['entry_show_order_canceled_page'] = "Meldung bei annullierten Bezahlungen anzeigen"; +$_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Höchstbetrag für Kreditkarte"; +$_['eg_creditcard_max_amount'] = "eg.500"; + +// Help +$_['help_view_profile'] = 'Sie können Ihren API Key auf Ihren Mollie-Webseiten-Profilen finden.'; +$_['help_status'] = "Das Modul aktivieren"; +$_['help_api_key'] = "Geben Sie hier den api_key des Webseiten-Profils ein, das Sie verwenden wollen. Der API Key beginnt mit test_ oder live_."; +$_['help_description'] = "Die Beschreibung soll auf der Banküberweisung Ihres Kunden erscheinen und Sie können sie in der Mollie Verwaltung sehen. Sie können maximal 29 Zeichen verwenden. TIPP: Verwenden Sie %, dies wird durch die Auftragsnummer ersetzt werden. Die Auftragsnummer selbst kann auch mehrere Zeichen lang sein!"; +$_['help_show_icons'] = "Icons neben den Zahlungsarten von Mollie auf der Zahlungsseite anzeigen."; +$_['help_show_order_canceled_page'] = "Eine Meldung für den Kunden anzeigen, wenn eine Zahlung annulliert wurde, bevor der Kunde zurück zum Warenkorb verwiesen wird."; +$_['help_creditcard_max_amount'] = 'Geben Sie den Betrag ein, den Sie in Ihrem mollie-Konto für die Kreditkarte festgelegt haben.'; + + +// Info +$_['entry_module'] = "Module"; +$_['entry_mod_status'] = "Modulestatus"; +$_['entry_comm_status'] = "Kommunikationsstatus"; +$_['entry_support'] = "Support"; + +$_['entry_version'] = 'Mollie Opencart'; + +// Error +$_['error_permission'] = "Warnung: Sie haben keine Berechtigung, das Modul zu bearbeiten."; +$_['error_api_key'] = "Mollie API Key ist verpflichtend!"; +$_['error_api_key_invalid'] = "Ungültiger Mollie API Key!"; +$_['error_description'] = "Die Beschreibung ist obligatorisch!"; +$_['error_file_missing'] = "Die Datei existiert nicht"; + +// Status +$_['entry_pending_status'] = "Status Zahlung erstellt"; +$_['entry_failed_status'] = "Status Zahlung fehlgeschlagen"; +$_['entry_canceled_status'] = "Status Zahlung annulliert"; +$_['entry_expired_status'] = "Status Zahlung verstrichen"; +$_['entry_processing_status']= "Status Zahlung erfolgreich"; diff --git a/admin/language/german/payment/mollie_banktransfer.php b/admin/language/german/payment/mollie_banktransfer.php new file mode 100644 index 00000000..8a40e816 --- /dev/null +++ b/admin/language/german/payment/mollie_banktransfer.php @@ -0,0 +1,4 @@ + - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -// These are called automatically by the Payment modules list - do not change the names -$method_list_logo = 'Mollie'; -$_['text_mollie_banktransfer'] = $method_list_logo; -$_['text_mollie_belfius'] = $method_list_logo; -$_['text_mollie_bitcoin'] = $method_list_logo; -$_['text_mollie_creditcard'] = $method_list_logo; -$_['text_mollie_directdebit'] = $method_list_logo; -$_['text_mollie_ideal'] = $method_list_logo; -$_['text_mollie_kbc'] = $method_list_logo; -$_['text_mollie_bancontact'] = $method_list_logo; -$_['text_mollie_paypal'] = $method_list_logo; -$_['text_mollie_paysafecard'] = $method_list_logo; -$_['text_mollie_sofort'] = $method_list_logo; -$_['text_mollie_giftcard'] = $method_list_logo; -$_['text_mollie_inghomepay'] = $method_list_logo; -$_['text_mollie_eps'] = $method_list_logo; -$_['text_mollie_giropay'] = $method_list_logo; - -// Heading -$_['heading_title'] = "Mollie"; -$_['title_global_options'] = "Instellingen"; -$_['title_payment_status'] = "Betaalstatussen"; -$_['title_mod_about'] = "Over deze module"; -$_['footer_text'] = "Betaaldiensten"; - -// Module names -$_['name_mollie_banktransfer'] = "Overboeking"; -$_['name_mollie_belfius'] = "Belfius Direct Net"; -$_['name_mollie_bitcoin'] = "Bitcoin"; -$_['name_mollie_creditcard'] = "Creditcard"; -$_['name_mollie_directdebit'] = "Eenmalige incasso"; -$_['name_mollie_ideal'] = "iDEAL"; -$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; -$_['name_mollie_bancontact'] = "Bancontact"; -$_['name_mollie_paypal'] = "PayPal"; -$_['name_mollie_paysafecard'] = "paysafecard"; -$_['name_mollie_sofort'] = "SOFORT Banking"; -$_['name_mollie_giftcard'] = 'Giftcard'; -$_['name_mollie_inghomepay'] = 'ING Home\'pay'; -$_['name_mollie_eps'] = 'EPS'; -$_['name_mollie_giropay'] = 'Giropay'; - -// Text -$_['text_edit'] = "Bewerk Mollie"; -$_['text_payment'] = "Betaling"; -$_['text_success'] = "Gelukt: de instellingen voor de module zijn aangepast!"; -$_['text_missing_api_key'] = "Vul hieronder de API-key in."; -$_['text_activate_payment_method'] = 'Activeer deze betaalmethode via het Mollie-dashboard.'; -$_['text_no_status_id'] = "- Status niet wijzigen (niet aanbevolen) -"; - -// Entry -$_['entry_payment_method'] = "Betaalmethode"; -$_['entry_activate'] = "Activeren"; -$_['entry_sort_order'] = "Sorteervolgorde"; -$_['entry_api_key'] = "API-sleutel"; -$_['entry_description'] = "Omschrijving"; -$_['entry_show_icons'] = "Toon icoontjes"; -$_['entry_show_order_canceled_page'] = "Toon melding bij geannuleerde betalingen"; -$_['entry_geo_zone'] = "Geo Zone"; - -// Help -$_['help_view_profile'] = 'U kunt uw API-sleutel vinden bij uw Mollie-websiteprofielen.'; -$_['help_status'] = "Activeer de module"; -$_['help_api_key'] = "Voer hier de api_key van het websiteprofiel in dat u wilt gebruiken. De API-sleutel begint met test_ of live_."; -$_['help_description'] = "De omschrijving zal op het bankafschrift van uw klant verschijnen en kunt u terugvinden in het Mollie beheer. U kunt maximaal 29 tekens gebruiken. TIP: Gebruik %, dit zal vervangen worden door het ordernummer. Het ordernummer kan zelf ook meerdere tekens lang zijn!"; -$_['help_show_icons'] = "Toon icoontjes naast de betaalmethodes van Mollie op de betaalpagina."; -$_['help_show_order_canceled_page'] = "Toon een melding aan de klant als een betaling geannuleerd wordt, alvorens de klant terug naar het winkelmandje te verwijzen."; - -// Info -$_['entry_module'] = "Module"; -$_['entry_mod_status'] = "Modulestatus"; -$_['entry_comm_status'] = "Communicatiestatus"; -$_['entry_support'] = "Support"; - -$_['entry_version'] = 'Mollie Opencart'; - -// Error -$_['error_permission'] = "Waarschuwing: U heeft geen toestemming om de module aan te passen."; -$_['error_api_key'] = "Mollie API-sleutel is verplicht!"; -$_['error_api_key_invalid'] = "Ongeldige Mollie API-sleutel!"; -$_['error_description'] = "De omschrijving is verplicht!"; -$_['error_file_missing'] = "Bestand bestaat niet"; - -// Status -$_['entry_pending_status'] = "Status betaling aangemaakt"; -$_['entry_failed_status'] = "Status betaling mislukt"; -$_['entry_canceled_status'] = "Status betaling geannuleerd"; -$_['entry_expired_status'] = "Status betaling verlopen"; -$_['entry_processing_status']= "Status betaling succesvol"; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/admin/language/nl-nl/extension/payment/mollie_bancontact.php b/admin/language/nl-nl/extension/payment/mollie_bancontact.php index 4a1a8110..4d68cb30 100644 --- a/admin/language/nl-nl/extension/payment/mollie_bancontact.php +++ b/admin/language/nl-nl/extension/payment/mollie_bancontact.php @@ -1,4 +1,2 @@ + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +// These are called automatically by the Payment modules list - do not change the names +$method_list_logo = 'Mollie'; +$_['text_mollie_banktransfer'] = $method_list_logo; +$_['text_mollie_belfius'] = $method_list_logo; +$_['text_mollie_bitcoin'] = $method_list_logo; +$_['text_mollie_creditcard'] = $method_list_logo; +$_['text_mollie_directdebit'] = $method_list_logo; +$_['text_mollie_ideal'] = $method_list_logo; +$_['text_mollie_kbc'] = $method_list_logo; +$_['text_mollie_bancontact'] = $method_list_logo; +$_['text_mollie_paypal'] = $method_list_logo; +$_['text_mollie_paysafecard'] = $method_list_logo; +$_['text_mollie_sofort'] = $method_list_logo; +$_['text_mollie_giftcard'] = $method_list_logo; +$_['text_mollie_inghomepay'] = $method_list_logo; +$_['text_mollie_eps'] = $method_list_logo; +$_['text_mollie_giropay'] = $method_list_logo; + +// Heading +$_['heading_title'] = "Mollie"; +$_['title_global_options'] = "Instellingen"; +$_['title_payment_status'] = "Betaalstatussen"; +$_['title_mod_about'] = "Over deze module"; +$_['footer_text'] = "Betaaldiensten"; + +// Module names +$_['name_mollie_banktransfer'] = "Overboeking"; +$_['name_mollie_belfius'] = "Belfius Direct Net"; +$_['name_mollie_bitcoin'] = "Bitcoin"; +$_['name_mollie_creditcard'] = "Creditcard"; +$_['name_mollie_directdebit'] = "Eenmalige incasso"; +$_['name_mollie_ideal'] = "iDEAL"; +$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; +$_['name_mollie_bancontact'] = "Bancontact"; +$_['name_mollie_paypal'] = "PayPal"; +$_['name_mollie_paysafecard'] = "paysafecard"; +$_['name_mollie_sofort'] = "SOFORT Banking"; +$_['name_mollie_giftcard'] = 'Giftcard'; +$_['name_mollie_inghomepay'] = 'ING Home\'pay'; +$_['name_mollie_eps'] = 'EPS'; +$_['name_mollie_giropay'] = 'Giropay'; + +// Text +$_['text_edit'] = "Bewerk Mollie"; +$_['text_payment'] = "Betaling"; +$_['text_success'] = "Gelukt: de instellingen voor de module zijn aangepast!"; +$_['text_missing_api_key'] = "Vul hieronder de API-key in."; +$_['text_activate_payment_method'] = 'Activeer deze betaalmethode via het Mollie-dashboard.'; +$_['text_no_status_id'] = "- Status niet wijzigen (niet aanbevolen) -"; + +// Entry +$_['entry_payment_method'] = "Betaalmethode"; +$_['entry_activate'] = "Activeren"; +$_['entry_sort_order'] = "Sorteervolgorde"; +$_['entry_api_key'] = "API-sleutel"; +$_['entry_description'] = "Omschrijving"; +$_['entry_show_icons'] = "Toon icoontjes"; +$_['entry_show_order_canceled_page'] = "Toon melding bij geannuleerde betalingen"; +$_['entry_geo_zone'] = "Geo Zone"; +$_['entry_creditcard_max_amount'] = "Maximumbedrag voor creditcard"; +$_['eg_creditcard_max_amount'] = "eg.500"; + +// Help +$_['help_view_profile'] = 'U kunt uw API-sleutel vinden bij uw Mollie-websiteprofielen.'; +$_['help_status'] = "Activeer de module"; +$_['help_api_key'] = "Voer hier de api_key van het websiteprofiel in dat u wilt gebruiken. De API-sleutel begint met test_ of live_."; +$_['help_description'] = "De omschrijving zal op het bankafschrift van uw klant verschijnen en kunt u terugvinden in het Mollie beheer. U kunt maximaal 29 tekens gebruiken. TIP: Gebruik %, dit zal vervangen worden door het ordernummer. Het ordernummer kan zelf ook meerdere tekens lang zijn!"; +$_['help_show_icons'] = "Toon icoontjes naast de betaalmethodes van Mollie op de betaalpagina."; +$_['help_show_order_canceled_page'] = "Toon een melding aan de klant als een betaling geannuleerd wordt, alvorens de klant terug naar het winkelmandje te verwijzen."; +$_['help_creditcard_max_amount'] = 'Voer het bedrag in dat u hebt ingesteld voor uw creditcard in uw mollie-account.'; + +// Info +$_['entry_module'] = "Module"; +$_['entry_mod_status'] = "Modulestatus"; +$_['entry_comm_status'] = "Communicatiestatus"; +$_['entry_support'] = "Support"; + +$_['entry_version'] = 'Mollie Opencart'; + +// Error +$_['error_permission'] = "Waarschuwing: U heeft geen toestemming om de module aan te passen."; +$_['error_api_key'] = "Mollie API-sleutel is verplicht!"; +$_['error_api_key_invalid'] = "Ongeldige Mollie API-sleutel!"; +$_['error_description'] = "De omschrijving is verplicht!"; +$_['error_file_missing'] = "Bestand bestaat niet"; + +// Status +$_['entry_pending_status'] = "Status betaling aangemaakt"; +$_['entry_failed_status'] = "Status betaling mislukt"; +$_['entry_canceled_status'] = "Status betaling geannuleerd"; +$_['entry_expired_status'] = "Status betaling verlopen"; +$_['entry_processing_status']= "Status betaling succesvol"; diff --git a/admin/language/nl-nl/payment/mollie_bancontact.php b/admin/language/nl-nl/payment/mollie_bancontact.php new file mode 100644 index 00000000..4a1a8110 --- /dev/null +++ b/admin/language/nl-nl/payment/mollie_bancontact.php @@ -0,0 +1,4 @@ + - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -// These are called automatically by the Payment modules list - do not change the names -$method_list_logo = 'Mollie'; -$_['text_mollie_banktransfer'] = $method_list_logo; -$_['text_mollie_belfius'] = $method_list_logo; -$_['text_mollie_bitcoin'] = $method_list_logo; -$_['text_mollie_creditcard'] = $method_list_logo; -$_['text_mollie_directdebit'] = $method_list_logo; -$_['text_mollie_ideal'] = $method_list_logo; -$_['text_mollie_kbc'] = $method_list_logo; -$_['text_mollie_mistercash'] = $method_list_logo; -$_['text_mollie_paypal'] = $method_list_logo; -$_['text_mollie_paysafecard'] = $method_list_logo; -$_['text_mollie_sofort'] = $method_list_logo; -$_['text_mollie_giftcard'] = $method_list_logo; -$_['text_mollie_inghomepay'] = $method_list_logo; -$_['text_mollie_eps'] = $method_list_logo; -$_['text_mollie_giropay'] = $method_list_logo; - -// Heading -$_['heading_title'] = "Mollie"; -$_['title_global_options'] = "Ajustes"; -$_['title_payment_status'] = "Estados de pago"; -$_['title_mod_about'] = "Acerca de este módulo"; -$_['footer_text'] = "Servicios de pago"; - -// Module names -$_['name_mollie_banktransfer'] = "Transferencia bancaria"; -$_['name_mollie_belfius'] = "Belfius Direct Net"; -$_['name_mollie_bitcoin'] = "Bitcoin"; -$_['name_mollie_creditcard'] = "Creditcard"; -$_['name_mollie_directdebit'] = "Adeudo bancario"; -$_['name_mollie_ideal'] = "iDEAL"; -$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; -$_['name_mollie_mistercash'] = "Bancontact/MisterCash"; -$_['name_mollie_paypal'] = "PayPal"; -$_['name_mollie_paysafecard'] = "paysafecard"; -$_['name_mollie_sofort'] = "SOFORT Banking"; -$_['name_mollie_giftcard'] = 'Giftcard'; -$_['name_mollie_inghomepay'] = 'ING Home\'Pay'; -$_['name_mollie_eps'] = 'EPS'; -$_['name_mollie_giropay'] = 'Giropay'; - -// Text -$_['text_edit'] = "Corregir Mollie"; -$_['text_payment'] = "Pago"; -$_['text_success'] = "Realizado con éxito: ¡los ajustes para el módulo han sido modificados!"; -$_['text_missing_api_key'] = "Escriba la clave API."; -$_['text_activate_payment_method'] = 'Active esta forma de pago a través del panel de control de Mollie.'; -$_['text_no_status_id'] = "- No cambiar de estado (no recomendado) -"; - -// Entry -$_['entry_payment_method'] = "Método de pago"; -$_['entry_activate'] = "Activar"; -$_['entry_sort_order'] = "Orden de clasificación"; -$_['entry_api_key'] = "Clave API"; -$_['entry_description'] = "Descripción"; -$_['entry_show_icons'] = "Mostrar iconos"; -$_['entry_show_order_canceled_page'] = "Mostrar notificación en caso de cancelación de pagos"; -$_['entry_geo_zone'] = "Zona Geo"; - -// Help -$_['help_view_profile'] = 'Puede encontrar su clave API en sus -perfiles de la web de Mollie.'; -$_['help_status'] = "Activar módulo"; -$_['help_api_key'] = "Introduzca aquí la clave_api del perfil de la web que desea utilizar. La clave API comienza con test_ o live_."; -$_['help_description'] = "La descripción aparecerá en el estado de cuenta de su cliente y se puede encontrar en la administración de Mollie. Puede utilizar hasta 29 caracteres. CONSEJO: Use%, que será reemplazado por el número de pedido. ¡El número de pedido puede tener algunos caracteres más!"; -$_['help_show_icons'] = "Mostrar iconos junto a los métodos de pago de Mollie en la página de pago."; -$_['help_show_order_canceled_page'] = "Mostrar una notificación al cliente si un pago es cancelado, antes de redirigir al cliente de nuevo a la cesta de la compra."; - -// Info -$_['entry_module'] = "Module"; -$_['entry_mod_status'] = "Modulestatus"; -$_['entry_comm_status'] = "Estado de comunicación"; -$_['entry_support'] = "Ayuda"; - -$_['entry_version'] = 'Mollie Opencart'; - -// Error -$_['error_permission'] = "Advertencia: no tienes permiso para modificar el módulo."; -$_['error_api_key'] = "¡La clave API de Mollie es obligatoria!"; -$_['error_api_key_invalid'] = "¡Clave inválida de Mollie API!"; -$_['error_description'] = "¡La descripción es obligatoria!"; -$_['error_file_missing'] = "El archivo no existe"; - -// Status -$_['entry_pending_status'] = "¡Clave de API Mollie inválida!"; -$_['entry_failed_status'] = "Estado de pago creado"; -$_['entry_canceled_status'] = "Estado del pago fallido"; -$_['entry_expired_status'] = "Estado del pago cancelado"; -$_['entry_processing_status']= "Estado del pago vencido"; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/admin/language/spanish/extension/payment/mollie_bancontact.php b/admin/language/spanish/extension/payment/mollie_bancontact.php new file mode 100644 index 00000000..4d68cb30 --- /dev/null +++ b/admin/language/spanish/extension/payment/mollie_bancontact.php @@ -0,0 +1,2 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +// These are called automatically by the Payment modules list - do not change the names +$method_list_logo = 'Mollie'; +$_['text_mollie_banktransfer'] = $method_list_logo; +$_['text_mollie_belfius'] = $method_list_logo; +$_['text_mollie_bitcoin'] = $method_list_logo; +$_['text_mollie_creditcard'] = $method_list_logo; +$_['text_mollie_directdebit'] = $method_list_logo; +$_['text_mollie_ideal'] = $method_list_logo; +$_['text_mollie_kbc'] = $method_list_logo; +$_['text_mollie_mistercash'] = $method_list_logo; +$_['text_mollie_paypal'] = $method_list_logo; +$_['text_mollie_paysafecard'] = $method_list_logo; +$_['text_mollie_sofort'] = $method_list_logo; +$_['text_mollie_giftcard'] = $method_list_logo; +$_['text_mollie_inghomepay'] = $method_list_logo; +$_['text_mollie_eps'] = $method_list_logo; +$_['text_mollie_giropay'] = $method_list_logo; + +// Heading +$_['heading_title'] = "Mollie"; +$_['title_global_options'] = "Ajustes"; +$_['title_payment_status'] = "Estados de pago"; +$_['title_mod_about'] = "Acerca de este módulo"; +$_['footer_text'] = "Servicios de pago"; + +// Module names +$_['name_mollie_banktransfer'] = "Transferencia bancaria"; +$_['name_mollie_belfius'] = "Belfius Direct Net"; +$_['name_mollie_bitcoin'] = "Bitcoin"; +$_['name_mollie_creditcard'] = "Creditcard"; +$_['name_mollie_directdebit'] = "Adeudo bancario"; +$_['name_mollie_ideal'] = "iDEAL"; +$_['name_mollie_kbc'] = "KBC/CBC-Betaalknop"; +$_['name_mollie_mistercash'] = "Bancontact/MisterCash"; +$_['name_mollie_paypal'] = "PayPal"; +$_['name_mollie_paysafecard'] = "paysafecard"; +$_['name_mollie_sofort'] = "SOFORT Banking"; +$_['name_mollie_giftcard'] = 'Giftcard'; +$_['name_mollie_inghomepay'] = 'ING Home\'Pay'; +$_['name_mollie_eps'] = 'EPS'; +$_['name_mollie_giropay'] = 'Giropay'; + +// Text +$_['text_edit'] = "Corregir Mollie"; +$_['text_payment'] = "Pago"; +$_['text_success'] = "Realizado con éxito: ¡los ajustes para el módulo han sido modificados!"; +$_['text_missing_api_key'] = "Escriba la clave API."; +$_['text_activate_payment_method'] = 'Active esta forma de pago a través del panel de control de Mollie.'; +$_['text_no_status_id'] = "- No cambiar de estado (no recomendado) -"; + +// Entry +$_['entry_payment_method'] = "Método de pago"; +$_['entry_activate'] = "Activar"; +$_['entry_sort_order'] = "Orden de clasificación"; +$_['entry_api_key'] = "Clave API"; +$_['entry_description'] = "Descripción"; +$_['entry_show_icons'] = "Mostrar iconos"; +$_['entry_show_order_canceled_page'] = "Mostrar notificación en caso de cancelación de pagos"; +$_['entry_geo_zone'] = "Zona Geo"; +$_['entry_creditcard_max_amount'] = "Monto máximo por tarjeta de crédito"; +$_['eg_creditcard_max_amount'] = "eg.500"; + +// Help +$_['help_view_profile'] = 'Puede encontrar su clave API en sus +perfiles de la web de Mollie.'; +$_['help_status'] = "Activar módulo"; +$_['help_api_key'] = "Introduzca aquí la clave_api del perfil de la web que desea utilizar. La clave API comienza con test_ o live_."; +$_['help_description'] = "La descripción aparecerá en el estado de cuenta de su cliente y se puede encontrar en la administración de Mollie. Puede utilizar hasta 29 caracteres. CONSEJO: Use%, que será reemplazado por el número de pedido. ¡El número de pedido puede tener algunos caracteres más!"; +$_['help_show_icons'] = "Mostrar iconos junto a los métodos de pago de Mollie en la página de pago."; +$_['help_show_order_canceled_page'] = "Mostrar una notificación al cliente si un pago es cancelado, antes de redirigir al cliente de nuevo a la cesta de la compra."; +$_['help_creditcard_max_amount'] = 'Ingrese el monto que ha configurado para la tarjeta de crédito en su cuenta de Mollie.'; + +// Info +$_['entry_module'] = "Module"; +$_['entry_mod_status'] = "Modulestatus"; +$_['entry_comm_status'] = "Estado de comunicación"; +$_['entry_support'] = "Ayuda"; + +$_['entry_version'] = 'Mollie Opencart'; + +// Error +$_['error_permission'] = "Advertencia: no tienes permiso para modificar el módulo."; +$_['error_api_key'] = "¡La clave API de Mollie es obligatoria!"; +$_['error_api_key_invalid'] = "¡Clave inválida de Mollie API!"; +$_['error_description'] = "¡La descripción es obligatoria!"; +$_['error_file_missing'] = "El archivo no existe"; + +// Status +$_['entry_pending_status'] = "¡Clave de API Mollie inválida!"; +$_['entry_failed_status'] = "Estado de pago creado"; +$_['entry_canceled_status'] = "Estado del pago fallido"; +$_['entry_expired_status'] = "Estado del pago cancelado"; +$_['entry_processing_status']= "Estado del pago vencido"; diff --git a/admin/language/spanish/payment/mollie_banktransfer.php b/admin/language/spanish/payment/mollie_banktransfer.php new file mode 100644 index 00000000..8a40e816 --- /dev/null +++ b/admin/language/spanish/payment/mollie_banktransfer.php @@ -0,0 +1,4 @@ + -
- -
-
- - -
- - : - -
- -
- - : - -
- - -
-
-

-
-
- - -
- -
- - -
-
-
-
-
-
-
-
- $payment_method) { ?> -
-
- - -
-
- - - - - - - - - style="cursor:pointer;" /> -
-
- -
-
- -
-
- -
- -
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
-
- -
-
- - -
- -
- -
-
-
- -
- - -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
-
- -
-

-
-
-
- -
-

-
-
-
-
- Mollie

- © 2004- Mollie - B.V. -
-
-
- -
-
- Module by Comercia - Technical Support -
- -
- Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: support@comercia.nl
Internet: www.comercia.nl -
-
- Mollie - Support -
-
-
- -
- Contact -
-
-
-
-
-
- -
-
-
-
-
-
- - - + \ No newline at end of file diff --git a/admin/view/template/extension/payment/mollie.twig b/admin/view/template/extension/payment/mollie.twig deleted file mode 100644 index da6afabe..00000000 --- a/admin/view/template/extension/payment/mollie.twig +++ /dev/null @@ -1,390 +0,0 @@ -{{ header }}{{ column_left }} -
- -
-
- {% for shop in shops %} - {% if error_warning %} -
- - {{ shop.name }}: {{ error_warning }} - -
- {% elseif stores[shop.id].payment_mollie_api_key|length <= 0 %} -
- - {{ shop.name }}: {{ help_view_profile }} - -
- {% endif %} - {% endfor %} -
-
-

{{ text_edit }}

-
-
- - -
- {% for shop in shops %} -
- - -
-
-
-
{{ entry_payment_method }}
-
{{ entry_activate }}
-
{{ entry_geo_zone }}
-
{{ entry_sort_order }}
-
- {% for module_id, payment_method in stores[shop.id].payment_methods %} -
-
- - {{ payment_method.name }} -
-
- {% set show_checkbox = true %} - {% if 0 == stores[shop.id].payment_mollie_api_key|length or stores[shop.id].error_api_key is not empty %} - {% set show_checkbox = false %} - {{ text_missing_api_key }} - {% elseif not payment_method.allowed %} - {% set show_checkbox = false %} - {{ text_activate_payment_method }} - {% endif %} - -
-
- -
-
- -
-
- {% endfor %} -
- -
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
-
- -
-
- - -
- {% if stores[shop.id].error_api_key %} -
{{ stores[shop.id].error_api_key }}
- {% endif %} -
-
-
- -
- - {% if stores[shop.id].error_description %} -
{{ stores[shop.id].error_description }}
- {% endif %} -
-
-
- -
- -
-
-
- -
- -
-
-
- -
-
- -
-

{{ entry_version }}

-
-
-
- -
-

-
-
-
-
- Mollie

- © 2004-{{ 'now'|date('Y') }} Mollie - B.V. {{ footer_text }} -
-
-
- -
-
- Module by Comercia - Technical Support -
- -
- Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: support@comercia.nl
Internet: www.comercia.nl -
-
- Mollie - Support -
-
-
- -
- Contact -
-
-
-
-
-
- {% endfor %} -
-
-
-
-
-
-{{ footer }} - - diff --git a/admin/view/template/extension/payment/mollie_1.tpl b/admin/view/template/extension/payment/mollie_1.tpl index 61a6a579..b727895b 100644 --- a/admin/view/template/extension/payment/mollie_1.tpl +++ b/admin/view/template/extension/payment/mollie_1.tpl @@ -1,387 +1,3 @@ - -
- - - - - -
- : -
- -
- : -
- - - -
-
-

-
- - -
-
-
-
- - - -
-
- -
-
- - - - - Support -
- -
-
-
-
-
-
-
- $payment_method) { ?> -
-
- - -
-
- - - - - - - - - style="cursor:pointer;" /> -
-
- -
-
- -
-
- -
- -
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
-
- -
-
- -
- -
- -
-
-
- -
- - -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
-
- -
-

-
-
-
- -
-

-
-
-
-
- Mollie

- © 2004- Mollie - B.V. -
-
-
- -
-
- Module by Comercia - Technical Support -
- -
- Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: support@comercia.nl
Internet: www.comercia.nl -
-
- Mollie - Support -
-
-
- -
- Contact -
-
-
-
-
- -
-
-
-
- - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/admin/view/template/payment/mollie.tpl b/admin/view/template/payment/mollie.tpl new file mode 100644 index 00000000..c953d33d --- /dev/null +++ b/admin/view/template/payment/mollie.tpl @@ -0,0 +1,396 @@ + +
+ +
+
+ + +
+ + : + +
+ +
+ + : + +
+ + +
+
+

+
+
+ + +
+ +
+ + +
+
+
+
+
+
+
+
+ $payment_method) { ?> +
+
+ + +
+
+ + + + + + + + + style="cursor:pointer;" /> +
+
+ +
+
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ +
+
+ ' : '' ;?> + +
+ +
+ +
+
+
+ +
+ + +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ +
+

+
+
+
+ +
+

+
+
+
+
+ Mollie

+ © 2004- Mollie + B.V. +
+
+
+ +
+
+ Module by Comercia - Technical Support +
+ +
+ Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: support@comercia.nl
Internet: www.comercia.nl +
+
+ Mollie - Support +
+
+
+ +
+ Contact +
+
+
+
+
+
+ +
+
+
+
+
+
+ + + diff --git a/admin/view/template/payment/mollie_1.tpl b/admin/view/template/payment/mollie_1.tpl new file mode 100644 index 00000000..e196a73b --- /dev/null +++ b/admin/view/template/payment/mollie_1.tpl @@ -0,0 +1,393 @@ + +
+ + + + + +
+ : +
+ +
+ : +
+ + + +
+
+

+
+ + +
+
+
+
+ + + +
+
+ +
+
+ + + + + Support +
+ +
+
+
+
+
+
+
+ $payment_method) { ?> +
+
+ + +
+
+ + + + + + + + + style="cursor:pointer;" /> +
+
+ +
+
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+
+ +
+ + +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ +
+

+
+
+
+ +
+

+
+
+
+
+ Mollie

+ © 2004- Mollie + B.V. +
+
+
+ +
+
+ Module by Comercia - Technical Support +
+ +
+ Rijksstraatweg 90
7391MV Twello
the Netherlands

tel: +31 (0)85-7733618
E-mail: support@comercia.nl
Internet: www.comercia.nl +
+
+ Mollie - Support +
+
+
+ +
+ Contact +
+
+
+
+
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/catalog/controller/extension/payment/mollie-api-client b/catalog/controller/extension/payment/mollie-api-client deleted file mode 160000 index 8514f298..00000000 --- a/catalog/controller/extension/payment/mollie-api-client +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8514f2988d22096f23080a1c9e22bdec8fccc501 diff --git a/catalog/controller/extension/payment/mollie_bancontact.php b/catalog/controller/extension/payment/mollie_bancontact.php index c37c6d61..cc1d8b90 100644 --- a/catalog/controller/extension/payment/mollie_bancontact.php +++ b/catalog/controller/extension/payment/mollie_bancontact.php @@ -1,7 +1,5 @@ satisfiesPhpVersion()) { + throw new \Mollie\Api\Exceptions\IncompatiblePlatform("The client requires PHP version >= " . self::MIN_PHP_VERSION . ", you have " . \PHP_VERSION . ".", \Mollie\Api\Exceptions\IncompatiblePlatform::INCOMPATIBLE_PHP_VERSION); + } + if (!$this->satisfiesJsonExtension()) { + throw new \Mollie\Api\Exceptions\IncompatiblePlatform("PHP extension json is not enabled. Please make sure to enable 'json' in your PHP configuration.", \Mollie\Api\Exceptions\IncompatiblePlatform::INCOMPATIBLE_JSON_EXTENSION); + } + } + /** + * @return bool + * @codeCoverageIgnore + */ + public function satisfiesPhpVersion() + { + return (bool) \version_compare(\PHP_VERSION, self::MIN_PHP_VERSION, ">="); + } + /** + * @return bool + * @codeCoverageIgnore + */ + public function satisfiesJsonExtension() + { + // Check by extension_loaded + if (\function_exists('extension_loaded') && \extension_loaded('json')) { + return \true; + } elseif (\function_exists('json_encode')) { + return \true; + } + return \false; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerEndpoint.php new file mode 100644 index 00000000..e31d3ec1 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerEndpoint.php @@ -0,0 +1,88 @@ +api); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return CustomerCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\CustomerCollection($this->api, $count, $_links); + } + /** + * Creates a customer in Mollie. + * + * @param array $data An array containing details on the customer. + * @param array $filters + * + * @return Customer + * @throws ApiException + */ + public function create(array $data = [], array $filters = []) + { + return $this->rest_create($data, $filters); + } + /** + * Retrieve a single customer from Mollie. + * + * Will throw a ApiException if the customer id is invalid or the resource cannot be found. + * + * @param string $customerId + * @param array $parameters + * @return Customer + * @throws ApiException + */ + public function get($customerId, array $parameters = []) + { + return $this->rest_read($customerId, $parameters); + } + /** + * Deletes the given Customer. + * + * Will throw a ApiException if the customer id is invalid or the resource cannot be found. + * Returns with HTTP status No Content (204) if successful. + * + * @param string $customerId + * + * @return null + * @throws ApiException + */ + public function delete($customerId) + { + return $this->rest_delete($customerId); + } + /** + * Retrieves a collection of Customers from Mollie. + * + * @param string $from The first customer ID you want to include in your list. + * @param int $limit + * @param array $parameters + * + * @return CustomerCollection + * @throws ApiException + */ + public function page($from = null, $limit = null, array $parameters = []) + { + return $this->rest_list($from, $limit, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerPaymentsEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerPaymentsEndpoint.php new file mode 100644 index 00000000..b2a42698 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerPaymentsEndpoint.php @@ -0,0 +1,60 @@ +api); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return PaymentCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\PaymentCollection($this->api, $count, $_links); + } + /** + * Create a subscription for a Customer + * + * @param Customer $customer + * @param array $options + * @param array $filters + * + * @return Payment + */ + public function createFor(\Mollie\Api\Resources\Customer $customer, array $options = [], array $filters = []) + { + $this->parentId = $customer->id; + return parent::rest_create($options, $filters); + } + /** + * @param Customer $customer + * @param string $from The first resource ID you want to include in your list. + * @param int $limit + * @param array $parameters + * + * @return PaymentCollection + */ + public function listFor(\Mollie\Api\Resources\Customer $customer, $from = null, $limit = null, array $parameters = []) + { + $this->parentId = $customer->id; + return parent::rest_list($from, $limit, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/EndpointAbstract.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/EndpointAbstract.php new file mode 100644 index 00000000..7ce8a010 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/EndpointAbstract.php @@ -0,0 +1,180 @@ +api = $api; + } + /** + * @param array $filters + * @return string + */ + private function buildQueryString(array $filters) + { + if (empty($filters)) { + return ""; + } + foreach ($filters as $key => $value) { + if ($value === \true) { + $filters[$key] = "true"; + } + if ($value === \false) { + $filters[$key] = "false"; + } + } + return "?" . \http_build_query($filters, "", "&"); + } + /** + * @param array $body + * @param array $filters + * @return BaseResource + * @throws ApiException + */ + protected function rest_create(array $body, array $filters) + { + $result = $this->api->performHttpCall(self::REST_CREATE, $this->getResourcePath() . $this->buildQueryString($filters), $this->parseRequestBody($body)); + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, $this->getResourceObject()); + } + /** + * Retrieves a single object from the REST API. + * + * @param string $id Id of the object to retrieve. + * @param array $filters + * @return BaseResource + * @throws ApiException + */ + protected function rest_read($id, array $filters) + { + if (empty($id)) { + throw new \Mollie\Api\Exceptions\ApiException("Invalid resource id."); + } + $id = \urlencode($id); + $result = $this->api->performHttpCall(self::REST_READ, "{$this->getResourcePath()}/{$id}" . $this->buildQueryString($filters)); + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, $this->getResourceObject()); + } + /** + * Sends a DELETE request to a single Molle API object. + * + * @param string $id + * + * @return BaseResource + * @throws ApiException + */ + protected function rest_delete($id) + { + if (empty($id)) { + throw new \Mollie\Api\Exceptions\ApiException("Invalid resource id."); + } + $id = \urlencode($id); + $result = $this->api->performHttpCall(self::REST_DELETE, "{$this->getResourcePath()}/{$id}"); + if ($result === null) { + return null; + } + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, $this->getResourceObject()); + } + /** + * Get a collection of objects from the REST API. + * + * @param string $from The first resource ID you want to include in your list. + * @param int $limit + * @param array $filters + * + * @return BaseCollection + * @throws ApiException + */ + protected function rest_list($from = null, $limit = null, array $filters) + { + $filters = \array_merge(["from" => $from, "limit" => $limit], $filters); + $apiPath = $this->getResourcePath() . $this->buildQueryString($filters); + $result = $this->api->performHttpCall(self::REST_LIST, $apiPath); + /** @var BaseCollection $collection */ + $collection = $this->getResourceCollectionObject($result->count, $result->_links); + foreach ($result->_embedded->{$collection->getCollectionResourceName()} as $dataResult) { + $collection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, $this->getResourceObject()); + } + return $collection; + } + /** + * Get the object that is used by this API endpoint. Every API endpoint uses one type of object. + * + * @return BaseResource + */ + protected abstract function getResourceObject(); + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return BaseCollection + */ + protected abstract function getResourceCollectionObject($count, $_links); + /** + * @param string $resourcePath + */ + public function setResourcePath($resourcePath) + { + $this->resourcePath = \strtolower($resourcePath); + } + /** + * @return string + * @throws ApiException + */ + public function getResourcePath() + { + if (\strpos($this->resourcePath, "_") !== \false) { + list($parentResource, $childResource) = \explode("_", $this->resourcePath, 2); + if (empty($this->parentId)) { + throw new \Mollie\Api\Exceptions\ApiException("Subresource '{$this->resourcePath}' used without parent '{$parentResource}' ID."); + } + return "{$parentResource}/{$this->parentId}/{$childResource}"; + } + return $this->resourcePath; + } + /** + * @param array $body + * @return null|string + * @throws ApiException + */ + private function parseRequestBody(array $body) + { + if (empty($body)) { + return null; + } + try { + $encoded = \_PhpScoper5b87e821469bb\GuzzleHttp\json_encode($body); + } catch (\InvalidArgumentException $e) { + throw new \Mollie\Api\Exceptions\ApiException("Error encoding parameters into JSON: '" . $e->getMessage() . "'."); + } + return $encoded; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/InvoiceEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/InvoiceEndpoint.php new file mode 100644 index 00000000..287d9048 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/InvoiceEndpoint.php @@ -0,0 +1,72 @@ +api); + } + /** + * Get the collection object that is used by this API. Every API uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return \Mollie\Api\Resources\BaseCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\InvoiceCollection($this->api, $count, $_links); + } + /** + * Retrieve an Invoice from Mollie. + * + * Will throw a ApiException if the invoice id is invalid or the resource cannot be found. + * + * @param string $invoiceId + * @param array $parameters + * + * @return Invoice + * @throws ApiException + */ + public function get($invoiceId, array $parameters = []) + { + return $this->rest_read($invoiceId, $parameters); + } + /** + * Retrieves a collection of Invoices from Mollie. + * + * @param string $from The first invoice ID you want to include in your list. + * @param int $limit + * @param array $parameters + * + * @return InvoiceCollection + * @throws ApiException + */ + public function page($from = null, $limit = null, array $parameters = []) + { + return $this->rest_list($from, $limit, $parameters); + } + /** + * This is a wrapper method for page + * + * @param array|null $parameters + * + * @return \Mollie\Api\Resources\BaseCollection + */ + public function all(array $parameters = []) + { + return $this->page(null, null, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/MandateEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/MandateEndpoint.php new file mode 100644 index 00000000..a0429c25 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/MandateEndpoint.php @@ -0,0 +1,81 @@ +api); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return MandateCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\MandateCollection($this->api, $count, $_links); + } + /** + * @param Customer $customer + * @param array $options + * @param array $filters + * + * @return Mandate + */ + public function createFor(\Mollie\Api\Resources\Customer $customer, array $options = [], array $filters = []) + { + $this->parentId = $customer->id; + return parent::rest_create($options, $filters); + } + /** + * @param Customer $customer + * @param string $mandateId + * @param array $parameters + * + * @return Mandate + */ + public function getFor(\Mollie\Api\Resources\Customer $customer, $mandateId, array $parameters = []) + { + $this->parentId = $customer->id; + return parent::rest_read($mandateId, $parameters); + } + /** + * @param Customer $customer + * @param string $from The first resource ID you want to include in your list. + * @param int $limit + * @param array $parameters + * + * @return MandateCollection + */ + public function listFor(\Mollie\Api\Resources\Customer $customer, $from = null, $limit = null, array $parameters = []) + { + $this->parentId = $customer->id; + return parent::rest_list($from, $limit, $parameters); + } + /** + * @param Customer $customer + * @param string $mandateId + * + * @return null + */ + public function revokeFor(\Mollie\Api\Resources\Customer $customer, $mandateId) + { + $this->parentId = $customer->id; + return parent::rest_delete($mandateId); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/MethodEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/MethodEndpoint.php new file mode 100644 index 00000000..9df9690d --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/MethodEndpoint.php @@ -0,0 +1,59 @@ +api); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return MethodCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\MethodCollection($count, $_links); + } + /** + * Retrieve a payment method from Mollie. + * + * Will throw a ApiException if the method id is invalid or the resource cannot be found. + * + * @param string $methodId + * @param array $parameters + * @return Method + * @throws ApiException + */ + public function get($methodId, array $parameters = []) + { + if (empty($methodId)) { + throw new \Mollie\Api\Exceptions\ApiException("Method ID is empty."); + } + return parent::rest_read($methodId, $parameters); + } + /** + * Retrieve all methods. + * + * @param array $parameters + * + * @return MethodCollection + * @throws ApiException + */ + public function all(array $parameters = []) + { + return parent::rest_list(null, null, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentEndpoint.php new file mode 100644 index 00000000..a11c19fe --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentEndpoint.php @@ -0,0 +1,132 @@ +api); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return PaymentCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\PaymentCollection($this->api, $count, $_links); + } + /** + * Creates a payment in Mollie. + * + * @param array $data An array containing details on the payment. + * @param array $filters + * + * @return Payment + * @throws ApiException + */ + public function create(array $data = [], array $filters = []) + { + return $this->rest_create($data, $filters); + } + /** + * Retrieve a single payment from Mollie. + * + * Will throw a ApiException if the payment id is invalid or the resource cannot be found. + * + * @param string $paymentId + * @param array $parameters + * @return Payment + * @throws ApiException + */ + public function get($paymentId, array $parameters = []) + { + if (empty($paymentId) || \strpos($paymentId, self::RESOURCE_ID_PREFIX) !== 0) { + throw new \Mollie\Api\Exceptions\ApiException("Invalid payment ID: '{$paymentId}'. A payment ID should start with '" . self::RESOURCE_ID_PREFIX . "'."); + } + return parent::rest_read($paymentId, $parameters); + } + /** + * Deletes the given Payment. + * + * Will throw a ApiException if the payment id is invalid or the resource cannot be found. + * Returns with HTTP status No Content (204) if successful. + * + * @param string $paymentId + * + * @return Payment + * @throws ApiException + */ + public function delete($paymentId) + { + return $this->rest_delete($paymentId); + } + /** + * Cancel the given Payment. This is just an alias of the 'delete' method. + * + * Will throw a ApiException if the payment id is invalid or the resource cannot be found. + * Returns with HTTP status No Content (204) if successful. + * + * @param string $paymentId + * + * @return Payment + * @throws ApiException + */ + public function cancel($paymentId) + { + return $this->rest_delete($paymentId); + } + /** + * Retrieves a collection of Payments from Mollie. + * + * @param string $from The first payment ID you want to include in your list. + * @param int $limit + * @param array $parameters + * + * @return PaymentCollection + * @throws ApiException + */ + public function page($from = null, $limit = null, array $parameters = []) + { + return $this->rest_list($from, $limit, $parameters); + } + /** + * Issue a refund for the given payment. + * + * The $data parameter may either be an array of endpoint parameters, a float value to + * initiate a partial refund, or empty to do a full refund. + * + * @param Payment $payment + * @param array|float|null $data + * + * @return Refund + * @throws ApiException + */ + public function refund(\Mollie\Api\Resources\Payment $payment, $data = []) + { + $resource = "{$this->getResourcePath()}/" . \urlencode($payment->id) . "/refunds"; + $body = null; + if (\count($data) > 0) { + $body = \json_encode($data); + } + $result = $this->api->performHttpCall(self::REST_CREATE, $resource, $body); + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, new \Mollie\Api\Resources\Refund($this->api)); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentRefundEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentRefundEndpoint.php new file mode 100644 index 00000000..50a8c706 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentRefundEndpoint.php @@ -0,0 +1,44 @@ +api); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return RefundCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\RefundCollection($this->api, $count, $_links); + } + /** + * @param Payment $payment + * @param string $refundId + * @param array $parameters + * + * @return Refund + */ + public function getFor(\Mollie\Api\Resources\Payment $payment, $refundId, array $parameters = []) + { + $this->parentId = $payment->id; + return parent::rest_read($refundId, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/ProfileEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/ProfileEndpoint.php new file mode 100644 index 00000000..293d970b --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/ProfileEndpoint.php @@ -0,0 +1,89 @@ +api); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return ProfileCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\ProfileCollection($this->api, $count, $_links); + } + /** + * Creates a Profile in Mollie. + * + * @param array $data An array containing details on the profile. + * @param array $filters + * + * @return Profile + * @throws ApiException + */ + public function create(array $data = [], array $filters = []) + { + return $this->rest_create($data, $filters); + } + /** + * Retrieve a Profile from Mollie. + * + * Will throw a ApiException if the profile id is invalid or the resource cannot be found. + * + * @param string $profileId + * @param array $parameters + * + * @return Profile + * @throws ApiException + */ + public function get($profileId, array $parameters = []) + { + return $this->rest_read($profileId, $parameters); + } + /** + * Delete a Profile from Mollie. + * + * Will throw a ApiException if the profile id is invalid or the resource cannot be found. + * Returns with HTTP status No Content (204) if successful. + * + * @param string $profileId + * + * @return Profile + * @throws ApiException + */ + public function delete($profileId) + { + return $this->rest_delete($profileId); + } + /** + * Retrieves a collection of Profiles from Mollie. + * + * @param string $from The first profile ID you want to include in your list. + * @param int $limit + * @param array $parameters + * + * @return ProfileCollection + * @throws ApiException + */ + public function page($from = null, $limit = null, array $parameters = []) + { + return $this->rest_list($from, $limit, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/RefundEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/RefundEndpoint.php new file mode 100644 index 00000000..35d62535 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/RefundEndpoint.php @@ -0,0 +1,46 @@ +api); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return RefundCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\RefundCollection($this->api, $count, $_links); + } + /** + * Retrieves a collection of Refunds from Mollie. + * + * @param string $from The first refund ID you want to include in your list. + * @param int $limit + * @param array $parameters + * + * @return RefundCollection + * @throws ApiException + */ + public function page($from = null, $limit = null, array $parameters = []) + { + return $this->rest_list($from, $limit, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/SettlementsEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/SettlementsEndpoint.php new file mode 100644 index 00000000..1d4eb782 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/SettlementsEndpoint.php @@ -0,0 +1,80 @@ +api); + } + /** + * Get the collection object that is used by this API. Every API uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return \Mollie\Api\Resources\BaseCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\SettlementCollection($this->api, $count, $_links); + } + /** + * Retrieve a single settlement from Mollie. + * + * Will throw a ApiException if the settlement id is invalid or the resource cannot be found. + * + * @param string $settlementId + * @param array $parameters + * @return Settlement + * @throws ApiException + */ + public function get($settlementId, array $parameters = []) + { + return parent::rest_read($settlementId, $parameters); + } + /** + * Retrieve the details of the current settlement that has not yet been paid out. + * + * @return Settlement + * @throws ApiException + */ + public function next() + { + return parent::rest_read("next", []); + } + /** + * Retrieve the details of the open balance of the organization. + * + * @return Settlement + * @throws ApiException + */ + public function open() + { + return parent::rest_read("open", []); + } + /** + * Retrieves a collection of Settlements from Mollie. + * + * @param string $from The first settlement ID you want to include in your list. + * @param int $limit + * @param array $parameters + * + * @return SettlementCollection + * @throws ApiException + */ + public function page($from = null, $limit = null, array $parameters = []) + { + return $this->rest_list($from, $limit, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/SubscriptionEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/SubscriptionEndpoint.php new file mode 100644 index 00000000..d51b70fc --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/SubscriptionEndpoint.php @@ -0,0 +1,84 @@ +api); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return SubscriptionCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\SubscriptionCollection($this->api, $count, $_links); + } + /** + * Create a subscription for a Customer + * + * @param Customer $customer + * @param array $options + * @param array $filters + * + * @return Subscription + */ + public function createFor(\Mollie\Api\Resources\Customer $customer, array $options = [], array $filters = []) + { + $this->parentId = $customer->id; + return parent::rest_create($options, $filters); + } + /** + * @param Customer $customer + * @param string $subscriptionId + * @param array $parameters + * + * @return Subscription + */ + public function getFor(\Mollie\Api\Resources\Customer $customer, $subscriptionId, array $parameters = []) + { + $this->parentId = $customer->id; + return parent::rest_read($subscriptionId, $parameters); + } + /** + * @param Customer $customer + * @param string $from The first resource ID you want to include in your list. + * @param int $limit + * @param array $parameters + * + * @return SubscriptionCollection + */ + public function listFor(\Mollie\Api\Resources\Customer $customer, $from = null, $limit = null, array $parameters = []) + { + $this->parentId = $customer->id; + return parent::rest_list($from, $limit, $parameters); + } + /** + * @param Customer $customer + * @param string $subscriptionId + * + * @return null + */ + public function cancelFor(\Mollie\Api\Resources\Customer $customer, $subscriptionId) + { + $this->parentId = $customer->id; + return parent::rest_delete($subscriptionId); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Exceptions/ApiException.php b/catalog/controller/payment/mollie-api-client/src/Exceptions/ApiException.php new file mode 100644 index 00000000..9eccf3cb --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Exceptions/ApiException.php @@ -0,0 +1,48 @@ +field = (string) $field; + $message .= ". Field: {$this->field}"; + } + if (!empty($documentationUrl)) { + $this->documentationUrl = (string) $documentationUrl; + $message .= ". Documentation: {$this->documentationUrl}"; + } + parent::__construct($message, $code, $previous); + } + /** + * @return string + */ + public function getField() + { + return $this->field; + } + /** + * @return string + */ + public function getDocumentationUrl() + { + return $this->documentationUrl; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Exceptions/IncompatiblePlatform.php b/catalog/controller/payment/mollie-api-client/src/Exceptions/IncompatiblePlatform.php new file mode 100644 index 00000000..908e369e --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Exceptions/IncompatiblePlatform.php @@ -0,0 +1,11 @@ +httpClient = $httpClient ? $httpClient : new \_PhpScoper5b87e821469bb\GuzzleHttp\Client([\_PhpScoper5b87e821469bb\GuzzleHttp\RequestOptions::VERIFY => \_PhpScoper5b87e821469bb\Composer\CaBundle\CaBundle::getBundledCaBundlePath()]); + $compatibilityChecker = new \Mollie\Api\CompatibilityChecker(); + $compatibilityChecker->checkCompatibility(); + $this->initializeEndpoints(); + $this->addVersionString("Mollie/" . self::CLIENT_VERSION); + $this->addVersionString("PHP/" . \phpversion()); + $this->addVersionString("Guzzle/" . \_PhpScoper5b87e821469bb\GuzzleHttp\ClientInterface::VERSION); + } + public function initializeEndpoints() + { + $this->payments = new \Mollie\Api\Endpoints\PaymentEndpoint($this); + $this->methods = new \Mollie\Api\Endpoints\MethodEndpoint($this); + $this->customers = new \Mollie\Api\Endpoints\CustomerEndpoint($this); + $this->settlements = new \Mollie\Api\Endpoints\SettlementsEndpoint($this); + $this->subscriptions = new \Mollie\Api\Endpoints\SubscriptionEndpoint($this); + $this->customerPayments = new \Mollie\Api\Endpoints\CustomerPaymentsEndpoint($this); + $this->mandates = new \Mollie\Api\Endpoints\MandateEndpoint($this); + $this->invoices = new \Mollie\Api\Endpoints\InvoiceEndpoint($this); + $this->profiles = new \Mollie\Api\Endpoints\ProfileEndpoint($this); + $this->refunds = new \Mollie\Api\Endpoints\RefundEndpoint($this); + $this->paymentRefunds = new \Mollie\Api\Endpoints\PaymentRefundEndpoint($this); + } + /** + * @param string $url + * + * @return MollieApiClient + */ + public function setApiEndpoint($url) + { + $this->apiEndpoint = \rtrim(\trim($url), '/'); + return $this; + } + /** + * @return string + */ + public function getApiEndpoint() + { + return $this->apiEndpoint; + } + /** + * @param string $apiKey The Mollie API key, starting with 'test_' or 'live_' + * + * @return MollieApiClient + * @throws ApiException + */ + public function setApiKey($apiKey) + { + $apiKey = \trim($apiKey); + if (!\preg_match('/^(live|test)_\\w{30,}$/', $apiKey)) { + throw new \Mollie\Api\Exceptions\ApiException("Invalid API key: '{$apiKey}'. An API key must start with 'test_' or 'live_' and must be at least 30 characters long."); + } + $this->apiKey = $apiKey; + $this->oauthAccess = \false; + return $this; + } + /** + * @param string $accessToken OAuth access token, starting with 'access_' + * + * @return MollieApiClient + * @throws ApiException + */ + public function setAccessToken($accessToken) + { + $accessToken = \trim($accessToken); + if (!\preg_match('/^access_\\w+$/', $accessToken)) { + throw new \Mollie\Api\Exceptions\ApiException("Invalid OAuth access token: '{$accessToken}'. An access token must start with 'access_'."); + } + $this->apiKey = $accessToken; + $this->oauthAccess = \true; + return $this; + } + /** + * Returns null if no API key has been set yet. + * + * @return bool|null + */ + public function usesOAuth() + { + return $this->oauthAccess; + } + /** + * @param string $versionString + * + * @return MollieApiClient + */ + public function addVersionString($versionString) + { + $this->versionStrings[] = \str_replace([" ", "\t", "\n", "\r"], '-', $versionString); + return $this; + } + /** + * Perform an http call. This method is used by the resource specific classes. Please use the $payments property to + * perform operations on payments. + * + * @see $payments + * @see $isuers + * + * @param string $httpMethod + * @param string $apiMethod + * @param string|null|resource|StreamInterface $httpBody + * + * @return object + * @throws ApiException + * + * @codeCoverageIgnore + */ + public function performHttpCall($httpMethod, $apiMethod, $httpBody = null) + { + $url = $this->apiEndpoint . "/" . self::API_VERSION . "/" . $apiMethod; + return $this->performHttpCallToFullUrl($httpMethod, $url, $httpBody); + } + /** + * Perform an http call to a full url. This method is used by the resource specific classes. + * + * @see $payments + * @see $isuers + * + * @param string $httpMethod + * @param string $url + * @param string|null|resource|StreamInterface $httpBody + * + * @return object|null + * @throws ApiException + * + * @codeCoverageIgnore + */ + public function performHttpCallToFullUrl($httpMethod, $url, $httpBody = null) + { + if (empty($this->apiKey)) { + throw new \Mollie\Api\Exceptions\ApiException("You have not set an API key or OAuth access token. Please use setApiKey() to set the API key."); + } + $userAgent = \implode(' ', $this->versionStrings); + if ($this->usesOAuth()) { + $userAgent .= " OAuth/2.0"; + } + $headers = ['Accept' => "application/json", 'Authorization' => "Bearer {$this->apiKey}", 'User-Agent' => $userAgent]; + if (\function_exists("php_uname")) { + $headers['X-Mollie-Client-Info'] = \php_uname(); + } + $request = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Request($httpMethod, $url, $headers, $httpBody); + try { + $response = $this->httpClient->send($request, ['http_errors' => \false]); + } catch (\_PhpScoper5b87e821469bb\GuzzleHttp\Exception\GuzzleException $e) { + throw new \Mollie\Api\Exceptions\ApiException($e->getMessage(), $e->getCode(), $e); + } + if (!$response) { + throw new \Mollie\Api\Exceptions\ApiException("Did not receive API response."); + } + return $this->parseResponseBody($response); + } + /** + * Parse the PSR-7 Response body + * + * @param ResponseInterface $response + * @return object|null + * @throws ApiException + */ + private function parseResponseBody(\_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) + { + $body = $response->getBody()->getContents(); + if (empty($body)) { + if ($response->getStatusCode() === self::HTTP_NO_CONTENT) { + return null; + } + throw new \Mollie\Api\Exceptions\ApiException("No response body found."); + } + $object = @\json_decode($body); + if (\json_last_error() !== \JSON_ERROR_NONE) { + throw new \Mollie\Api\Exceptions\ApiException("Unable to decode Mollie response: '{$body}'."); + } + if ($response->getStatusCode() >= 400) { + $field = null; + if (!empty($object->field)) { + $field = $object->field; + } + $documentationUrl = null; + if (!empty($object->_links) && !empty($object->_links->documentation)) { + $documentationUrl = $object->_links->documentation->href; + } + throw new \Mollie\Api\Exceptions\ApiException("Error executing API call ({$object->status}: {$object->title}): {$object->detail}", $response->getStatusCode(), $field, $documentationUrl); + } + return $object; + } + /** + * Serialization can be used for caching. Of course doing so can be dangerous but some like to live dangerously. + * + * \serialize() should be called on the collections or object you want to cache. + * + * We don't need any property that can be set by the constructor, only properties that are set by setters. + * + * Note that the API key is not serialized, so you need to set the key again after unserializing if you want to do + * more API calls. + * + * @deprecated + * @return string[] + */ + public function __sleep() + { + return ["apiEndpoint"]; + } + /** + * When unserializing a collection or a resource, this class should restore itself. + * + * Note that if you use a custom GuzzleClient, this client is lost. You can't re set the Client, so you should + * probably not use this feature. + * + * @throws IncompatiblePlatform If suddenly unserialized on an incompatible platform. + */ + public function __wakeup() + { + $this->__construct(); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/BaseCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/BaseCollection.php new file mode 100644 index 00000000..a6cd2e06 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/BaseCollection.php @@ -0,0 +1,30 @@ +count = $count; + $this->_links = $_links; + } + /** + * @return string + */ + public abstract function getCollectionResourceName(); +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/BaseResource.php b/catalog/controller/payment/mollie-api-client/src/Resources/BaseResource.php new file mode 100644 index 00000000..c568a9ed --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/BaseResource.php @@ -0,0 +1,19 @@ +client = $client; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Chargeback.php b/catalog/controller/payment/mollie-api-client/src/Resources/Chargeback.php new file mode 100644 index 00000000..8af8b581 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Chargeback.php @@ -0,0 +1,48 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/CursorCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/CursorCollection.php new file mode 100644 index 00000000..5b7c4b25 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/CursorCollection.php @@ -0,0 +1,60 @@ +client = $client; + } + /** + * @return BaseResource + */ + protected abstract function createResourceObject(); + /** + * Return the next set of resources when available + * + * @return CursorCollection|null + */ + public final function next() + { + if (!isset($this->_links->next->href)) { + return null; + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->next->href); + $collection = new static($this->client, $result->count, $result->_links); + foreach ($result->_embedded->{$collection->getCollectionResourceName()} as $dataResult) { + $collection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, $this->createResourceObject()); + } + return $collection; + } + /** + * Return the previous set of resources when available + * + * @return CursorCollection|null + */ + public final function previous() + { + if (!isset($this->_links->previous->href)) { + return null; + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->previous->href); + $collection = new static($this->client, $result->count, $result->_links); + foreach ($result->_embedded->{$collection->getCollectionResourceName()} as $dataResult) { + $collection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, $this->createResourceObject()); + } + return $collection; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Customer.php b/catalog/controller/payment/mollie-api-client/src/Resources/Customer.php new file mode 100644 index 00000000..4acdc2b6 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Customer.php @@ -0,0 +1,187 @@ +_links->self->href)) { + return $this; + } + $body = \json_encode(array("name" => $this->name, "email" => $this->email, "locale" => $this->locale, "metadata" => $this->metadata)); + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_PATCH, $this->_links->self->href, $body); + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, new \Mollie\Api\Resources\Customer($this->client)); + } + /** + * @param array $options + * @param array $filters + * + * @return Payment + */ + public function createPayment(array $options = [], array $filters = []) + { + return $this->client->customerPayments->createFor($this, $options, $filters); + } + /** + * Get all payments for this customer + * + * @return PaymentCollection + */ + public function payments() + { + return $this->client->customerPayments->listFor($this, null, null, $this->getPresetOptions()); + } + /** + * @param array $options + * @param array $filters + * + * @return Subscription + */ + public function createSubscription(array $options = [], array $filters = []) + { + return $this->client->subscriptions->createFor($this, $options, $filters); + } + /** + * @param string $subscriptionId + * @param array $parameters + * + * @return Subscription + */ + public function getSubscription($subscriptionId, array $parameters = []) + { + return $this->client->subscriptions->getFor($this, $subscriptionId, $parameters); + } + /** + * @param string $subscriptionId + * + * @return null + */ + public function cancelSubscription($subscriptionId) + { + return $this->client->subscriptions->cancelFor($this, $subscriptionId); + } + /** + * Get all subscriptions for this customer + * + * @return SubscriptionCollection + */ + public function subscriptions() + { + return $this->client->subscriptions->listFor($this, null, null, $this->getPresetOptions()); + } + /** + * @param array $options + * @param array $filters + * + * @return Mandate + */ + public function createMandate(array $options = [], array $filters = []) + { + return $this->client->mandates->createFor($this, $options, $filters); + } + /** + * @param string $mandateId + * @param array $parameters + * + * @return Mandate + */ + public function getMandate($mandateId, array $parameters = []) + { + return $this->client->mandates->getFor($this, $mandateId, $parameters); + } + /** + * @param string $mandateId + * + * @return null + */ + public function revokeMandate($mandateId) + { + return $this->client->mandates->revokeFor($this, $mandateId); + } + /** + * Get all mandates for this customer + * + * @return MandateCollection + */ + public function mandates() + { + return $this->client->mandates->listFor($this, null, null, $this->getPresetOptions()); + } + /** + * Helper function to check for mandate with status valid + * + * @return bool + */ + public function hasValidMandate() + { + $mandates = $this->client->mandates->listFor($this, null, null, $this->getPresetOptions()); + foreach ($mandates as $mandate) { + if ($mandate->isValid()) { + return \true; + } + } + return \false; + } + /** + * When accessed by oAuth we want to pass the testmode by default + * + * @return array + */ + private function getPresetOptions() + { + $options = []; + if ($this->client->usesOAuth()) { + $options["testmode"] = $this->mode === "test" ? \true : \false; + } + return $options; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/CustomerCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/CustomerCollection.php new file mode 100644 index 00000000..c81edee0 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/CustomerCollection.php @@ -0,0 +1,21 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Invoice.php b/catalog/controller/payment/mollie-api-client/src/Resources/Invoice.php new file mode 100644 index 00000000..0427bdef --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Invoice.php @@ -0,0 +1,98 @@ +status == \Mollie\Api\Types\InvoiceStatus::STATUS_PAID; + } + /** + * @return bool + */ + public function isOpen() + { + return $this->status == \Mollie\Api\Types\InvoiceStatus::STATUS_OPEN; + } + /** + * @return bool + */ + public function isOverdue() + { + return $this->status == \Mollie\Api\Types\InvoiceStatus::STATUS_OVERDUE; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/InvoiceCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/InvoiceCollection.php new file mode 100644 index 00000000..46595a83 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/InvoiceCollection.php @@ -0,0 +1,21 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Issuer.php b/catalog/controller/payment/mollie-api-client/src/Resources/Issuer.php new file mode 100644 index 00000000..b270c723 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Issuer.php @@ -0,0 +1,32 @@ +status === \Mollie\Api\Types\MandateStatus::STATUS_VALID; + } + /** + * @return bool + */ + public function isPending() + { + return $this->status === \Mollie\Api\Types\MandateStatus::STATUS_PENDING; + } + /** + * @return bool + */ + public function isInvalid() + { + return $this->status === \Mollie\Api\Types\MandateStatus::STATUS_INVALID; + } + /** + * Revoke the mandate + * + * @return null + */ + public function revoke() + { + if (!isset($this->_links->self->href)) { + return $this; + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_DELETE, $this->_links->self->href); + return $result; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/MandateCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/MandateCollection.php new file mode 100644 index 00000000..4a5349de --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/MandateCollection.php @@ -0,0 +1,21 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Method.php b/catalog/controller/payment/mollie-api-client/src/Resources/Method.php new file mode 100644 index 00000000..5d8fbf80 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Method.php @@ -0,0 +1,49 @@ +size1x and $image->size2x to display the payment method logo. + * + * @var object + */ + public $image; + /** + * The issuers available for this payment method. Only for the methods iDEAL, KBC/CBC and gift cards. + * Will only be filled when explicitly requested using the query string `include` parameter. + * + * @var array|object[] + */ + public $issuers; + /** + * @var object[] + */ + public $_links; + /** + * Get the issuer value objects + * + * @return IssuerCollection + */ + public function issuers() + { + $issuers = new \Mollie\Api\Resources\IssuerCollection(\count($this->issuers), null); + foreach ($this->issuers as $issuer) { + $issuers->append(\Mollie\Api\Resources\ResourceFactory::createFromApiResult($issuer, new \Mollie\Api\Resources\Issuer($this->client))); + } + return $issuers; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/MethodCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/MethodCollection.php new file mode 100644 index 00000000..6e59bb4b --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/MethodCollection.php @@ -0,0 +1,14 @@ +consumerName and $details->consumerAccount. + * + * @var object + */ + public $details; + /** + * @var object[] + */ + public $_links; + /** + * Whether or not this payment can be canceled. + * + * @var bool|null + */ + public $isCancelable; + /** + * Is this payment canceled? + * + * @return bool + */ + public function isCanceled() + { + return $this->status === \Mollie\Api\Types\PaymentStatus::STATUS_CANCELED; + } + /** + * Is this payment expired? + * + * @return bool + */ + public function isExpired() + { + return $this->status === \Mollie\Api\Types\PaymentStatus::STATUS_EXPIRED; + } + /** + * Is this payment still open / ongoing? + * + * @return bool + */ + public function isOpen() + { + return $this->status === \Mollie\Api\Types\PaymentStatus::STATUS_OPEN; + } + /** + * Is this payment pending? + * + * @return bool + */ + public function isPending() + { + return $this->status === \Mollie\Api\Types\PaymentStatus::STATUS_PENDING; + } + /** + * Is this payment paid for? + * + * @return bool + */ + public function isPaid() + { + return !empty($this->paidAt); + } + /** + * Does the payment have refunds + * + * @return bool + */ + public function hasRefunds() + { + return !empty($this->_links->refunds); + } + /** + * Does this payment has chargebacks + * + * @return bool + */ + public function hasChargebacks() + { + return !empty($this->_links->chargebacks); + } + /** + * Is this payment failing? + * + * @return bool + */ + public function isFailed() + { + return $this->status === \Mollie\Api\Types\PaymentStatus::STATUS_FAILED; + } + /** + * Check whether 'sequenceType' is set to 'first'. If a 'first' payment has been completed successfully, the + * consumer's account may be charged automatically using recurring payments. + * + * @return bool + */ + public function hasSequenceTypeFirst() + { + return $this->sequenceType === \Mollie\Api\Types\SequenceType::SEQUENCETYPE_FIRST; + } + /** + * Check whether 'sequenceType' is set to 'recurring'. This type of payment is processed without involving + * the consumer. + * + * @return bool + */ + public function hasSequenceTypeRecurring() + { + return $this->sequenceType === \Mollie\Api\Types\SequenceType::SEQUENCETYPE_RECURRING; + } + /** + * Get the checkout URL where the customer can complete the payment. + * + * @return string|null + */ + public function getCheckoutUrl() + { + if (empty($this->_links->checkout)) { + return null; + } + return $this->_links->checkout->href; + } + /** + * @return bool + */ + public function canBeRefunded() + { + return $this->amountRemaining !== null; + } + /** + * @return bool + */ + public function canBePartiallyRefunded() + { + return $this->canBeRefunded(); + } + /** + * Get the amount that is already refunded + * + * @return float + */ + public function getAmountRefunded() + { + if ($this->amountRefunded) { + return (double) $this->amountRefunded->value; + } + return 0.0; + } + /** + * Get the remaining amount that can be refunded. For some payment methods this amount can be higher than + * the payment amount. This is possible to reimburse the costs for a return shipment to your customer for example. + * + * @return float + */ + public function getAmountRemaining() + { + if ($this->amountRemaining) { + return (double) $this->amountRemaining->value; + } + return 0.0; + } + /** + * Retrieves all refunds associated with this payment + * + * @return RefundCollection + * @throws ApiException + */ + public function refunds() + { + if (!isset($this->_links->refunds->href)) { + return new \Mollie\Api\Resources\RefundCollection($this->client, 0, null); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->refunds->href); + $resourceCollection = new \Mollie\Api\Resources\RefundCollection($this->client, $result->count, $result->_links); + foreach ($result->_embedded->refunds as $dataResult) { + $resourceCollection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new \Mollie\Api\Resources\Refund($this->client)); + } + return $resourceCollection; + } + /** + * @param string $refundId + * @param array $parameters + * + * @return Refund + */ + public function getRefund($refundId, array $parameters = []) + { + return $this->client->paymentRefunds->getFor($this, $refundId, $parameters); + } + /** + * Retrieves all chargebacks associated with this payment + * + * @return ChargebackCollection + * @throws ApiException + */ + public function chargebacks() + { + if (!isset($this->_links->chargebacks->href)) { + return new \Mollie\Api\Resources\ChargebackCollection($this->client, 0, null); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->chargebacks->href); + $resourceCollection = new \Mollie\Api\Resources\ChargebackCollection($this->client, $result->count, $result->_links); + foreach ($result->_embedded->chargebacks as $dataResult) { + $resourceCollection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new \Mollie\Api\Resources\Chargeback($this->client)); + } + return $resourceCollection; + } + /** + * Issue a refund for this payment. + * + * The $data parameter may either be an array of endpoint parameters or empty to do a full refund. + * + * @param array|null $data + * + * @return BaseResource + * @throws ApiException + */ + public function refund($data = []) + { + $resource = "payments/" . \urlencode($this->id) . "/refunds"; + $body = null; + if (\count($data) > 0) { + $body = \json_encode($data); + } + $result = $this->client->performHttpCall(\Mollie\Api\MollieApiClient::HTTP_POST, $resource, $body); + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, new \Mollie\Api\Resources\Refund($this->client)); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/PaymentCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/PaymentCollection.php new file mode 100644 index 00000000..93c9b56f --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/PaymentCollection.php @@ -0,0 +1,21 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Profile.php b/catalog/controller/payment/mollie-api-client/src/Resources/Profile.php new file mode 100644 index 00000000..a1c8c696 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Profile.php @@ -0,0 +1,170 @@ +status == \Mollie\Api\Types\ProfileStatus::STATUS_UNVERIFIED; + } + /** + * @return bool + */ + public function isVerified() + { + return $this->status == \Mollie\Api\Types\ProfileStatus::STATUS_VERIFIED; + } + /** + * @return bool + */ + public function isBlocked() + { + return $this->status == \Mollie\Api\Types\ProfileStatus::STATUS_BLOCKED; + } + /** + * @return Profile + */ + public function update() + { + if (!isset($this->_links->self->href)) { + return $this; + } + $body = \json_encode(array("name" => $this->name, "website" => $this->website, "email" => $this->email, "phone" => $this->phone, "categoryCode" => $this->categoryCode, "mode" => $this->mode)); + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_PATCH, $this->_links->self->href, $body); + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, new \Mollie\Api\Resources\Profile($this->client)); + } + /** + * Retrieves all chargebacks associated with this profile + * + * @return ChargebackCollection + * @throws ApiException + */ + public function chargebacks() + { + if (!isset($this->_links->chargebacks->href)) { + return new \Mollie\Api\Resources\ChargebackCollection($this->client, 0, null); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->chargebacks->href); + $resourceCollection = new \Mollie\Api\Resources\ChargebackCollection($this->client, $result->count, $result->_links); + foreach ($result->_embedded->chargebacks as $dataResult) { + $resourceCollection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new \Mollie\Api\Resources\Chargeback($this->client)); + } + return $resourceCollection; + } + /** + * Retrieves all methods activated on this profile + * + * @return MethodCollection + * @throws ApiException + */ + public function methods() + { + if (!isset($this->_links->methods->href)) { + return new \Mollie\Api\Resources\MethodCollection(0, null); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->methods->href); + $resourceCollection = new \Mollie\Api\Resources\MethodCollection($result->count, $result->_links); + foreach ($result->_embedded->methods as $dataResult) { + $resourceCollection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new \Mollie\Api\Resources\Method($this->client)); + } + return $resourceCollection; + } + /** + * Retrieves all payments associated with this profile + * + * @return PaymentCollection + * @throws ApiException + */ + public function payments() + { + if (!isset($this->_links->payments->href)) { + return new \Mollie\Api\Resources\PaymentCollection($this->client, 0, null); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->payments->href); + $resourceCollection = new \Mollie\Api\Resources\PaymentCollection($this->client, $result->count, $result->_links); + foreach ($result->_embedded->payments as $dataResult) { + $resourceCollection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new \Mollie\Api\Resources\Payment($this->client)); + } + return $resourceCollection; + } + /** + * Retrieves all refunds associated with this profile + * + * @return RefundCollection + * @throws ApiException + */ + public function refunds() + { + if (!isset($this->_links->refunds->href)) { + return new \Mollie\Api\Resources\RefundCollection($this->client, 0, null); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->refunds->href); + $resourceCollection = new \Mollie\Api\Resources\RefundCollection($this->client, $result->count, $result->_links); + foreach ($result->_embedded->refunds as $dataResult) { + $resourceCollection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new \Mollie\Api\Resources\Refund($this->client)); + } + return $resourceCollection; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/ProfileCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/ProfileCollection.php new file mode 100644 index 00000000..0d207d30 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/ProfileCollection.php @@ -0,0 +1,21 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Refund.php b/catalog/controller/payment/mollie-api-client/src/Resources/Refund.php new file mode 100644 index 00000000..752c3e7c --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Refund.php @@ -0,0 +1,106 @@ +status === \Mollie\Api\Types\RefundStatus::STATUS_QUEUED; + } + /** + * Is this refund pending? + * + * @return bool + */ + public function isPending() + { + return $this->status === \Mollie\Api\Types\RefundStatus::STATUS_PENDING; + } + /** + * Is this refund processing? + * + * @return bool + */ + public function isProcessing() + { + return $this->status === \Mollie\Api\Types\RefundStatus::STATUS_PROCESSING; + } + /** + * Is this refund transferred to consumer? + * + * @return bool + */ + public function isTransferred() + { + return $this->status === \Mollie\Api\Types\RefundStatus::STATUS_REFUNDED; + } + /** + * Cancel the refund + * + * @return BaseResource + */ + public function cancel() + { + $dataResult = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_DELETE, $this->_links->self->href); + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new self($this->client)); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/RefundCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/RefundCollection.php new file mode 100644 index 00000000..26e053de --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/RefundCollection.php @@ -0,0 +1,21 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/ResourceFactory.php b/catalog/controller/payment/mollie-api-client/src/Resources/ResourceFactory.php new file mode 100644 index 00000000..f722c52a --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/ResourceFactory.php @@ -0,0 +1,22 @@ + $value) { + $resource->{$property} = $value; + } + return $resource; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Settlement.php b/catalog/controller/payment/mollie-api-client/src/Resources/Settlement.php new file mode 100644 index 00000000..33d5fcda --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Settlement.php @@ -0,0 +1,145 @@ +status === \Mollie\Api\Types\SettlementStatus::STATUS_OPEN; + } + /** + * Is this settlement pending? + * + * @return bool + */ + public function isPending() + { + return $this->status === \Mollie\Api\Types\SettlementStatus::STATUS_PENDING; + } + /** + * Is this settlement paidout? + * + * @return bool + */ + public function isPaidout() + { + return $this->status === \Mollie\Api\Types\SettlementStatus::STATUS_PAIDOUT; + } + /** + * Is this settlement failed? + * + * @return bool + */ + public function isFailed() + { + return $this->status === \Mollie\Api\Types\SettlementStatus::STATUS_FAILED; + } + /** + * Retrieves all payments associated with this settlement + * + * @return PaymentCollection + * @throws ApiException + */ + public function payments() + { + if (!isset($this->_links->payments->href)) { + return new \Mollie\Api\Resources\PaymentCollection($this->client, 0, null); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->payments->href); + $resourceCollection = new \Mollie\Api\Resources\PaymentCollection($this->client, $result->count, $result->_links); + foreach ($result->_embedded->payments as $dataResult) { + $resourceCollection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new \Mollie\Api\Resources\Payment($this->client)); + } + return $resourceCollection; + } + /** + * Retrieves all refunds associated with this settlement + * + * @return RefundCollection + * @throws ApiException + */ + public function refunds() + { + if (!isset($this->_links->refunds->href)) { + return new \Mollie\Api\Resources\RefundCollection($this->client, 0, null); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->refunds->href); + $resourceCollection = new \Mollie\Api\Resources\RefundCollection($this->client, $result->count, $result->_links); + foreach ($result->_embedded->refunds as $dataResult) { + $resourceCollection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new \Mollie\Api\Resources\Refund($this->client)); + } + return $resourceCollection; + } + /** + * Retrieves all chargebacks associated with this settlement + * + * @return ChargebackCollection + * @throws ApiException + */ + public function chargebacks() + { + if (!isset($this->_links->chargebacks->href)) { + return new \Mollie\Api\Resources\ChargebackCollection($this->client, 0, null); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->chargebacks->href); + $resourceCollection = new \Mollie\Api\Resources\ChargebackCollection($this->client, $result->count, $result->_links); + foreach ($result->_embedded->chargebacks as $dataResult) { + $resourceCollection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new \Mollie\Api\Resources\Chargeback($this->client)); + } + return $resourceCollection; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/SettlementCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/SettlementCollection.php new file mode 100644 index 00000000..a2b0ffbc --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/SettlementCollection.php @@ -0,0 +1,21 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Subscription.php b/catalog/controller/payment/mollie-api-client/src/Resources/Subscription.php new file mode 100644 index 00000000..e16d1336 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Subscription.php @@ -0,0 +1,150 @@ +_links->self->href)) { + return $this; + } + $body = \json_encode(["amount" => $this->amount, "times" => $this->times, "startDate" => $this->startDate, "webhookUrl" => $this->webhookUrl, "description" => $this->description]); + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_PATCH, $this->_links->self->href, $body); + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, new \Mollie\Api\Resources\Subscription($this->client)); + } + /** + * Returns whether the Subscription is active or not. + * + * @return bool + */ + public function isActive() + { + return $this->status === \Mollie\Api\Types\SubscriptionStatus::STATUS_ACTIVE; + } + /** + * Returns whether the Subscription is pending or not. + * + * @return bool + */ + public function isPending() + { + return $this->status === \Mollie\Api\Types\SubscriptionStatus::STATUS_PENDING; + } + /** + * Returns whether the Subscription is canceled or not. + * + * @return bool + */ + public function isCanceled() + { + return $this->status === \Mollie\Api\Types\SubscriptionStatus::STATUS_CANCELED; + } + /** + * Returns whether the Subscription is suspended or not. + * + * @return bool + */ + public function isSuspended() + { + return $this->status === \Mollie\Api\Types\SubscriptionStatus::STATUS_SUSPENDED; + } + /** + * Returns whether the Subscription is completed or not. + * + * @return bool + */ + public function isCompleted() + { + return $this->status === \Mollie\Api\Types\SubscriptionStatus::STATUS_COMPLETED; + } + /** + * Cancels this subscription + * + * @return Subscription + */ + public function cancel() + { + if (!isset($this->_links->self->href)) { + return $this; + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_DELETE, $this->_links->self->href); + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, new \Mollie\Api\Resources\Subscription($this->client)); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/SubscriptionCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/SubscriptionCollection.php new file mode 100644 index 00000000..83159d1d --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/SubscriptionCollection.php @@ -0,0 +1,21 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Types/InvoiceStatus.php b/catalog/controller/payment/mollie-api-client/src/Types/InvoiceStatus.php new file mode 100644 index 00000000..8384c053 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Types/InvoiceStatus.php @@ -0,0 +1,19 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + // PSR-4 + private $prefixLengthsPsr4 = array(); + private $prefixDirsPsr4 = array(); + private $fallbackDirsPsr4 = array(); + + // PSR-0 + private $prefixesPsr0 = array(); + private $fallbackDirsPsr0 = array(); + + private $useIncludePath = false; + private $classMap = array(); + private $classMapAuthoritative = false; + private $missingClasses = array(); + private $apcuPrefix; + + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', $this->prefixesPsr0); + } + + return array(); + } + + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + /** + * Unregisters this instance as an autoloader. + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return bool|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/LICENSE b/catalog/controller/payment/mollie-api-client/vendor/composer/LICENSE new file mode 100644 index 00000000..f27399a0 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_classmap.php b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_classmap.php new file mode 100644 index 00000000..9bc7d247 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_classmap.php @@ -0,0 +1,159 @@ + $baseDir . '/src/CompatibilityChecker.php', + 'Mollie\\Api\\Endpoints\\CustomerEndpoint' => $baseDir . '/src/Endpoints/CustomerEndpoint.php', + 'Mollie\\Api\\Endpoints\\CustomerPaymentsEndpoint' => $baseDir . '/src/Endpoints/CustomerPaymentsEndpoint.php', + 'Mollie\\Api\\Endpoints\\EndpointAbstract' => $baseDir . '/src/Endpoints/EndpointAbstract.php', + 'Mollie\\Api\\Endpoints\\InvoiceEndpoint' => $baseDir . '/src/Endpoints/InvoiceEndpoint.php', + 'Mollie\\Api\\Endpoints\\MandateEndpoint' => $baseDir . '/src/Endpoints/MandateEndpoint.php', + 'Mollie\\Api\\Endpoints\\MethodEndpoint' => $baseDir . '/src/Endpoints/MethodEndpoint.php', + 'Mollie\\Api\\Endpoints\\PaymentEndpoint' => $baseDir . '/src/Endpoints/PaymentEndpoint.php', + 'Mollie\\Api\\Endpoints\\PaymentRefundEndpoint' => $baseDir . '/src/Endpoints/PaymentRefundEndpoint.php', + 'Mollie\\Api\\Endpoints\\ProfileEndpoint' => $baseDir . '/src/Endpoints/ProfileEndpoint.php', + 'Mollie\\Api\\Endpoints\\RefundEndpoint' => $baseDir . '/src/Endpoints/RefundEndpoint.php', + 'Mollie\\Api\\Endpoints\\SettlementsEndpoint' => $baseDir . '/src/Endpoints/SettlementsEndpoint.php', + 'Mollie\\Api\\Endpoints\\SubscriptionEndpoint' => $baseDir . '/src/Endpoints/SubscriptionEndpoint.php', + 'Mollie\\Api\\Exceptions\\ApiException' => $baseDir . '/src/Exceptions/ApiException.php', + 'Mollie\\Api\\Exceptions\\IncompatiblePlatform' => $baseDir . '/src/Exceptions/IncompatiblePlatform.php', + 'Mollie\\Api\\MollieApiClient' => $baseDir . '/src/MollieApiClient.php', + 'Mollie\\Api\\Resources\\BaseCollection' => $baseDir . '/src/Resources/BaseCollection.php', + 'Mollie\\Api\\Resources\\BaseResource' => $baseDir . '/src/Resources/BaseResource.php', + 'Mollie\\Api\\Resources\\Chargeback' => $baseDir . '/src/Resources/Chargeback.php', + 'Mollie\\Api\\Resources\\ChargebackCollection' => $baseDir . '/src/Resources/ChargebackCollection.php', + 'Mollie\\Api\\Resources\\CursorCollection' => $baseDir . '/src/Resources/CursorCollection.php', + 'Mollie\\Api\\Resources\\Customer' => $baseDir . '/src/Resources/Customer.php', + 'Mollie\\Api\\Resources\\CustomerCollection' => $baseDir . '/src/Resources/CustomerCollection.php', + 'Mollie\\Api\\Resources\\Invoice' => $baseDir . '/src/Resources/Invoice.php', + 'Mollie\\Api\\Resources\\InvoiceCollection' => $baseDir . '/src/Resources/InvoiceCollection.php', + 'Mollie\\Api\\Resources\\Issuer' => $baseDir . '/src/Resources/Issuer.php', + 'Mollie\\Api\\Resources\\IssuerCollection' => $baseDir . '/src/Resources/IssuerCollection.php', + 'Mollie\\Api\\Resources\\Mandate' => $baseDir . '/src/Resources/Mandate.php', + 'Mollie\\Api\\Resources\\MandateCollection' => $baseDir . '/src/Resources/MandateCollection.php', + 'Mollie\\Api\\Resources\\Method' => $baseDir . '/src/Resources/Method.php', + 'Mollie\\Api\\Resources\\MethodCollection' => $baseDir . '/src/Resources/MethodCollection.php', + 'Mollie\\Api\\Resources\\Payment' => $baseDir . '/src/Resources/Payment.php', + 'Mollie\\Api\\Resources\\PaymentCollection' => $baseDir . '/src/Resources/PaymentCollection.php', + 'Mollie\\Api\\Resources\\Profile' => $baseDir . '/src/Resources/Profile.php', + 'Mollie\\Api\\Resources\\ProfileCollection' => $baseDir . '/src/Resources/ProfileCollection.php', + 'Mollie\\Api\\Resources\\Refund' => $baseDir . '/src/Resources/Refund.php', + 'Mollie\\Api\\Resources\\RefundCollection' => $baseDir . '/src/Resources/RefundCollection.php', + 'Mollie\\Api\\Resources\\ResourceFactory' => $baseDir . '/src/Resources/ResourceFactory.php', + 'Mollie\\Api\\Resources\\Settlement' => $baseDir . '/src/Resources/Settlement.php', + 'Mollie\\Api\\Resources\\SettlementCollection' => $baseDir . '/src/Resources/SettlementCollection.php', + 'Mollie\\Api\\Resources\\Subscription' => $baseDir . '/src/Resources/Subscription.php', + 'Mollie\\Api\\Resources\\SubscriptionCollection' => $baseDir . '/src/Resources/SubscriptionCollection.php', + 'Mollie\\Api\\Types\\InvoiceStatus' => $baseDir . '/src/Types/InvoiceStatus.php', + 'Mollie\\Api\\Types\\MandateMethod' => $baseDir . '/src/Types/MandateMethod.php', + 'Mollie\\Api\\Types\\MandateStatus' => $baseDir . '/src/Types/MandateStatus.php', + 'Mollie\\Api\\Types\\PaymentMethod' => $baseDir . '/src/Types/PaymentMethod.php', + 'Mollie\\Api\\Types\\PaymentStatus' => $baseDir . '/src/Types/PaymentStatus.php', + 'Mollie\\Api\\Types\\ProfileStatus' => $baseDir . '/src/Types/ProfileStatus.php', + 'Mollie\\Api\\Types\\RefundStatus' => $baseDir . '/src/Types/RefundStatus.php', + 'Mollie\\Api\\Types\\SequenceType' => $baseDir . '/src/Types/SequenceType.php', + 'Mollie\\Api\\Types\\SettlementStatus' => $baseDir . '/src/Types/SettlementStatus.php', + 'Mollie\\Api\\Types\\SubscriptionStatus' => $baseDir . '/src/Types/SubscriptionStatus.php', + '_PhpScoper5b87e821469bb\\Composer\\CaBundle\\CaBundle' => $vendorDir . '/composer/ca-bundle/src/CaBundle.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Client' => $vendorDir . '/guzzlehttp/guzzle/src/Client.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\ClientInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ClientInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\CookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\CookieJarInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\FileCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\SessionCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\SetCookie' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\BadResponseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ClientException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ClientException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ConnectException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\GuzzleException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\RequestException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/RequestException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\SeekException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/SeekException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ServerException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ServerException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\TooManyRedirectsException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\TransferException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TransferException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\HandlerStack' => $vendorDir . '/guzzlehttp/guzzle/src/HandlerStack.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlFactory' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlFactoryInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlMultiHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\EasyHandle' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\MockHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\Proxy' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/Proxy.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\StreamHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\MessageFormatter' => $vendorDir . '/guzzlehttp/guzzle/src/MessageFormatter.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Middleware' => $vendorDir . '/guzzlehttp/guzzle/src/Middleware.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Pool' => $vendorDir . '/guzzlehttp/guzzle/src/Pool.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\PrepareBodyMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\AggregateException' => $vendorDir . '/guzzlehttp/promises/src/AggregateException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\CancellationException' => $vendorDir . '/guzzlehttp/promises/src/CancellationException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\Coroutine' => $vendorDir . '/guzzlehttp/promises/src/Coroutine.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\EachPromise' => $vendorDir . '/guzzlehttp/promises/src/EachPromise.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\FulfilledPromise' => $vendorDir . '/guzzlehttp/promises/src/FulfilledPromise.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\Promise' => $vendorDir . '/guzzlehttp/promises/src/Promise.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\PromiseInterface' => $vendorDir . '/guzzlehttp/promises/src/PromiseInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\PromisorInterface' => $vendorDir . '/guzzlehttp/promises/src/PromisorInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\RejectedPromise' => $vendorDir . '/guzzlehttp/promises/src/RejectedPromise.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\RejectionException' => $vendorDir . '/guzzlehttp/promises/src/RejectionException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\TaskQueue' => $vendorDir . '/guzzlehttp/promises/src/TaskQueue.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\TaskQueueInterface' => $vendorDir . '/guzzlehttp/promises/src/TaskQueueInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\AppendStream' => $vendorDir . '/guzzlehttp/psr7/src/AppendStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\BufferStream' => $vendorDir . '/guzzlehttp/psr7/src/BufferStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\CachingStream' => $vendorDir . '/guzzlehttp/psr7/src/CachingStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\DroppingStream' => $vendorDir . '/guzzlehttp/psr7/src/DroppingStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\FnStream' => $vendorDir . '/guzzlehttp/psr7/src/FnStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\InflateStream' => $vendorDir . '/guzzlehttp/psr7/src/InflateStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\LazyOpenStream' => $vendorDir . '/guzzlehttp/psr7/src/LazyOpenStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\LimitStream' => $vendorDir . '/guzzlehttp/psr7/src/LimitStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\MessageTrait' => $vendorDir . '/guzzlehttp/psr7/src/MessageTrait.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\MultipartStream' => $vendorDir . '/guzzlehttp/psr7/src/MultipartStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\NoSeekStream' => $vendorDir . '/guzzlehttp/psr7/src/NoSeekStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\PumpStream' => $vendorDir . '/guzzlehttp/psr7/src/PumpStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Request' => $vendorDir . '/guzzlehttp/psr7/src/Request.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Response' => $vendorDir . '/guzzlehttp/psr7/src/Response.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\ServerRequest' => $vendorDir . '/guzzlehttp/psr7/src/ServerRequest.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Stream' => $vendorDir . '/guzzlehttp/psr7/src/Stream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\StreamDecoratorTrait' => $vendorDir . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\RedirectMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\RequestOptions' => $vendorDir . '/guzzlehttp/guzzle/src/RequestOptions.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\RetryMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RetryMiddleware.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\CompatibilityCheckerTest' => $baseDir . '/tests/Mollie/API/CompatibilityCheckerTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\BaseEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/BaseEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\ChargebackEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/ChargebackEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\CustomerEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/CustomerEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\CustomerPaymentEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/CustomerPaymentEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\InvoiceEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/InvoiceEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\MandateEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/MandateEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\MethodEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/MethodEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\PaymentEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/PaymentEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\PaymentRefundEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/PaymentRefundEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\ProfileEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/ProfileEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\RefundEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/RefundEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\SettlementEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/SettlementEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\SubscriptionEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/SubscriptionEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\MollieApiClientTest' => $baseDir . '/tests/Mollie/API/MollieApiClientTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\InvoiceTest' => $baseDir . '/tests/Mollie/API/Resources/InvoiceTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\PaymentTest' => $baseDir . '/tests/Mollie/API/Resources/PaymentTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\ProfileTest' => $baseDir . '/tests/Mollie/API/Resources/ProfileTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\RefundTest' => $baseDir . '/tests/Mollie/API/Resources/RefundTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\ResourceFactoryTest' => $baseDir . '/tests/Mollie/API/Resources/ResourceFactoryTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\SettlementTest' => $baseDir . '/tests/Mollie/API/Resources/SettlementTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\SubscriptionTest' => $baseDir . '/tests/Mollie/API/Resources/SubscriptionTest.php', +); diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_files.php b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_files.php new file mode 100644 index 00000000..dd37d858 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_files.php @@ -0,0 +1,12 @@ + $vendorDir . '/guzzlehttp/promises/src/functions_include.php', + 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', +); diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_namespaces.php b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_namespaces.php new file mode 100644 index 00000000..b7fc0125 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($baseDir . '/tests'), + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'), + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), + '_PhpScoper5b87e821469bb\\GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), + '_PhpScoper5b87e821469bb\\Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'), + 'Mollie\\Api\\' => array($baseDir . '/src'), +); diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_real.php b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_real.php new file mode 100644 index 00000000..4024f718 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_real.php @@ -0,0 +1,61 @@ += 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require_once __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInit82030f8453ef92bd2040820af6890694::getInitializer($loader)); + } else { + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + } + + $loader->setClassMapAuthoritative(true); + $loader->register(true); + + if ($useStaticLoader) { + $includeFiles = Composer\Autoload\ComposerStaticInit82030f8453ef92bd2040820af6890694::$files; + } else { + $includeFiles = require __DIR__ . '/autoload_files.php'; + } + foreach ($includeFiles as $fileIdentifier => $file) { + composerRequire82030f8453ef92bd2040820af6890694($fileIdentifier, $file); + } + + return $loader; + } +} + +function composerRequire82030f8453ef92bd2040820af6890694($fileIdentifier, $file) +{ + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + require $file; + + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_static.php b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_static.php new file mode 100644 index 00000000..00e2e7ea --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_static.php @@ -0,0 +1,224 @@ + __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', + 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', + ); + + public static $prefixLengthsPsr4 = array ( + '_' => + array ( + '_PhpScoper5b87e821469bb\\Tests\\' => 30, + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\' => 41, + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\' => 40, + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\' => 43, + '_PhpScoper5b87e821469bb\\GuzzleHttp\\' => 35, + '_PhpScoper5b87e821469bb\\Composer\\CaBundle\\' => 42, + ), + 'M' => + array ( + 'Mollie\\Api\\' => 11, + ), + ); + + public static $prefixDirsPsr4 = array ( + '_PhpScoper5b87e821469bb\\Tests\\' => + array ( + 0 => __DIR__ . '/../..' . '/tests', + ), + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/http-message/src', + ), + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\' => + array ( + 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', + ), + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\' => + array ( + 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src', + ), + '_PhpScoper5b87e821469bb\\GuzzleHttp\\' => + array ( + 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src', + ), + '_PhpScoper5b87e821469bb\\Composer\\CaBundle\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', + ), + 'Mollie\\Api\\' => + array ( + 0 => __DIR__ . '/../..' . '/src', + ), + ); + + public static $classMap = array ( + 'Mollie\\Api\\CompatibilityChecker' => __DIR__ . '/../..' . '/src/CompatibilityChecker.php', + 'Mollie\\Api\\Endpoints\\CustomerEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/CustomerEndpoint.php', + 'Mollie\\Api\\Endpoints\\CustomerPaymentsEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/CustomerPaymentsEndpoint.php', + 'Mollie\\Api\\Endpoints\\EndpointAbstract' => __DIR__ . '/../..' . '/src/Endpoints/EndpointAbstract.php', + 'Mollie\\Api\\Endpoints\\InvoiceEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/InvoiceEndpoint.php', + 'Mollie\\Api\\Endpoints\\MandateEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/MandateEndpoint.php', + 'Mollie\\Api\\Endpoints\\MethodEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/MethodEndpoint.php', + 'Mollie\\Api\\Endpoints\\PaymentEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/PaymentEndpoint.php', + 'Mollie\\Api\\Endpoints\\PaymentRefundEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/PaymentRefundEndpoint.php', + 'Mollie\\Api\\Endpoints\\ProfileEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/ProfileEndpoint.php', + 'Mollie\\Api\\Endpoints\\RefundEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/RefundEndpoint.php', + 'Mollie\\Api\\Endpoints\\SettlementsEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/SettlementsEndpoint.php', + 'Mollie\\Api\\Endpoints\\SubscriptionEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/SubscriptionEndpoint.php', + 'Mollie\\Api\\Exceptions\\ApiException' => __DIR__ . '/../..' . '/src/Exceptions/ApiException.php', + 'Mollie\\Api\\Exceptions\\IncompatiblePlatform' => __DIR__ . '/../..' . '/src/Exceptions/IncompatiblePlatform.php', + 'Mollie\\Api\\MollieApiClient' => __DIR__ . '/../..' . '/src/MollieApiClient.php', + 'Mollie\\Api\\Resources\\BaseCollection' => __DIR__ . '/../..' . '/src/Resources/BaseCollection.php', + 'Mollie\\Api\\Resources\\BaseResource' => __DIR__ . '/../..' . '/src/Resources/BaseResource.php', + 'Mollie\\Api\\Resources\\Chargeback' => __DIR__ . '/../..' . '/src/Resources/Chargeback.php', + 'Mollie\\Api\\Resources\\ChargebackCollection' => __DIR__ . '/../..' . '/src/Resources/ChargebackCollection.php', + 'Mollie\\Api\\Resources\\CursorCollection' => __DIR__ . '/../..' . '/src/Resources/CursorCollection.php', + 'Mollie\\Api\\Resources\\Customer' => __DIR__ . '/../..' . '/src/Resources/Customer.php', + 'Mollie\\Api\\Resources\\CustomerCollection' => __DIR__ . '/../..' . '/src/Resources/CustomerCollection.php', + 'Mollie\\Api\\Resources\\Invoice' => __DIR__ . '/../..' . '/src/Resources/Invoice.php', + 'Mollie\\Api\\Resources\\InvoiceCollection' => __DIR__ . '/../..' . '/src/Resources/InvoiceCollection.php', + 'Mollie\\Api\\Resources\\Issuer' => __DIR__ . '/../..' . '/src/Resources/Issuer.php', + 'Mollie\\Api\\Resources\\IssuerCollection' => __DIR__ . '/../..' . '/src/Resources/IssuerCollection.php', + 'Mollie\\Api\\Resources\\Mandate' => __DIR__ . '/../..' . '/src/Resources/Mandate.php', + 'Mollie\\Api\\Resources\\MandateCollection' => __DIR__ . '/../..' . '/src/Resources/MandateCollection.php', + 'Mollie\\Api\\Resources\\Method' => __DIR__ . '/../..' . '/src/Resources/Method.php', + 'Mollie\\Api\\Resources\\MethodCollection' => __DIR__ . '/../..' . '/src/Resources/MethodCollection.php', + 'Mollie\\Api\\Resources\\Payment' => __DIR__ . '/../..' . '/src/Resources/Payment.php', + 'Mollie\\Api\\Resources\\PaymentCollection' => __DIR__ . '/../..' . '/src/Resources/PaymentCollection.php', + 'Mollie\\Api\\Resources\\Profile' => __DIR__ . '/../..' . '/src/Resources/Profile.php', + 'Mollie\\Api\\Resources\\ProfileCollection' => __DIR__ . '/../..' . '/src/Resources/ProfileCollection.php', + 'Mollie\\Api\\Resources\\Refund' => __DIR__ . '/../..' . '/src/Resources/Refund.php', + 'Mollie\\Api\\Resources\\RefundCollection' => __DIR__ . '/../..' . '/src/Resources/RefundCollection.php', + 'Mollie\\Api\\Resources\\ResourceFactory' => __DIR__ . '/../..' . '/src/Resources/ResourceFactory.php', + 'Mollie\\Api\\Resources\\Settlement' => __DIR__ . '/../..' . '/src/Resources/Settlement.php', + 'Mollie\\Api\\Resources\\SettlementCollection' => __DIR__ . '/../..' . '/src/Resources/SettlementCollection.php', + 'Mollie\\Api\\Resources\\Subscription' => __DIR__ . '/../..' . '/src/Resources/Subscription.php', + 'Mollie\\Api\\Resources\\SubscriptionCollection' => __DIR__ . '/../..' . '/src/Resources/SubscriptionCollection.php', + 'Mollie\\Api\\Types\\InvoiceStatus' => __DIR__ . '/../..' . '/src/Types/InvoiceStatus.php', + 'Mollie\\Api\\Types\\MandateMethod' => __DIR__ . '/../..' . '/src/Types/MandateMethod.php', + 'Mollie\\Api\\Types\\MandateStatus' => __DIR__ . '/../..' . '/src/Types/MandateStatus.php', + 'Mollie\\Api\\Types\\PaymentMethod' => __DIR__ . '/../..' . '/src/Types/PaymentMethod.php', + 'Mollie\\Api\\Types\\PaymentStatus' => __DIR__ . '/../..' . '/src/Types/PaymentStatus.php', + 'Mollie\\Api\\Types\\ProfileStatus' => __DIR__ . '/../..' . '/src/Types/ProfileStatus.php', + 'Mollie\\Api\\Types\\RefundStatus' => __DIR__ . '/../..' . '/src/Types/RefundStatus.php', + 'Mollie\\Api\\Types\\SequenceType' => __DIR__ . '/../..' . '/src/Types/SequenceType.php', + 'Mollie\\Api\\Types\\SettlementStatus' => __DIR__ . '/../..' . '/src/Types/SettlementStatus.php', + 'Mollie\\Api\\Types\\SubscriptionStatus' => __DIR__ . '/../..' . '/src/Types/SubscriptionStatus.php', + '_PhpScoper5b87e821469bb\\Composer\\CaBundle\\CaBundle' => __DIR__ . '/..' . '/composer/ca-bundle/src/CaBundle.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Client' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Client.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\ClientInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\CookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\CookieJarInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\FileCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\SessionCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\SetCookie' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\BadResponseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ClientException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ClientException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ConnectException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\GuzzleException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\RequestException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/RequestException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\SeekException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/SeekException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ServerException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ServerException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\TooManyRedirectsException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\TransferException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TransferException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\HandlerStack' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/HandlerStack.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlFactory' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlFactoryInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlMultiHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\EasyHandle' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\MockHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\Proxy' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/Proxy.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\StreamHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\MessageFormatter' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/MessageFormatter.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Middleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Middleware.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Pool' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Pool.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\PrepareBodyMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\AggregateException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/AggregateException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\CancellationException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/CancellationException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\Coroutine' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Coroutine.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\EachPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/EachPromise.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\FulfilledPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/FulfilledPromise.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\Promise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Promise.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromiseInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\PromisorInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromisorInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\RejectedPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectedPromise.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\RejectionException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectionException.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\TaskQueue' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueue.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\TaskQueueInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueueInterface.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\AppendStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/AppendStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\BufferStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/BufferStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\CachingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/CachingStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\DroppingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/DroppingStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\FnStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/FnStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\InflateStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/InflateStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\LazyOpenStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LazyOpenStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\LimitStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LimitStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\MessageTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MessageTrait.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\MultipartStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MultipartStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\NoSeekStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/NoSeekStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\PumpStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/PumpStream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Request' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Request.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Response' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Response.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\ServerRequest' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/ServerRequest.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Stream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Stream.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\StreamDecoratorTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\RedirectMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\RequestOptions' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RequestOptions.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\RetryMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RetryMiddleware.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\TransferStats' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/TransferStats.php', + '_PhpScoper5b87e821469bb\\GuzzleHttp\\UriTemplate' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/UriTemplate.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php', + '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\CompatibilityCheckerTest' => __DIR__ . '/../..' . '/tests/Mollie/API/CompatibilityCheckerTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\BaseEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/BaseEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\ChargebackEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/ChargebackEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\CustomerEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/CustomerEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\CustomerPaymentEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/CustomerPaymentEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\InvoiceEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/InvoiceEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\MandateEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/MandateEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\MethodEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/MethodEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\PaymentEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/PaymentEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\PaymentRefundEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/PaymentRefundEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\ProfileEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/ProfileEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\RefundEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/RefundEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\SettlementEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/SettlementEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\SubscriptionEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/SubscriptionEndpointTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\MollieApiClientTest' => __DIR__ . '/../..' . '/tests/Mollie/API/MollieApiClientTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\InvoiceTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/InvoiceTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\PaymentTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/PaymentTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\ProfileTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/ProfileTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\RefundTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/RefundTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\ResourceFactoryTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/ResourceFactoryTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\SettlementTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/SettlementTest.php', + '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\SubscriptionTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/SubscriptionTest.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInit82030f8453ef92bd2040820af6890694::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit82030f8453ef92bd2040820af6890694::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit82030f8453ef92bd2040820af6890694::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/LICENSE b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/LICENSE new file mode 100644 index 00000000..c5b5220e --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2016 Composer + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/README.md b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/README.md new file mode 100644 index 00000000..04442f90 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/README.md @@ -0,0 +1,85 @@ +composer/ca-bundle +================== + +Small utility library that lets you find a path to the system CA bundle, +and includes a fallback to the Mozilla CA bundle. + +Originally written as part of [composer/composer](https://github.com/composer/composer), +now extracted and made available as a stand-alone library. + + +Installation +------------ + +Install the latest version with: + +```bash +$ composer require composer/ca-bundle +``` + + +Requirements +------------ + +* PHP 5.3.2 is required but using the latest version of PHP is highly recommended. + + +Basic usage +----------- + +# `Composer\CaBundle\CaBundle` + +- `CaBundle::getSystemCaRootBundlePath()`: Returns the system CA bundle path, or a path to the bundled one as fallback +- `CaBundle::getBundledCaBundlePath()`: Returns the path to the bundled CA file +- `CaBundle::validateCaFile($filename)`: Validates a CA file using opensl_x509_parse only if it is safe to use +- `CaBundle::isOpensslParseSafe()`: Test if it is safe to use the PHP function openssl_x509_parse() +- `CaBundle::reset()`: Resets the static caches + + +## To use with curl + +```php +$curl = curl_init("https://example.org/"); + +$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(); +if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) { + curl_setopt($curl, CURLOPT_CAPATH, $caPathOrFile); +} else { + curl_setopt($curl, CURLOPT_CAINFO, $caPathOrFile); +} + +$result = curl_exec($curl); +``` + +## To use with php streams + +```php +$opts = array( + 'http' => array( + 'method' => "GET" + ) +); + +$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(); +if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) { + $opts['ssl']['capath'] = $caPathOrFile; +} else { + $opts['ssl']['cafile'] = $caPathOrFile; +} + +$context = stream_context_create($opts); +$result = file_get_contents('https://example.com', false, $context); +``` + +## To use with Guzzle + +```php +$client = new \GuzzleHttp\Client([ + \GuzzleHttp\RequestOptions::VERIFY => \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath() +]); +``` + +License +------- + +composer/ca-bundle is licensed under the MIT License, see the LICENSE file for details. diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/composer.json b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/composer.json new file mode 100644 index 00000000..ff0a09f3 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/composer.json @@ -0,0 +1,54 @@ +{ + "name": "composer\/ca-bundle", + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "type": "library", + "license": "MIT", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http:\/\/seld.be" + } + ], + "support": { + "irc": "irc:\/\/irc.freenode.org\/composer", + "issues": "https:\/\/github.com\/composer\/ca-bundle\/issues" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit\/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "psr\/log": "^1.0", + "symfony\/process": "^2.5 || ^3.0 || ^4.0" + }, + "autoload": { + "psr-4": { + "_PhpScoper5b87e821469bb\\Composer\\CaBundle\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "_PhpScoper5b87e821469bb\\Composer\\CaBundle\\": "tests" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "config": { + "platform": { + "php": "5.3.9" + } + } +} \ No newline at end of file diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/res/cacert.pem b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/res/cacert.pem new file mode 100644 index 00000000..ee25bee1 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/res/cacert.pem @@ -0,0 +1,3314 @@ +## +## Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Wed Jun 20 03:12:06 2018 GMT +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## +## Conversion done with mk-ca-bundle.pl version 1.27. +## SHA256: c80f571d9f4ebca4a91e0ad3a546f263153d71afffc845c6f8f52ce9d1a2e8ec +## + + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ +KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy +T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT +J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e +nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx +OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg +DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij +KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K +DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv +BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp +p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 +nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX +MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM +Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz +uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT +BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj +YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB +BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD +VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 +ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE +AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV +qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s +hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z +POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 +Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp +8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC +bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu +g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p +vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr +qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X +DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 +aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 +N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm ++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH +6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu +MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h +qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 +FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs +ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc +celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X +CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB +tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P +4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F +kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L +3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx +/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa +DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP +e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu +WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ +DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub +DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +======================================== +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ +5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn +vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj +CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil +e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR +OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI +CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 +48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi +trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 +qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB +AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC +ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA +A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz ++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj +f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN +kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk +CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF +URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb +CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h +oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV +IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm +66+KAQ== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG +EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz +MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu +QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ +03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK +ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU ++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC +PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT +OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK +F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK +0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ +0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB +leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID +AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ +SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG +NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l +Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga +kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q +hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs +g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 +aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 +nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC +ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo +Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z +WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM +BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE +AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky +MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz +IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ +wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa +by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 +zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f +YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 +oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l +EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 +hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 +EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 +jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY +iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI +WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 +JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx +K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ +Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC +4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo +2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz +lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem +OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 +vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe +Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE +LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD +ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA +BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv +KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z +p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC +AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ +4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y +eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw +MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G +PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw +OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm +2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV +dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph +X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 EV 2009 +================================= +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS +egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh +zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T +7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 +sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 +11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv +cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v +ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El +MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp +b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh +c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ +PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX +ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA +NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv +w9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +CA Disig Root R2 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC +w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia +xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 +A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S +GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV +g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa +5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE +koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A +Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i +Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u +Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV +sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je +dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 +1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx +mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 +utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 +sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg +UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV +7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +ACCVRAIZ1 +========= +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB +SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 +MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH +UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM +jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 +RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD +aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ +0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG +WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 +8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR +5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J +9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK +Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw +Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu +Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM +Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA +QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh +AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA +YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj +AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA +IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk +aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 +dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 +MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI +hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E +R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN +YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 +nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ +TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 +sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg +Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd +3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p +EfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +TWCA Global Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT +CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD +QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK +EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C +nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV +r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR +Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV +tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W +KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 +sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p +yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn +kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI +zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g +cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M +8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg +/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg +lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP +A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m +i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 +EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 +zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= +-----END CERTIFICATE----- + +TeliaSonera Root CA v1 +====================== +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE +CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 +MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW +VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ +6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA +3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k +B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn +Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH +oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 +F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ +oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 +gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc +TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB +AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW +DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm +zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW +pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV +G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc +c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT +JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 +qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 +Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems +WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +E-Tugra Certification Authority +=============================== +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w +DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls +ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN +ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw +NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx +QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl +cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD +DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd +hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K +CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g +ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ +BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 +E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz +rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq +jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn +rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 +dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG +MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK +kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO +XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 +VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo +a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc +dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV +KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT +Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 +8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G +C7TbO6Orb1wdtn7os4I07QZcJA== +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 2 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx +MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ +SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F +vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 +2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV +WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy +YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 +r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf +vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR +3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== +-----END CERTIFICATE----- + +Atos TrustedRoot 2011 +===================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU +cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 +MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG +A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV +hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr +54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ +DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 +HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR +z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R +l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ +bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h +k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh +TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 +61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G +3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +QuoVadis Root CA 1 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE +PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm +PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 +Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN +ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l +g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV +7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX +9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f +iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg +t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI +hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 +GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct +Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP ++V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh +3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa +wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 +O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 +FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV +hMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +QuoVadis Root CA 2 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh +ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY +NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t +oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o +MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l +V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo +L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ +sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD +6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh +lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI +hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K +pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 +x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz +dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X +U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw +mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD +zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN +JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr +O3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +QuoVadis Root CA 3 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 +IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL +Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe +6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 +I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U +VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 +5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi +Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM +dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt +rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI +hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS +t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ +TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du +DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib +Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD +hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX +0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW +dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 +PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +DigiCert Assured ID Root G2 +=========================== +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw +MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH +35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq +bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw +VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP +YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn +lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO +w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv +0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz +d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW +hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M +jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +DigiCert Assured ID Root G3 +=========================== +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD +VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb +RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs +KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF +UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy +YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy +1vUhZscv6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +DigiCert Global Root G2 +======================= +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx +MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ +kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO +3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV +BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM +UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB +o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu +5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr +F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U +WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH +QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ +iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +DigiCert Global Root G3 +======================= +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD +VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw +MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k +aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C +AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O +YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp +Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y +3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 +VOKa5Vt8sycX +-----END CERTIFICATE----- + +DigiCert Trusted Root G4 +======================== +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw +HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp +pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o +k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa +vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY +QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 +MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm +mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 +f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH +dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 +oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY +ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr +yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy +7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah +ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN +5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb +/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa +5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK +G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP +82Z+ +-----END CERTIFICATE----- + +COMODO RSA Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn +dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ +FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+ +5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG +x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX +2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL +OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3 +sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C +GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5 +WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt +rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+ +nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg +tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW +sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp +pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA +zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq +ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52 +7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I +LaZRfyHBNVOFBkpdn627G190 +-----END CERTIFICATE----- + +USERTrust RSA Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE +BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK +ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE +BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK +ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz +0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j +Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn +RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O ++T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq +/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE +Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM +lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8 +yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+ +eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW +FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ +7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ +Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM +8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi +FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi +yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c +J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw +sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx +Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +USERTrust ECC Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 +0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez +nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV +HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB +HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu +9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R4 +=========================== +-----BEGIN CERTIFICATE----- +MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl +OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P +AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV +MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF +JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R5 +=========================== +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 +SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS +h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx +uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 +yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G3 +================================== +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y +olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t +x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy +EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K +Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur +mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5 +1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp +07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo +FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE +41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu +yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD +U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq +KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1 +v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA +8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b +8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r +mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq +1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI +JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV +tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk= +-----END CERTIFICATE----- + +Staat der Nederlanden EV Root CA +================================ +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M +MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl +cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk +SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW +O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r +0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8 +Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV +XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr +08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV +0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd +74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx +fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa +ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI +eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu +c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq +5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN +b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN +f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi +5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4 +WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK +DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy +eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg== +-----END CERTIFICATE----- + +IdenTrust Commercial Root CA 1 +============================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS +b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES +MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB +IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld +hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ +mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi +1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C +XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl +3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy +NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV +WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg +xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix +uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI +hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg +ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt +ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV +YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX +feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro +kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe +2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz +Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R +cGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +IdenTrust Public Sector Root CA 1 +================================= +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv +ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV +UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS +b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy +P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 +Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI +rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf +qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS +mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn +ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh +LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v +iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL +4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B +Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw +DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A +mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt +GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt +m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx +NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 +Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI +ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC +ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ +3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +Entrust Root Certification Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy +bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug +b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw +HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT +DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx +OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP +/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz +HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU +s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y +TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx +AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 +0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z +iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi +nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ +vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO +e4pIb4tF9g== +-----END CERTIFICATE----- + +Entrust Root Certification Authority - EC1 +========================================== +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn +YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw +FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs +LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg +dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt +IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy +AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef +9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h +vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 +kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +CFCA EV ROOT +============ +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE +CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB +IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw +MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD +DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV +BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD +7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN +uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW +ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 +xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f +py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K +gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol +hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ +tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf +BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q +ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua +4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG +E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX +BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn +aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy +PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX +kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C +ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +Certinomis - Root CA +==================== +-----BEGIN CERTIFICATE----- +MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAbBgNVBAMTFENlcnRpbm9taXMg +LSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMzMTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIx +EzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRD +ZXJ0aW5vbWlzIC0gUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQos +P5L2fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJflLieY6pOo +d5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQVWZUKxkd8aRi5pwP5ynap +z8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDFTKWrteoB4owuZH9kb/2jJZOLyKIOSY00 +8B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09x +RLWtwHkziOC/7aOgFLScCbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE +6OXWk6RiwsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJwx3t +FvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SGm/lg0h9tkQPTYKbV +PZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4F2iw4lNVYC2vPsKD2NkJK/DAZNuH +i5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZngWVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGj +YzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I +6tNxIqSSaHh02TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF +AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/0KGRHCwPT5iV +WVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWwF6YSjNRieOpWauwK0kDDPAUw +Pk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZSg081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAX +lCOotQqSD7J6wWAsOMwaplv/8gzjqh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJ +y29SWwNyhlCVCNSNh4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9 +Iff/ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8Vbtaw5Bng +DwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwjY/M50n92Uaf0yKHxDHYi +I0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nM +cyrDflOR1m749fPH0FFNjkulW+YZFzvWgQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVr +hkIGuUE= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GB CA +=============================== +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG +EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl +ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw +MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD +VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds +b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX +scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP +rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk +9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o +Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg +GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI +hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD +dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0 +VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui +HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +SZAFIR ROOT CA2 +=============== +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG +A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV +BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ +BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD +VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q +qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK +DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE +2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ +ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi +ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P +AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC +AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5 +O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67 +oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul +4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6 ++/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +Certum Trusted Network CA 2 +=========================== +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE +BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1 +bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y +ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ +TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB +IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9 +7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o +CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b +Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p +uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130 +GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ +9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB +Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye +hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM +BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI +hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW +Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA +L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo +clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM +pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb +w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo +J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm +ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX +is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7 +zAYspsbiDrW5viSP +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2015 +======================================================= +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT +BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0 +aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx +MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg +QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV +BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw +MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv +bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh +iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+ +6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd +FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr +i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F +GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2 +fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu +iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI +hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+ +D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM +d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y +d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn +82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb +davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F +Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt +J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa +JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q +p/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions ECC RootCA 2015 +=========================================================== +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0 +aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u +cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw +MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj +IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD +VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290 +Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP +dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK +Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA +GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn +dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +Certplus Root CA G1 +=================== +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgISESBVg+QtPlRWhS2DN7cs3EYRMA0GCSqGSIb3DQEBDQUAMD4xCzAJBgNV +BAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTAe +Fw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhD +ZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBANpQh7bauKk+nWT6VjOaVj0W5QOVsjQcmm1iBdTYj+eJZJ+622SLZOZ5KmHN +r49aiZFluVj8tANfkT8tEBXgfs+8/H9DZ6itXjYj2JizTfNDnjl8KvzsiNWI7nC9hRYt6kuJPKNx +Qv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP0FG7Yn2ksYyy/yARujVj +BYZHYEMzkPZHogNPlk2dT8Hq6pyi/jQu3rfKG3akt62f6ajUeD94/vI4CTYd0hYCyOwqaK/1jpTv +LRN6HkJKHRUxrgwEV/xhc/MxVoYxgKDEEW4wduOU8F8ExKyHcomYxZ3MVwia9Az8fXoFOvpHgDm2 +z4QTd28n6v+WZxcIbekN1iNQMLAVdBM+5S//Ds3EC0pd8NgAM0lm66EYfFkuPSi5YXHLtaW6uOrc +4nBvCGrch2c0798wct3zyT8j/zXhviEpIDCB5BmlIOklynMxdCm+4kLV87ImZsdo/Rmz5yCTmehd +4F6H50boJZwKKSTUzViGUkAksnsPmBIgJPaQbEfIDbsYIC7Z/fyL8inqh3SV4EJQeIQEQWGw9CEj +jy3LKCHyamz0GqbFFLQ3ZU+V/YDI+HLlJWvEYLF7bY5KinPOWftwenMGE9nTdDckQQoRb5fc5+R+ +ob0V8rqHDz1oihYHAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0G +A1UdDgQWBBSowcCbkahDFXxdBie0KlHYlwuBsTAfBgNVHSMEGDAWgBSowcCbkahDFXxdBie0KlHY +lwuBsTANBgkqhkiG9w0BAQ0FAAOCAgEAnFZvAX7RvUz1isbwJh/k4DgYzDLDKTudQSk0YcbX8ACh +66Ryj5QXvBMsdbRX7gp8CXrc1cqh0DQT+Hern+X+2B50ioUHj3/MeXrKls3N/U/7/SMNkPX0XtPG +YX2eEeAC7gkE2Qfdpoq3DIMku4NQkv5gdRE+2J2winq14J2by5BSS7CTKtQ+FjPlnsZlFT5kOwQ/ +2wyPX1wdaR+v8+khjPPvl/aatxm2hHSco1S1cE5j2FddUyGbQJJD+tZ3VTNPZNX70Cxqjm0lpu+F +6ALEUz65noe8zDUa3qHpimOHZR4RKttjd5cUvpoUmRGywO6wT/gUITJDT5+rosuoD6o7BlXGEilX +CNQ314cnrUlZp5GrRHpejXDbl85IULFzk/bwg2D5zfHhMf1bfHEhYxQUqq/F3pN+aLHsIqKqkHWe +tUNy6mSjhEv9DKgma3GX7lZjZuhCVPnHHd/Qj1vfyDBviP4NxDMcU6ij/UgQ8uQKTuEVV/xuZDDC +VRHc6qnNSlSsKWNEz0pAoNZoWRsz+e86i9sgktxChL8Bq4fA1SCC28a5g4VCXA9DO2pJNdWY9BW/ ++mGBDAkgGNLQFwzLSABQ6XaCjGTXOqAHVcweMcDvOrRl++O/QmueD6i9a5jc2NvLi6Td11n0bt3+ +qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo= +-----END CERTIFICATE----- + +Certplus Root CA G2 +=================== +-----BEGIN CERTIFICATE----- +MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4xCzAJBgNVBAYT +AkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjAeFw0x +NDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0 +cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BM0PW1aC3/BFGtat93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uN +Am8xIk0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMB8GA1Ud +IwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqGSM49BAMDA2gAMGUCMHD+sAvZ94OX7PNV +HdTcswYO/jOYnYs5kGuUIe22113WTNchp+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjl +vPl5adytRSv3tjFzzAalU5ORGpOucGpnutee5WEaXw== +-----END CERTIFICATE----- + +OpenTrust Root CA G1 +==================== +-----BEGIN CERTIFICATE----- +MIIFbzCCA1egAwIBAgISESCzkFU5fX82bWTCp59rY45nMA0GCSqGSIb3DQEBCwUAMEAxCzAJBgNV +BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcx +MB4XDTE0MDUyNjA4NDU1MFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM +CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzEwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQD4eUbalsUwXopxAy1wpLuwxQjczeY1wICkES3d5oeuXT2R0odsN7fa +Yp6bwiTXj/HbpqbfRm9RpnHLPhsxZ2L3EVs0J9V5ToybWL0iEA1cJwzdMOWo010hOHQX/uMftk87 +ay3bfWAfjH1MBcLrARYVmBSO0ZB3Ij/swjm4eTrwSSTilZHcYTSSjFR077F9jAHiOH3BX2pfJLKO +YheteSCtqx234LSWSE9mQxAGFiQD4eCcjsZGT44ameGPuY4zbGneWK2gDqdkVBFpRGZPTBKnjix9 +xNRbxQA0MMHZmf4yzgeEtE7NCv82TWLxp2NX5Ntqp66/K7nJ5rInieV+mhxNaMbBGN4zK1FGSxyO +9z0M+Yo0FMT7MzUj8czxKselu7Cizv5Ta01BG2Yospb6p64KTrk5M0ScdMGTHPjgniQlQ/GbI4Kq +3ywgsNw2TgOzfALU5nsaqocTvz6hdLubDuHAk5/XpGbKuxs74zD0M1mKB3IDVedzagMxbm+WG+Oi +n6+Sx+31QrclTDsTBM8clq8cIqPQqwWyTBIjUtz9GVsnnB47ev1CI9sjgBPwvFEVVJSmdz7QdFG9 +URQIOTfLHzSpMJ1ShC5VkLG631UAC9hWLbFJSXKAqWLXwPYYEQRVzXR7z2FwefR7LFxckvzluFqr +TJOVoSfupb7PcSNCupt2LQIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUl0YhVyE12jZVx/PxN3DlCPaTKbYwHwYDVR0jBBgwFoAUl0YhVyE12jZVx/Px +N3DlCPaTKbYwDQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E +PLuHIT839HEl2ku6q5aCgZG27dmxpGWX4m9kWaSW7mDKHyP7Rbr/jyTwyqkxf3kfgLMtMrpkZ2Cv +uVnN35pJ06iCsfmYlIrM4LvgBBuZYLFGZdwIorJGnkSI6pN+VxbSFXJfLkur1J1juONI5f6ELlgK +n0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLh +X4SPgPL0DTatdrOjteFkdjpY3H1PXlZs5VVZV6Xf8YpmMIzUUmI4d7S+KNfKNsSbBfD4Fdvb8e80 +nR14SohWZ25g/4/Ii+GOvUKpMwpZQhISKvqxnUOOBZuZ2mKtVzazHbYNeS2WuOvyDEsMpZTGMKcm +GS3tTAZQMPH9WD25SxdfGbRqhFS0OE85og2WaMMolP3tLR9Ka0OWLpABEPs4poEL0L9109S5zvE/ +bw4cHjdx5RiHdRk/ULlepEU0rbDK5uUTdg8xFKmOLZTW1YVNcxVPS/KyPu1svf0OnWZzsD2097+o +4BGkxK51CUpjAEggpsadCwmKtODmzj7HPiY46SvepghJAwSQiumPv+i2tCqjI40cHLI5kqiPAlxA +OXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj1oxx +-----END CERTIFICATE----- + +OpenTrust Root CA G2 +==================== +-----BEGIN CERTIFICATE----- +MIIFbzCCA1egAwIBAgISESChaRu/vbm9UpaPI+hIvyYRMA0GCSqGSIb3DQEBDQUAMEAxCzAJBgNV +BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcy +MB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM +CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQDMtlelM5QQgTJT32F+D3Y5z1zCU3UdSXqWON2ic2rxb95eolq5cSG+ +Ntmh/LzubKh8NBpxGuga2F8ORAbtp+Dz0mEL4DKiltE48MLaARf85KxP6O6JHnSrT78eCbY2albz +4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/61UWY0jUJ9gNDlP7ZvyCV +eYCYitmJNbtRG6Q3ffyZO6v/v6wNj0OxmXsWEH4db0fEFY8ElggGQgT4hNYdvJGmQr5J1WqIP7wt +UdGejeBSzFfdNTVY27SPJIjki9/ca1TSgSuyzpJLHB9G+h3Ykst2Z7UJmQnlrBcUVXDGPKBWCgOz +3GIZ38i1MH/1PCZ1Eb3XG7OHngevZXHloM8apwkQHZOJZlvoPGIytbU6bumFAYueQ4xncyhZW+vj +3CzMpSZyYhK05pyDRPZRpOLAeiRXyg6lPzq1O4vldu5w5pLeFlwoW5cZJ5L+epJUzpM5ChaHvGOz +9bGTXOBut9Dq+WIyiET7vycotjCVXRIouZW+j1MY5aIYFuJWpLIsEPUdN6b4t/bQWVyJ98LVtZR0 +0dX+G7bw5tYee9I8y6jj9RjzIR9u701oBnstXW5DiabA+aC/gh7PU3+06yzbXfZqfUAkBXKJOAGT +y3HCOV0GEfZvePg3DTmEJwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUajn6QiL35okATV59M4PLuG53hq8wHwYDVR0jBBgwFoAUajn6QiL35okATV59 +M4PLuG53hq8wDQYJKoZIhvcNAQENBQADggIBAJjLq0A85TMCl38th6aP1F5Kr7ge57tx+4BkJamz +Gj5oXScmp7oq4fBXgwpkTx4idBvpkF/wrM//T2h6OKQQbA2xx6R3gBi2oihEdqc0nXGEL8pZ0keI +mUEiyTCYYW49qKgFbdEfwFFEVn8nNQLdXpgKQuswv42hm1GqO+qTRmTFAHneIWv2V6CG1wZy7HBG +S4tz3aAhdT7cHcCP009zHIXZ/n9iyJVvttN7jLpTwm+bREx50B1ws9efAvSyB7DH5fitIw6mVskp +EndI2S9G/Tvw/HRwkqWOOAgfZDC2t0v7NqwQjqBSM2OdAzVWxWm9xiNaJ5T2pBL4LTM8oValX9YZ +6e18CL13zSdkzJTaTkZQh+D5wVOAHrut+0dSixv9ovneDiK3PTNZbNTe9ZUGMg1RGUFcPk8G97kr +gCf2o6p6fAbhQ8MTOWIaNr3gKC6UAuQpLmBVrkA9sHSSXvAgZJY/X0VdiLWK2gKgW0VU3jg9CcCo +SmVGFvyqv1ROTVu+OEO3KMqLM6oaJbolXCkvW0pujOotnCr2BXbgd5eAiN1nE28daCSLT7d0geX0 +YJ96Vdc+N9oWaz53rK4YcJUIeSkDiv7BO7M/Gg+kO14fWKGVyasvc0rQLW6aWQ9VGHgtPFGml4vm +u7JwqkwR3v98KzfUetF3NI/n+UL3PIEMS1IK +-----END CERTIFICATE----- + +OpenTrust Root CA G3 +==================== +-----BEGIN CERTIFICATE----- +MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAxCzAJBgNVBAYT +AkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEczMB4X +DTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9w +ZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAARK7liuTcpm3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5B +ta1doYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4GA1UdDwEB +/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAf +BgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAKBggqhkjOPQQDAwNpADBmAjEAj6jcnboM +BBf6Fek9LykBl7+BFjNAk2z8+e2AcG+qj9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta +3U1fJAuwACEl74+nBCZx4nxp5V2a+EEfOzmTk51V6s2N8fvB +-----END CERTIFICATE----- + +ISRG Root X1 +============ +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE +BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD +EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG +EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT +DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r +Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1 +3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K +b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN +Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ +4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf +1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu +hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH +usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r +OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G +A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY +9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV +0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt +hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw +TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx +e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA +JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD +YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n +JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ +m+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +AC RAIZ FNMT-RCM +================ +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT +AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw +MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD +TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf +qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr +btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL +j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou +08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw +WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT +tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ +47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC +ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa +i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o +dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s +D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ +j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT +Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW ++YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 +Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d +8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm +5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG +rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +Amazon Root CA 1 +================ +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1 +MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH +FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ +gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t +dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce +VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3 +DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM +CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy +8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa +2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2 +xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +Amazon Root CA 2 +================ +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1 +MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4 +kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp +N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9 +AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd +fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx +kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS +btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0 +Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN +c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+ +3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw +DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA +A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE +YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW +xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ +gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW +aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV +Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3 +KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi +JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw= +-----END CERTIFICATE----- + +Amazon Root CA 3 +================ +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB +f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr +Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43 +rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc +eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +Amazon Root CA 4 +================ +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN +/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri +83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA +MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 +AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +LuxTrust Global Root 2 +====================== +-----BEGIN CERTIFICATE----- +MIIFwzCCA6ugAwIBAgIUCn6m30tEntpqJIWe5rgV0xZ/u7EwDQYJKoZIhvcNAQELBQAwRjELMAkG +A1UEBhMCTFUxFjAUBgNVBAoMDUx1eFRydXN0IFMuQS4xHzAdBgNVBAMMFkx1eFRydXN0IEdsb2Jh +bCBSb290IDIwHhcNMTUwMzA1MTMyMTU3WhcNMzUwMzA1MTMyMTU3WjBGMQswCQYDVQQGEwJMVTEW +MBQGA1UECgwNTHV4VHJ1c3QgUy5BLjEfMB0GA1UEAwwWTHV4VHJ1c3QgR2xvYmFsIFJvb3QgMjCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeFl78RmOnwYoNMPIf5U2o3C/IPPIfOb9wm +Kb3FibrJgz337spbxm1Jc7TJRqMbNBM/wYlFV/TZsfs2ZUv7COJIcRHIbjuend+JZTemhfY7RBi2 +xjcwYkSSl2l9QjAk5A0MiWtj3sXh306pFGxT4GHO9hcvHTy95iJMHZP1EMShduxq3sVs35a0VkBC +wGKSMKEtFZSg0iAGCW5qbeXrt77U8PEVfIvmTroTzEsnXpk8F12PgX8zPU/TPxvsXD/wPEx1bvKm +1Z3aLQdjAsZy6ZS8TEmVT4hSyNvoaYL4zDRbIvCGp4m9SAptZoFtyMhk+wHh9OHe2Z7d21vUKpkm +FRseTJIpgp7VkoGSQXAZ96Tlk0u8d2cx3Rz9MXANF5kM+Qw5GSoXtTBxVdUPrljhPS80m8+f9niF +wpN6cj5mj5wWEWCPnolvZ77gR1o7DJpni89Gxq44o/KnvObWhWszJHAiS8sIm7vI+AIpHb4gDEa/ +a4ebsypmQjVGbKq6rfmYe+lQVRQxv7HaLe2ArWgk+2mr2HETMOZns4dA/Yl+8kPREd8vZS9kzl8U +ubG/Mb2HeFpZZYiq/FkySIbWTLkpS5XTdvN3JW1CHDiDTf2jX5t/Lax5Gw5CMZdjpPuKadUiDTSQ +MC6otOBttpSsvItO13D8xTiOZCXhTTmQzsmHhFhxAgMBAAGjgagwgaUwDwYDVR0TAQH/BAUwAwEB +/zBCBgNVHSAEOzA5MDcGByuBKwEBAQowLDAqBggrBgEFBQcCARYeaHR0cHM6Ly9yZXBvc2l0b3J5 +Lmx1eHRydXN0Lmx1MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBT/GCh2+UgFLKGu8SsbK7JT ++Et8szAdBgNVHQ4EFgQU/xgodvlIBSyhrvErGyuyU/hLfLMwDQYJKoZIhvcNAQELBQADggIBAGoZ +FO1uecEsh9QNcH7X9njJCwROxLHOk3D+sFTAMs2ZMGQXvw/l4jP9BzZAcg4atmpZ1gDlaCDdLnIN +H2pkMSCEfUmmWjfrRcmF9dTHF5kH5ptV5AzoqbTOjFu1EVzPig4N1qx3gf4ynCSecs5U89BvolbW +7MM3LGVYvlcAGvI1+ut7MV3CwRI9loGIlonBWVx65n9wNOeD4rHh4bhY79SV5GCc8JaXcozrhAIu +ZY+kt9J/Z93I055cqqmkoCUUBpvsT34tC38ddfEz2O3OuHVtPlu5mB0xDVbYQw8wkbIEa91WvpWA +VWe+2M2D2RjuLg+GLZKecBPs3lHJQ3gCpU3I+V/EkVhGFndadKpAvAefMLmx9xIX3eP/JEAdemrR +TxgKqpAd60Ae36EeRJIQmvKN4dFLRp7oRUKX6kWZ8+xm1QL68qZKJKrezrnK+T+Tb/mjuuqlPpmt +/f97mfVl7vBZKGfXkJWkE4SphMHozs51k2MavDzq1WQfLSoSOcbDWjLtR5EWDrw4wVDej8oqkDQc +7kGUnF4ZLvhFSZl0kbAEb+MEWrGrKqv+x9CWttrhSmQGbmBNvUJO/3jaJMobtNeWOWyu8Q6qp31I +iyBMz2TWuJdGsE7RKlY6oJO9r4Ak4Ap+58rVyuiFVdw2KuGUaJPHZnJED4AhMmwlxyOAgwrr +-----END CERTIFICATE----- + +TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT +D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr +IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g +TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp +ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD +VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt +c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth +bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11 +IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8 +6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc +wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0 +3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9 +WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU +ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc +lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R +e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j +q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +GDCA TrustAUTH R5 ROOT +====================== +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw +BgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD +DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow +YjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs +AlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p +OqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr +pftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ +9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ +xXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM +R6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ +D2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4 +oR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx +9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9 +H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35 +6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd ++PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ +HtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD +F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ +8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv +/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT +aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +TrustCor RootCert CA-1 +====================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYDVQQGEwJQQTEP +MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig +U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkx +MjMxMTcyMzE2WjCBpDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFu +YW1hIENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUGA1UECwwe +VHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZUcnVzdENvciBSb290Q2Vy +dCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv463leLCJhJrMxnHQFgKq1mq +jQCj/IDHUHuO1CAmujIS2CNUSSUQIpidRtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4 +pQa81QBeCQryJ3pS/C3Vseq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0 +JEsq1pme9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CVEY4h +gLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorWhnAbJN7+KIor0Gqw +/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/DeOxCbeKyKsZn3MzUOcwHwYDVR0j +BBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwDQYJKoZIhvcNAQELBQADggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5 +mDo4Nvu7Zp5I/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf +ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZyonnMlo2HD6C +qFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djtsL1Ac59v2Z3kf9YKVmgenFK+P +3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdNzl/HHk484IkzlQsPpTLWPFp5LBk= +-----END CERTIFICATE----- + +TrustCor RootCert CA-2 +====================== +-----BEGIN CERTIFICATE----- +MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNVBAYTAlBBMQ8w +DQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQwIgYDVQQKDBtUcnVzdENvciBT +eXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0 +eTEfMB0GA1UEAwwWVHJ1c3RDb3IgUm9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEy +MzExNzI2MzlaMIGkMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5h +bWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U +cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0 +IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnIG7CKqJiJJWQdsg4foDSq8Gb +ZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9Nk +RvRUqdw6VC0xK5mC8tkq1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1 +oYxOdqHp2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nKDOOb +XUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hapeaz6LMvYHL1cEksr1 +/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF3wP+TfSvPd9cW436cOGlfifHhi5q +jxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQP +eSghYA2FFn3XVDjxklb9tTNMg9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+Ctg +rKAmrhQhJ8Z3mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh +8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAdBgNVHQ4EFgQU +2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6UnrybPZx9mCAZ5YwwYrIwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/h +Osh80QA9z+LqBrWyOrsGS2h60COXdKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnp +kpfbsEZC89NiqpX+MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv +2wnL/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RXCI/hOWB3 +S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYaZH9bDTMJBzN7Bj8RpFxw +PIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dv +DDqPys/cA8GiCcjl/YBeyGBCARsaU1q7N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYU +RpFHmygk71dSTlxCnKr3Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANE +xdqtvArBAs8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp5KeX +RKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu1uwJ +-----END CERTIFICATE----- + +TrustCor ECA-1 +============== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYDVQQGEwJQQTEP +MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig +U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkxFzAVBgNVBAMMDlRydXN0Q29yIEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3Mjgw +N1owgZwxCzAJBgNVBAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5 +MSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29y +IENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3IgRUNBLTEwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb3w9U73NjKYKtR8aja+3+XzP4Q1HpGjOR +MRegdMTUpwHmspI+ap3tDvl0mEDTPwOABoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23 +xFUfJ3zSCNV2HykVh0A53ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmc +p0yJF4OuowReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/wZ0+ +fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZFZtS6mFjBAgMBAAGj +YzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAfBgNVHSMEGDAWgBREnkj1zG1I1KBL +f/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF +AAOCAQEABT41XBVwm8nHc2FvcivUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u +/ukZMjgDfxT2AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F +hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50soIipX1TH0Xs +J5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BIWJZpTdwHjFGTot+fDz2LYLSC +jaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1WitJ/X5g== +-----END CERTIFICATE----- + +SSL.com Root Certification Authority RSA +======================================== +-----BEGIN CERTIFICATE----- +MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxDjAM +BgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24x +MTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYw +MjEyMTczOTM5WhcNNDEwMjEyMTczOTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx +EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NM +LmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2RxFdHaxh3a3by/ZPkPQ/C +Fp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aXqhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8 +P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcCC52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/ge +oeOy3ZExqysdBP+lSgQ36YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkp +k8zruFvh/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrFYD3Z +fBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93EJNyAKoFBbZQ+yODJ +gUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVcUS4cK38acijnALXRdMbX5J+tB5O2 +UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi8 +1xtZPCvM8hnIk2snYxnP/Okm+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4s +bE6x/c+cCbqiM+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGVcpNxJK1ok1iOMq8bs3AD/CUr +dIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBcHadm47GUBwwyOabqG7B52B2ccETjit3E+ZUf +ijhDPwGFpUenPUayvOUiaPd7nNgsPgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAsl +u1OJD7OAUN5F7kR/q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjq +erQ0cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jra6x+3uxj +MxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90IH37hVZkLId6Tngr75qNJ +vTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/YK9f1JmzJBjSWFupwWRoyeXkLtoh/D1JI +Pb9s2KJELtFOt3JY04kTlf5Eq/jXixtunLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406y +wKBjYZC6VWg3dGq2ktufoYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NI +WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +SSL.com Root Certification Authority ECC +======================================== +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv +BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy +MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO +BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+ +8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR +hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT +jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW +e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z +5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority RSA R2 +============================================== +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w +DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u +MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI +DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD +VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh +hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w +cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO +Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+ +B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh +CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim +9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto +RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm +JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48 ++qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp +qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1 +++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx +Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G +guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz +OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7 +CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq +lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR +rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1 +hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX +9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority ECC +=========================================== +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy +BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw +MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx +EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM +LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy +3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O +BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe +5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ +N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm +m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/src/CaBundle.php b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/src/CaBundle.php new file mode 100644 index 00000000..6718a0f6 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/src/CaBundle.php @@ -0,0 +1,260 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ +namespace _PhpScoper5b87e821469bb\Composer\CaBundle; + +use _PhpScoper5b87e821469bb\Psr\Log\LoggerInterface; +use _PhpScoper5b87e821469bb\Symfony\Component\Process\PhpProcess; +/** + * @author Chris Smith + * @author Jordi Boggiano + */ +class CaBundle +{ + private static $caPath; + private static $caFileValidity = array(); + private static $useOpensslParse; + /** + * Returns the system CA bundle path, or a path to the bundled one + * + * This method was adapted from Sslurp. + * https://github.com/EvanDotPro/Sslurp + * + * (c) Evan Coury + * + * For the full copyright and license information, please see below: + * + * Copyright (c) 2013, Evan Coury + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @param LoggerInterface $logger optional logger for information about which CA files were loaded + * @return string path to a CA bundle file or directory + */ + public static function getSystemCaRootBundlePath(\_PhpScoper5b87e821469bb\Psr\Log\LoggerInterface $logger = null) + { + if (self::$caPath !== null) { + return self::$caPath; + } + // If SSL_CERT_FILE env variable points to a valid certificate/bundle, use that. + // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. + $envCertFile = \getenv('SSL_CERT_FILE'); + if ($envCertFile && \is_readable($envCertFile) && static::validateCaFile($envCertFile, $logger)) { + return self::$caPath = $envCertFile; + } + // If SSL_CERT_DIR env variable points to a valid certificate/bundle, use that. + // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. + $envCertDir = \getenv('SSL_CERT_DIR'); + if ($envCertDir && \is_dir($envCertDir) && \is_readable($envCertDir)) { + return self::$caPath = $envCertDir; + } + $configured = \ini_get('openssl.cafile'); + if ($configured && \strlen($configured) > 0 && \is_readable($configured) && static::validateCaFile($configured, $logger)) { + return self::$caPath = $configured; + } + $configured = \ini_get('openssl.capath'); + if ($configured && \is_dir($configured) && \is_readable($configured)) { + return self::$caPath = $configured; + } + $caBundlePaths = array( + '/etc/pki/tls/certs/ca-bundle.crt', + // Fedora, RHEL, CentOS (ca-certificates package) + '/etc/ssl/certs/ca-certificates.crt', + // Debian, Ubuntu, Gentoo, Arch Linux (ca-certificates package) + '/etc/ssl/ca-bundle.pem', + // SUSE, openSUSE (ca-certificates package) + '/usr/local/share/certs/ca-root-nss.crt', + // FreeBSD (ca_root_nss_package) + '/usr/ssl/certs/ca-bundle.crt', + // Cygwin + '/opt/local/share/curl/curl-ca-bundle.crt', + // OS X macports, curl-ca-bundle package + '/usr/local/share/curl/curl-ca-bundle.crt', + // Default cURL CA bunde path (without --with-ca-bundle option) + '/usr/share/ssl/certs/ca-bundle.crt', + // Really old RedHat? + '/etc/ssl/cert.pem', + // OpenBSD + '/usr/local/etc/ssl/cert.pem', + // FreeBSD 10.x + '/usr/local/etc/openssl/cert.pem', + ); + foreach ($caBundlePaths as $caBundle) { + if (@\is_readable($caBundle) && static::validateCaFile($caBundle, $logger)) { + return self::$caPath = $caBundle; + } + } + foreach ($caBundlePaths as $caBundle) { + $caBundle = \dirname($caBundle); + if (@\is_dir($caBundle) && \glob($caBundle . '/*')) { + return self::$caPath = $caBundle; + } + } + return self::$caPath = static::getBundledCaBundlePath(); + // Bundled CA file, last resort + } + /** + * Returns the path to the bundled CA file + * + * In case you don't want to trust the user or the system, you can use this directly + * + * @return string path to a CA bundle file + */ + public static function getBundledCaBundlePath() + { + $caBundleFile = __DIR__ . '/../res/cacert.pem'; + // cURL does not understand 'phar://' paths + // see https://github.com/composer/ca-bundle/issues/10 + if (0 === \strpos($caBundleFile, 'phar://')) { + \file_put_contents($tempCaBundleFile = \tempnam(\sys_get_temp_dir(), 'openssl-ca-bundle-'), \file_get_contents($caBundleFile)); + \register_shutdown_function(function () use($tempCaBundleFile) { + @\unlink($tempCaBundleFile); + }); + $caBundleFile = $tempCaBundleFile; + } + return $caBundleFile; + } + /** + * Validates a CA file using opensl_x509_parse only if it is safe to use + * + * @param string $filename + * @param LoggerInterface $logger optional logger for information about which CA files were loaded + * + * @return bool + */ + public static function validateCaFile($filename, \_PhpScoper5b87e821469bb\Psr\Log\LoggerInterface $logger = null) + { + static $warned = \false; + if (isset(self::$caFileValidity[$filename])) { + return self::$caFileValidity[$filename]; + } + $contents = \file_get_contents($filename); + // assume the CA is valid if php is vulnerable to + // https://www.sektioneins.de/advisories/advisory-012013-php-openssl_x509_parse-memory-corruption-vulnerability.html + if (!static::isOpensslParseSafe()) { + if (!$warned && $logger) { + $logger->warning(\sprintf('Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.', \PHP_VERSION)); + $warned = \true; + } + $isValid = !empty($contents); + } else { + $isValid = (bool) \openssl_x509_parse($contents); + } + if ($logger) { + $logger->debug('Checked CA file ' . \realpath($filename) . ': ' . ($isValid ? 'valid' : 'invalid')); + } + return self::$caFileValidity[$filename] = $isValid; + } + /** + * Test if it is safe to use the PHP function openssl_x509_parse(). + * + * This checks if OpenSSL extensions is vulnerable to remote code execution + * via the exploit documented as CVE-2013-6420. + * + * @return bool + */ + public static function isOpensslParseSafe() + { + if (null !== self::$useOpensslParse) { + return self::$useOpensslParse; + } + if (\PHP_VERSION_ID >= 50600) { + return self::$useOpensslParse = \true; + } + // Vulnerable: + // PHP 5.3.0 - PHP 5.3.27 + // PHP 5.4.0 - PHP 5.4.22 + // PHP 5.5.0 - PHP 5.5.6 + if (\PHP_VERSION_ID < 50400 && \PHP_VERSION_ID >= 50328 || \PHP_VERSION_ID < 50500 && \PHP_VERSION_ID >= 50423 || \PHP_VERSION_ID < 50600 && \PHP_VERSION_ID >= 50507) { + // This version of PHP has the fix for CVE-2013-6420 applied. + return self::$useOpensslParse = \true; + } + if (\defined('PHP_WINDOWS_VERSION_BUILD')) { + // Windows is probably insecure in this case. + return self::$useOpensslParse = \false; + } + $compareDistroVersionPrefix = function ($prefix, $fixedVersion) { + $regex = '{^' . \preg_quote($prefix) . '([0-9]+)$}'; + if (\preg_match($regex, \PHP_VERSION, $m)) { + return (int) $m[1] >= $fixedVersion; + } + return \false; + }; + // Hard coded list of PHP distributions with the fix backported. + if ($compareDistroVersionPrefix('5.3.3-7+squeeze', 18) || $compareDistroVersionPrefix('5.4.4-14+deb7u', 7) || $compareDistroVersionPrefix('5.3.10-1ubuntu3.', 9)) { + return self::$useOpensslParse = \true; + } + // Symfony Process component is missing so we assume it is unsafe at this point + if (!\class_exists('_PhpScoper5b87e821469bb\\Symfony\\Component\\Process\\PhpProcess')) { + return self::$useOpensslParse = \false; + } + // This is where things get crazy, because distros backport security + // fixes the chances are on NIX systems the fix has been applied but + // it's not possible to verify that from the PHP version. + // + // To verify exec a new PHP process and run the issue testcase with + // known safe input that replicates the bug. + // Based on testcase in https://github.com/php/php-src/commit/c1224573c773b6845e83505f717fbf820fc18415 + // changes in https://github.com/php/php-src/commit/76a7fd893b7d6101300cc656058704a73254d593 + $cert = 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVwRENDQTR5Z0F3SUJBZ0lKQUp6dThyNnU2ZUJjTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUhETVFzd0NRWUQKVlFRR0V3SkVSVEVjTUJvR0ExVUVDQXdUVG05eVpISm9aV2x1TFZkbGMzUm1ZV3hsYmpFUU1BNEdBMVVFQnd3SApTOE9Ed3Jac2JqRVVNQklHQTFVRUNnd0xVMlZyZEdsdmJrVnBibk14SHpBZEJnTlZCQXNNRmsxaGJHbGphVzkxCmN5QkRaWEowSUZObFkzUnBiMjR4SVRBZkJnTlZCQU1NR0cxaGJHbGphVzkxY3k1elpXdDBhVzl1WldsdWN5NWsKWlRFcU1DZ0dDU3FHU0liM0RRRUpBUlliYzNSbFptRnVMbVZ6YzJWeVFITmxhM1JwYjI1bGFXNXpMbVJsTUhVWQpaREU1TnpBd01UQXhNREF3TURBd1dnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQVhEVEUwTVRFeU9ERXhNemt6TlZvd2djTXhDekFKQmdOVkJBWVRBa1JGTVJ3d0dnWURWUVFJREJOTwpiM0prY21obGFXNHRWMlZ6ZEdaaGJHVnVNUkF3RGdZRFZRUUhEQWRMdzRQQ3RteHVNUlF3RWdZRFZRUUtEQXRUClpXdDBhVzl1UldsdWN6RWZNQjBHQTFVRUN3d1dUV0ZzYVdOcGIzVnpJRU5sY25RZ1UyVmpkR2x2YmpFaE1COEcKQTFVRUF3d1liV0ZzYVdOcGIzVnpMbk5sYTNScGIyNWxhVzV6TG1SbE1Tb3dLQVlKS29aSWh2Y05BUWtCRmh0egpkR1ZtWVc0dVpYTnpaWEpBYzJWcmRHbHZibVZwYm5NdVpHVXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCCkR3QXdnZ0VLQW9JQkFRRERBZjNobDdKWTBYY0ZuaXlFSnBTU0RxbjBPcUJyNlFQNjV1c0pQUnQvOFBhRG9xQnUKd0VZVC9OYSs2ZnNnUGpDMHVLOURaZ1dnMnRIV1dvYW5TYmxBTW96NVBINlorUzRTSFJaN2UyZERJalBqZGhqaAowbUxnMlVNTzV5cDBWNzk3R2dzOWxOdDZKUmZIODFNTjJvYlhXczROdHp0TE11RDZlZ3FwcjhkRGJyMzRhT3M4CnBrZHVpNVVhd1Raa3N5NXBMUEhxNWNNaEZHbTA2djY1Q0xvMFYyUGQ5K0tBb2tQclBjTjVLTEtlYno3bUxwazYKU01lRVhPS1A0aWRFcXh5UTdPN2ZCdUhNZWRzUWh1K3ByWTNzaTNCVXlLZlF0UDVDWm5YMmJwMHdLSHhYMTJEWAoxbmZGSXQ5RGJHdkhUY3lPdU4rblpMUEJtM3ZXeG50eUlJdlZBZ01CQUFHalFqQkFNQWtHQTFVZEV3UUNNQUF3CkVRWUpZSVpJQVliNFFnRUJCQVFEQWdlQU1Bc0dBMVVkRHdRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFHMGZaWVlDVGJkajFYWWMrMVNub2FQUit2SThDOENhRAo4KzBVWWhkbnlVNGdnYTBCQWNEclk5ZTk0ZUVBdTZacXljRjZGakxxWFhkQWJvcHBXb2NyNlQ2R0QxeDMzQ2tsClZBcnpHL0t4UW9oR0QySmVxa2hJTWxEb214SE83a2EzOStPYThpMnZXTFZ5alU4QVp2V01BcnVIYTRFRU55RzcKbFcyQWFnYUZLRkNyOVRuWFRmcmR4R1ZFYnY3S1ZRNmJkaGc1cDVTanBXSDErTXEwM3VSM1pYUEJZZHlWODMxOQpvMGxWajFLRkkyRENML2xpV2lzSlJvb2YrMWNSMzVDdGQwd1lCY3BCNlRac2xNY09QbDc2ZHdLd0pnZUpvMlFnClpzZm1jMnZDMS9xT2xOdU5xLzBUenprVkd2OEVUVDNDZ2FVK1VYZTRYT1Z2a2NjZWJKbjJkZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K'; + $script = <<<'EOT' + +error_reporting(-1); +$info = openssl_x509_parse(base64_decode('%s')); +var_dump(PHP_VERSION, $info['issuer']['emailAddress'], $info['validFrom_time_t']); + +EOT; + $script = '<' . "?php\n" . \sprintf($script, $cert); + try { + $process = new \_PhpScoper5b87e821469bb\Symfony\Component\Process\PhpProcess($script); + $process->mustRun(); + } catch (\Exception $e) { + // In the case of any exceptions just accept it is not possible to + // determine the safety of openssl_x509_parse and bail out. + return self::$useOpensslParse = \false; + } + $output = \preg_split('{\\r?\\n}', \trim($process->getOutput())); + $errorOutput = \trim($process->getErrorOutput()); + if (\count($output) === 3 && $output[0] === \sprintf('string(%d) "%s"', \strlen(\PHP_VERSION), \PHP_VERSION) && $output[1] === 'string(27) "stefan.esser@sektioneins.de"' && $output[2] === 'int(-1)' && \preg_match('{openssl_x509_parse\\(\\): illegal (?:ASN1 data type for|length in) timestamp in - on line \\d+}', $errorOutput)) { + // This PHP has the fix backported probably by a distro security team. + return self::$useOpensslParse = \true; + } + return self::$useOpensslParse = \false; + } + /** + * Resets the static caches + */ + public static function reset() + { + self::$caFileValidity = array(); + self::$caPath = null; + self::$useOpensslParse = null; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/installed.json b/catalog/controller/payment/mollie-api-client/vendor/composer/installed.json new file mode 100644 index 00000000..a72a2aa2 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/installed.json @@ -0,0 +1,299 @@ +[ + { + "name": "composer\/ca-bundle", + "version": "1.1.2", + "version_normalized": "1.1.2.0", + "source": { + "type": "git", + "url": "https:\/\/github.com\/composer\/ca-bundle.git", + "reference": "46afded9720f40b9dc63542af4e3e43a1177acb0" + }, + "dist": { + "type": "zip", + "url": "https:\/\/api.github.com\/repos\/composer\/ca-bundle\/zipball\/46afded9720f40b9dc63542af4e3e43a1177acb0", + "reference": "46afded9720f40b9dc63542af4e3e43a1177acb0", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit\/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "psr\/log": "^1.0", + "symfony\/process": "^2.5 || ^3.0 || ^4.0" + }, + "time": "2018-08-08T08:57:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "_PhpScoper5b87e821469bb\\Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https:\/\/packagist.org\/downloads\/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http:\/\/seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ] + }, + { + "name": "guzzlehttp\/guzzle", + "version": "6.3.3", + "version_normalized": "6.3.3.0", + "source": { + "type": "git", + "url": "https:\/\/github.com\/guzzle\/guzzle.git", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + }, + "dist": { + "type": "zip", + "url": "https:\/\/api.github.com\/repos\/guzzle\/guzzle\/zipball\/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "shasum": "" + }, + "require": { + "guzzlehttp\/promises": "^1.0", + "guzzlehttp\/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit\/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr\/log": "^1.0" + }, + "suggest": { + "psr\/log": "Required for using the Log middleware" + }, + "time": "2018-04-22T15:46:56+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "src\/functions_include.php" + ], + "psr-4": { + "_PhpScoper5b87e821469bb\\GuzzleHttp\\": "src\/" + } + }, + "notification-url": "https:\/\/packagist.org\/downloads\/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https:\/\/github.com\/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http:\/\/guzzlephp.org\/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ] + }, + { + "name": "guzzlehttp\/promises", + "version": "v1.3.1", + "version_normalized": "1.3.1.0", + "source": { + "type": "git", + "url": "https:\/\/github.com\/guzzle\/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https:\/\/api.github.com\/repos\/guzzle\/promises\/zipball\/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit\/phpunit": "^4.0" + }, + "time": "2016-12-20T10:07:11+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\": "src\/" + }, + "files": [ + "src\/functions_include.php" + ] + }, + "notification-url": "https:\/\/packagist.org\/downloads\/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https:\/\/github.com\/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ] + }, + { + "name": "guzzlehttp\/psr7", + "version": "1.4.2", + "version_normalized": "1.4.2.0", + "source": { + "type": "git", + "url": "https:\/\/github.com\/guzzle\/psr7.git", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + }, + "dist": { + "type": "zip", + "url": "https:\/\/api.github.com\/repos\/guzzle\/psr7\/zipball\/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr\/http-message": "~1.0" + }, + "provide": { + "psr\/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit\/phpunit": "~4.0" + }, + "time": "2017-03-20T17:10:46+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\": "src\/" + }, + "files": [ + "src\/functions_include.php" + ] + }, + "notification-url": "https:\/\/packagist.org\/downloads\/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https:\/\/github.com\/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https:\/\/github.com\/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "request", + "response", + "stream", + "uri", + "url" + ] + }, + { + "name": "psr\/http-message", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https:\/\/github.com\/php-fig\/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https:\/\/api.github.com\/repos\/php-fig\/http-message\/zipball\/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2016-08-06T14:39:51+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\": "src\/" + } + }, + "notification-url": "https:\/\/packagist.org\/downloads\/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http:\/\/www.php-fig.org\/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https:\/\/github.com\/php-fig\/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ] + } +] \ No newline at end of file diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/CHANGELOG.md b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/CHANGELOG.md new file mode 100644 index 00000000..17badd75 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/CHANGELOG.md @@ -0,0 +1,1287 @@ +# Change Log + +## 6.3.3 - 2018-04-22 + +* Fix: Default headers when decode_content is specified + + +## 6.3.2 - 2018-03-26 + +* Fix: Release process + + +## 6.3.1 - 2018-03-26 + +* Bug fix: Parsing 0 epoch expiry times in cookies [#2014](https://github.com/guzzle/guzzle/pull/2014) +* Improvement: Better ConnectException detection [#2012](https://github.com/guzzle/guzzle/pull/2012) +* Bug fix: Malformed domain that contains a "/" [#1999](https://github.com/guzzle/guzzle/pull/1999) +* Bug fix: Undefined offset when a cookie has no first key-value pair [#1998](https://github.com/guzzle/guzzle/pull/1998) +* Improvement: Support PHPUnit 6 [#1953](https://github.com/guzzle/guzzle/pull/1953) +* Bug fix: Support empty headers [#1915](https://github.com/guzzle/guzzle/pull/1915) +* Bug fix: Ignore case during header modifications [#1916](https://github.com/guzzle/guzzle/pull/1916) + ++ Minor code cleanups, documentation fixes and clarifications. + + +## 6.3.0 - 2017-06-22 + +* Feature: force IP resolution (ipv4 or ipv6) [#1608](https://github.com/guzzle/guzzle/pull/1608), [#1659](https://github.com/guzzle/guzzle/pull/1659) +* Improvement: Don't include summary in exception message when body is empty [#1621](https://github.com/guzzle/guzzle/pull/1621) +* Improvement: Handle `on_headers` option in MockHandler [#1580](https://github.com/guzzle/guzzle/pull/1580) +* Improvement: Added SUSE Linux CA path [#1609](https://github.com/guzzle/guzzle/issues/1609) +* Improvement: Use class reference for getting the name of the class instead of using hardcoded strings [#1641](https://github.com/guzzle/guzzle/pull/1641) +* Feature: Added `read_timeout` option [#1611](https://github.com/guzzle/guzzle/pull/1611) +* Bug fix: PHP 7.x fixes [#1685](https://github.com/guzzle/guzzle/pull/1685), [#1686](https://github.com/guzzle/guzzle/pull/1686), [#1811](https://github.com/guzzle/guzzle/pull/1811) +* Deprecation: BadResponseException instantiation without a response [#1642](https://github.com/guzzle/guzzle/pull/1642) +* Feature: Added NTLM auth [#1569](https://github.com/guzzle/guzzle/pull/1569) +* Feature: Track redirect HTTP status codes [#1711](https://github.com/guzzle/guzzle/pull/1711) +* Improvement: Check handler type during construction [#1745](https://github.com/guzzle/guzzle/pull/1745) +* Improvement: Always include the Content-Length if there's a body [#1721](https://github.com/guzzle/guzzle/pull/1721) +* Feature: Added convenience method to access a cookie by name [#1318](https://github.com/guzzle/guzzle/pull/1318) +* Bug fix: Fill `CURLOPT_CAPATH` and `CURLOPT_CAINFO` properly [#1684](https://github.com/guzzle/guzzle/pull/1684) +* Improvement: Use `\GuzzleHttp\Promise\rejection_for` function instead of object init [#1827](https://github.com/guzzle/guzzle/pull/1827) + + ++ Minor code cleanups, documentation fixes and clarifications. + +## 6.2.3 - 2017-02-28 + +* Fix deprecations with guzzle/psr7 version 1.4 + +## 6.2.2 - 2016-10-08 + +* Allow to pass nullable Response to delay callable +* Only add scheme when host is present +* Fix drain case where content-length is the literal string zero +* Obfuscate in-URL credentials in exceptions + +## 6.2.1 - 2016-07-18 + +* Address HTTP_PROXY security vulnerability, CVE-2016-5385: + https://httpoxy.org/ +* Fixing timeout bug with StreamHandler: + https://github.com/guzzle/guzzle/pull/1488 +* Only read up to `Content-Length` in PHP StreamHandler to avoid timeouts when + a server does not honor `Connection: close`. +* Ignore URI fragment when sending requests. + +## 6.2.0 - 2016-03-21 + +* Feature: added `GuzzleHttp\json_encode` and `GuzzleHttp\json_decode`. + https://github.com/guzzle/guzzle/pull/1389 +* Bug fix: Fix sleep calculation when waiting for delayed requests. + https://github.com/guzzle/guzzle/pull/1324 +* Feature: More flexible history containers. + https://github.com/guzzle/guzzle/pull/1373 +* Bug fix: defer sink stream opening in StreamHandler. + https://github.com/guzzle/guzzle/pull/1377 +* Bug fix: do not attempt to escape cookie values. + https://github.com/guzzle/guzzle/pull/1406 +* Feature: report original content encoding and length on decoded responses. + https://github.com/guzzle/guzzle/pull/1409 +* Bug fix: rewind seekable request bodies before dispatching to cURL. + https://github.com/guzzle/guzzle/pull/1422 +* Bug fix: provide an empty string to `http_build_query` for HHVM workaround. + https://github.com/guzzle/guzzle/pull/1367 + +## 6.1.1 - 2015-11-22 + +* Bug fix: Proxy::wrapSync() now correctly proxies to the appropriate handler + https://github.com/guzzle/guzzle/commit/911bcbc8b434adce64e223a6d1d14e9a8f63e4e4 +* Feature: HandlerStack is now more generic. + https://github.com/guzzle/guzzle/commit/f2102941331cda544745eedd97fc8fd46e1ee33e +* Bug fix: setting verify to false in the StreamHandler now disables peer + verification. https://github.com/guzzle/guzzle/issues/1256 +* Feature: Middleware now uses an exception factory, including more error + context. https://github.com/guzzle/guzzle/pull/1282 +* Feature: better support for disabled functions. + https://github.com/guzzle/guzzle/pull/1287 +* Bug fix: fixed regression where MockHandler was not using `sink`. + https://github.com/guzzle/guzzle/pull/1292 + +## 6.1.0 - 2015-09-08 + +* Feature: Added the `on_stats` request option to provide access to transfer + statistics for requests. https://github.com/guzzle/guzzle/pull/1202 +* Feature: Added the ability to persist session cookies in CookieJars. + https://github.com/guzzle/guzzle/pull/1195 +* Feature: Some compatibility updates for Google APP Engine + https://github.com/guzzle/guzzle/pull/1216 +* Feature: Added support for NO_PROXY to prevent the use of a proxy based on + a simple set of rules. https://github.com/guzzle/guzzle/pull/1197 +* Feature: Cookies can now contain square brackets. + https://github.com/guzzle/guzzle/pull/1237 +* Bug fix: Now correctly parsing `=` inside of quotes in Cookies. + https://github.com/guzzle/guzzle/pull/1232 +* Bug fix: Cusotm cURL options now correctly override curl options of the + same name. https://github.com/guzzle/guzzle/pull/1221 +* Bug fix: Content-Type header is now added when using an explicitly provided + multipart body. https://github.com/guzzle/guzzle/pull/1218 +* Bug fix: Now ignoring Set-Cookie headers that have no name. +* Bug fix: Reason phrase is no longer cast to an int in some cases in the + cURL handler. https://github.com/guzzle/guzzle/pull/1187 +* Bug fix: Remove the Authorization header when redirecting if the Host + header changes. https://github.com/guzzle/guzzle/pull/1207 +* Bug fix: Cookie path matching fixes + https://github.com/guzzle/guzzle/issues/1129 +* Bug fix: Fixing the cURL `body_as_string` setting + https://github.com/guzzle/guzzle/pull/1201 +* Bug fix: quotes are no longer stripped when parsing cookies. + https://github.com/guzzle/guzzle/issues/1172 +* Bug fix: `form_params` and `query` now always uses the `&` separator. + https://github.com/guzzle/guzzle/pull/1163 +* Bug fix: Adding a Content-Length to PHP stream wrapper requests if not set. + https://github.com/guzzle/guzzle/pull/1189 + +## 6.0.2 - 2015-07-04 + +* Fixed a memory leak in the curl handlers in which references to callbacks + were not being removed by `curl_reset`. +* Cookies are now extracted properly before redirects. +* Cookies now allow more character ranges. +* Decoded Content-Encoding responses are now modified to correctly reflect + their state if the encoding was automatically removed by a handler. This + means that the `Content-Encoding` header may be removed an the + `Content-Length` modified to reflect the message size after removing the + encoding. +* Added a more explicit error message when trying to use `form_params` and + `multipart` in the same request. +* Several fixes for HHVM support. +* Functions are now conditionally required using an additional level of + indirection to help with global Composer installations. + +## 6.0.1 - 2015-05-27 + +* Fixed a bug with serializing the `query` request option where the `&` + separator was missing. +* Added a better error message for when `body` is provided as an array. Please + use `form_params` or `multipart` instead. +* Various doc fixes. + +## 6.0.0 - 2015-05-26 + +* See the UPGRADING.md document for more information. +* Added `multipart` and `form_params` request options. +* Added `synchronous` request option. +* Added the `on_headers` request option. +* Fixed `expect` handling. +* No longer adding default middlewares in the client ctor. These need to be + present on the provided handler in order to work. +* Requests are no longer initiated when sending async requests with the + CurlMultiHandler. This prevents unexpected recursion from requests completing + while ticking the cURL loop. +* Removed the semantics of setting `default` to `true`. This is no longer + required now that the cURL loop is not ticked for async requests. +* Added request and response logging middleware. +* No longer allowing self signed certificates when using the StreamHandler. +* Ensuring that `sink` is valid if saving to a file. +* Request exceptions now include a "handler context" which provides handler + specific contextual information. +* Added `GuzzleHttp\RequestOptions` to allow request options to be applied + using constants. +* `$maxHandles` has been removed from CurlMultiHandler. +* `MultipartPostBody` is now part of the `guzzlehttp/psr7` package. + +## 5.3.0 - 2015-05-19 + +* Mock now supports `save_to` +* Marked `AbstractRequestEvent::getTransaction()` as public. +* Fixed a bug in which multiple headers using different casing would overwrite + previous headers in the associative array. +* Added `Utils::getDefaultHandler()` +* Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated. +* URL scheme is now always lowercased. + +## 6.0.0-beta.1 + +* Requires PHP >= 5.5 +* Updated to use PSR-7 + * Requires immutable messages, which basically means an event based system + owned by a request instance is no longer possible. + * Utilizing the [Guzzle PSR-7 package](https://github.com/guzzle/psr7). + * Removed the dependency on `guzzlehttp/streams`. These stream abstractions + are available in the `guzzlehttp/psr7` package under the `GuzzleHttp\Psr7` + namespace. +* Added middleware and handler system + * Replaced the Guzzle event and subscriber system with a middleware system. + * No longer depends on RingPHP, but rather places the HTTP handlers directly + in Guzzle, operating on PSR-7 messages. + * Retry logic is now encapsulated in `GuzzleHttp\Middleware::retry`, which + means the `guzzlehttp/retry-subscriber` is now obsolete. + * Mocking responses is now handled using `GuzzleHttp\Handler\MockHandler`. +* Asynchronous responses + * No longer supports the `future` request option to send an async request. + Instead, use one of the `*Async` methods of a client (e.g., `requestAsync`, + `getAsync`, etc.). + * Utilizing `GuzzleHttp\Promise` instead of React's promise library to avoid + recursion required by chaining and forwarding react promises. See + https://github.com/guzzle/promises + * Added `requestAsync` and `sendAsync` to send request asynchronously. + * Added magic methods for `getAsync()`, `postAsync()`, etc. to send requests + asynchronously. +* Request options + * POST and form updates + * Added the `form_fields` and `form_files` request options. + * Removed the `GuzzleHttp\Post` namespace. + * The `body` request option no longer accepts an array for POST requests. + * The `exceptions` request option has been deprecated in favor of the + `http_errors` request options. + * The `save_to` request option has been deprecated in favor of `sink` request + option. +* Clients no longer accept an array of URI template string and variables for + URI variables. You will need to expand URI templates before passing them + into a client constructor or request method. +* Client methods `get()`, `post()`, `put()`, `patch()`, `options()`, etc. are + now magic methods that will send synchronous requests. +* Replaced `Utils.php` with plain functions in `functions.php`. +* Removed `GuzzleHttp\Collection`. +* Removed `GuzzleHttp\BatchResults`. Batched pool results are now returned as + an array. +* Removed `GuzzleHttp\Query`. Query string handling is now handled using an + associative array passed into the `query` request option. The query string + is serialized using PHP's `http_build_query`. If you need more control, you + can pass the query string in as a string. +* `GuzzleHttp\QueryParser` has been replaced with the + `GuzzleHttp\Psr7\parse_query`. + +## 5.2.0 - 2015-01-27 + +* Added `AppliesHeadersInterface` to make applying headers to a request based + on the body more generic and not specific to `PostBodyInterface`. +* Reduced the number of stack frames needed to send requests. +* Nested futures are now resolved in the client rather than the RequestFsm +* Finishing state transitions is now handled in the RequestFsm rather than the + RingBridge. +* Added a guard in the Pool class to not use recursion for request retries. + +## 5.1.0 - 2014-12-19 + +* Pool class no longer uses recursion when a request is intercepted. +* The size of a Pool can now be dynamically adjusted using a callback. + See https://github.com/guzzle/guzzle/pull/943. +* Setting a request option to `null` when creating a request with a client will + ensure that the option is not set. This allows you to overwrite default + request options on a per-request basis. + See https://github.com/guzzle/guzzle/pull/937. +* Added the ability to limit which protocols are allowed for redirects by + specifying a `protocols` array in the `allow_redirects` request option. +* Nested futures due to retries are now resolved when waiting for synchronous + responses. See https://github.com/guzzle/guzzle/pull/947. +* `"0"` is now an allowed URI path. See + https://github.com/guzzle/guzzle/pull/935. +* `Query` no longer typehints on the `$query` argument in the constructor, + allowing for strings and arrays. +* Exceptions thrown in the `end` event are now correctly wrapped with Guzzle + specific exceptions if necessary. + +## 5.0.3 - 2014-11-03 + +This change updates query strings so that they are treated as un-encoded values +by default where the value represents an un-encoded value to send over the +wire. A Query object then encodes the value before sending over the wire. This +means that even value query string values (e.g., ":") are url encoded. This +makes the Query class match PHP's http_build_query function. However, if you +want to send requests over the wire using valid query string characters that do +not need to be encoded, then you can provide a string to Url::setQuery() and +pass true as the second argument to specify that the query string is a raw +string that should not be parsed or encoded (unless a call to getQuery() is +subsequently made, forcing the query-string to be converted into a Query +object). + +## 5.0.2 - 2014-10-30 + +* Added a trailing `\r\n` to multipart/form-data payloads. See + https://github.com/guzzle/guzzle/pull/871 +* Added a `GuzzleHttp\Pool::send()` convenience method to match the docs. +* Status codes are now returned as integers. See + https://github.com/guzzle/guzzle/issues/881 +* No longer overwriting an existing `application/x-www-form-urlencoded` header + when sending POST requests, allowing for customized headers. See + https://github.com/guzzle/guzzle/issues/877 +* Improved path URL serialization. + + * No longer double percent-encoding characters in the path or query string if + they are already encoded. + * Now properly encoding the supplied path to a URL object, instead of only + encoding ' ' and '?'. + * Note: This has been changed in 5.0.3 to now encode query string values by + default unless the `rawString` argument is provided when setting the query + string on a URL: Now allowing many more characters to be present in the + query string without being percent encoded. See http://tools.ietf.org/html/rfc3986#appendix-A + +## 5.0.1 - 2014-10-16 + +Bugfix release. + +* Fixed an issue where connection errors still returned response object in + error and end events event though the response is unusable. This has been + corrected so that a response is not returned in the `getResponse` method of + these events if the response did not complete. https://github.com/guzzle/guzzle/issues/867 +* Fixed an issue where transfer statistics were not being populated in the + RingBridge. https://github.com/guzzle/guzzle/issues/866 + +## 5.0.0 - 2014-10-12 + +Adding support for non-blocking responses and some minor API cleanup. + +### New Features + +* Added support for non-blocking responses based on `guzzlehttp/guzzle-ring`. +* Added a public API for creating a default HTTP adapter. +* Updated the redirect plugin to be non-blocking so that redirects are sent + concurrently. Other plugins like this can now be updated to be non-blocking. +* Added a "progress" event so that you can get upload and download progress + events. +* Added `GuzzleHttp\Pool` which implements FutureInterface and transfers + requests concurrently using a capped pool size as efficiently as possible. +* Added `hasListeners()` to EmitterInterface. +* Removed `GuzzleHttp\ClientInterface::sendAll` and marked + `GuzzleHttp\Client::sendAll` as deprecated (it's still there, just not the + recommended way). + +### Breaking changes + +The breaking changes in this release are relatively minor. The biggest thing to +look out for is that request and response objects no longer implement fluent +interfaces. + +* Removed the fluent interfaces (i.e., `return $this`) from requests, + responses, `GuzzleHttp\Collection`, `GuzzleHttp\Url`, + `GuzzleHttp\Query`, `GuzzleHttp\Post\PostBody`, and + `GuzzleHttp\Cookie\SetCookie`. This blog post provides a good outline of + why I did this: http://ocramius.github.io/blog/fluent-interfaces-are-evil/. + This also makes the Guzzle message interfaces compatible with the current + PSR-7 message proposal. +* Removed "functions.php", so that Guzzle is truly PSR-4 compliant. Except + for the HTTP request functions from function.php, these functions are now + implemented in `GuzzleHttp\Utils` using camelCase. `GuzzleHttp\json_decode` + moved to `GuzzleHttp\Utils::jsonDecode`. `GuzzleHttp\get_path` moved to + `GuzzleHttp\Utils::getPath`. `GuzzleHttp\set_path` moved to + `GuzzleHttp\Utils::setPath`. `GuzzleHttp\batch` should now be + `GuzzleHttp\Pool::batch`, which returns an `objectStorage`. Using functions.php + caused problems for many users: they aren't PSR-4 compliant, require an + explicit include, and needed an if-guard to ensure that the functions are not + declared multiple times. +* Rewrote adapter layer. + * Removing all classes from `GuzzleHttp\Adapter`, these are now + implemented as callables that are stored in `GuzzleHttp\Ring\Client`. + * Removed the concept of "parallel adapters". Sending requests serially or + concurrently is now handled using a single adapter. + * Moved `GuzzleHttp\Adapter\Transaction` to `GuzzleHttp\Transaction`. The + Transaction object now exposes the request, response, and client as public + properties. The getters and setters have been removed. +* Removed the "headers" event. This event was only useful for changing the + body a response once the headers of the response were known. You can implement + a similar behavior in a number of ways. One example might be to use a + FnStream that has access to the transaction being sent. For example, when the + first byte is written, you could check if the response headers match your + expectations, and if so, change the actual stream body that is being + written to. +* Removed the `asArray` parameter from + `GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header + value as an array, then use the newly added `getHeaderAsArray()` method of + `MessageInterface`. This change makes the Guzzle interfaces compatible with + the PSR-7 interfaces. +* `GuzzleHttp\Message\MessageFactory` no longer allows subclasses to add + custom request options using double-dispatch (this was an implementation + detail). Instead, you should now provide an associative array to the + constructor which is a mapping of the request option name mapping to a + function that applies the option value to a request. +* Removed the concept of "throwImmediately" from exceptions and error events. + This control mechanism was used to stop a transfer of concurrent requests + from completing. This can now be handled by throwing the exception or by + cancelling a pool of requests or each outstanding future request individually. +* Updated to "GuzzleHttp\Streams" 3.0. + * `GuzzleHttp\Stream\StreamInterface::getContents()` no longer accepts a + `maxLen` parameter. This update makes the Guzzle streams project + compatible with the current PSR-7 proposal. + * `GuzzleHttp\Stream\Stream::__construct`, + `GuzzleHttp\Stream\Stream::factory`, and + `GuzzleHttp\Stream\Utils::create` no longer accept a size in the second + argument. They now accept an associative array of options, including the + "size" key and "metadata" key which can be used to provide custom metadata. + +## 4.2.2 - 2014-09-08 + +* Fixed a memory leak in the CurlAdapter when reusing cURL handles. +* No longer using `request_fulluri` in stream adapter proxies. +* Relative redirects are now based on the last response, not the first response. + +## 4.2.1 - 2014-08-19 + +* Ensuring that the StreamAdapter does not always add a Content-Type header +* Adding automated github releases with a phar and zip + +## 4.2.0 - 2014-08-17 + +* Now merging in default options using a case-insensitive comparison. + Closes https://github.com/guzzle/guzzle/issues/767 +* Added the ability to automatically decode `Content-Encoding` response bodies + using the `decode_content` request option. This is set to `true` by default + to decode the response body if it comes over the wire with a + `Content-Encoding`. Set this value to `false` to disable decoding the + response content, and pass a string to provide a request `Accept-Encoding` + header and turn on automatic response decoding. This feature now allows you + to pass an `Accept-Encoding` header in the headers of a request but still + disable automatic response decoding. + Closes https://github.com/guzzle/guzzle/issues/764 +* Added the ability to throw an exception immediately when transferring + requests in parallel. Closes https://github.com/guzzle/guzzle/issues/760 +* Updating guzzlehttp/streams dependency to ~2.1 +* No longer utilizing the now deprecated namespaced methods from the stream + package. + +## 4.1.8 - 2014-08-14 + +* Fixed an issue in the CurlFactory that caused setting the `stream=false` + request option to throw an exception. + See: https://github.com/guzzle/guzzle/issues/769 +* TransactionIterator now calls rewind on the inner iterator. + See: https://github.com/guzzle/guzzle/pull/765 +* You can now set the `Content-Type` header to `multipart/form-data` + when creating POST requests to force multipart bodies. + See https://github.com/guzzle/guzzle/issues/768 + +## 4.1.7 - 2014-08-07 + +* Fixed an error in the HistoryPlugin that caused the same request and response + to be logged multiple times when an HTTP protocol error occurs. +* Ensuring that cURL does not add a default Content-Type when no Content-Type + has been supplied by the user. This prevents the adapter layer from modifying + the request that is sent over the wire after any listeners may have already + put the request in a desired state (e.g., signed the request). +* Throwing an exception when you attempt to send requests that have the + "stream" set to true in parallel using the MultiAdapter. +* Only calling curl_multi_select when there are active cURL handles. This was + previously changed and caused performance problems on some systems due to PHP + always selecting until the maximum select timeout. +* Fixed a bug where multipart/form-data POST fields were not correctly + aggregated (e.g., values with "&"). + +## 4.1.6 - 2014-08-03 + +* Added helper methods to make it easier to represent messages as strings, + including getting the start line and getting headers as a string. + +## 4.1.5 - 2014-08-02 + +* Automatically retrying cURL "Connection died, retrying a fresh connect" + errors when possible. +* cURL implementation cleanup +* Allowing multiple event subscriber listeners to be registered per event by + passing an array of arrays of listener configuration. + +## 4.1.4 - 2014-07-22 + +* Fixed a bug that caused multi-part POST requests with more than one field to + serialize incorrectly. +* Paths can now be set to "0" +* `ResponseInterface::xml` now accepts a `libxml_options` option and added a + missing default argument that was required when parsing XML response bodies. +* A `save_to` stream is now created lazily, which means that files are not + created on disk unless a request succeeds. + +## 4.1.3 - 2014-07-15 + +* Various fixes to multipart/form-data POST uploads +* Wrapping function.php in an if-statement to ensure Guzzle can be used + globally and in a Composer install +* Fixed an issue with generating and merging in events to an event array +* POST headers are only applied before sending a request to allow you to change + the query aggregator used before uploading +* Added much more robust query string parsing +* Fixed various parsing and normalization issues with URLs +* Fixing an issue where multi-valued headers were not being utilized correctly + in the StreamAdapter + +## 4.1.2 - 2014-06-18 + +* Added support for sending payloads with GET requests + +## 4.1.1 - 2014-06-08 + +* Fixed an issue related to using custom message factory options in subclasses +* Fixed an issue with nested form fields in a multi-part POST +* Fixed an issue with using the `json` request option for POST requests +* Added `ToArrayInterface` to `GuzzleHttp\Cookie\CookieJar` + +## 4.1.0 - 2014-05-27 + +* Added a `json` request option to easily serialize JSON payloads. +* Added a `GuzzleHttp\json_decode()` wrapper to safely parse JSON. +* Added `setPort()` and `getPort()` to `GuzzleHttp\Message\RequestInterface`. +* Added the ability to provide an emitter to a client in the client constructor. +* Added the ability to persist a cookie session using $_SESSION. +* Added a trait that can be used to add event listeners to an iterator. +* Removed request method constants from RequestInterface. +* Fixed warning when invalid request start-lines are received. +* Updated MessageFactory to work with custom request option methods. +* Updated cacert bundle to latest build. + +4.0.2 (2014-04-16) +------------------ + +* Proxy requests using the StreamAdapter now properly use request_fulluri (#632) +* Added the ability to set scalars as POST fields (#628) + +## 4.0.1 - 2014-04-04 + +* The HTTP status code of a response is now set as the exception code of + RequestException objects. +* 303 redirects will now correctly switch from POST to GET requests. +* The default parallel adapter of a client now correctly uses the MultiAdapter. +* HasDataTrait now initializes the internal data array as an empty array so + that the toArray() method always returns an array. + +## 4.0.0 - 2014-03-29 + +* For more information on the 4.0 transition, see: + http://mtdowling.com/blog/2014/03/15/guzzle-4-rc/ +* For information on changes and upgrading, see: + https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40 +* Added `GuzzleHttp\batch()` as a convenience function for sending requests in + parallel without needing to write asynchronous code. +* Restructured how events are added to `GuzzleHttp\ClientInterface::sendAll()`. + You can now pass a callable or an array of associative arrays where each + associative array contains the "fn", "priority", and "once" keys. + +## 4.0.0.rc-2 - 2014-03-25 + +* Removed `getConfig()` and `setConfig()` from clients to avoid confusion + around whether things like base_url, message_factory, etc. should be able to + be retrieved or modified. +* Added `getDefaultOption()` and `setDefaultOption()` to ClientInterface +* functions.php functions were renamed using snake_case to match PHP idioms +* Added support for `HTTP_PROXY`, `HTTPS_PROXY`, and + `GUZZLE_CURL_SELECT_TIMEOUT` environment variables +* Added the ability to specify custom `sendAll()` event priorities +* Added the ability to specify custom stream context options to the stream + adapter. +* Added a functions.php function for `get_path()` and `set_path()` +* CurlAdapter and MultiAdapter now use a callable to generate curl resources +* MockAdapter now properly reads a body and emits a `headers` event +* Updated Url class to check if a scheme and host are set before adding ":" + and "//". This allows empty Url (e.g., "") to be serialized as "". +* Parsing invalid XML no longer emits warnings +* Curl classes now properly throw AdapterExceptions +* Various performance optimizations +* Streams are created with the faster `Stream\create()` function +* Marked deprecation_proxy() as internal +* Test server is now a collection of static methods on a class + +## 4.0.0-rc.1 - 2014-03-15 + +* See https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40 + +## 3.8.1 - 2014-01-28 + +* Bug: Always using GET requests when redirecting from a 303 response +* Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in + `Guzzle\Http\ClientInterface::setSslVerification()` +* Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL +* Bug: The body of a request can now be set to `"0"` +* Sending PHP stream requests no longer forces `HTTP/1.0` +* Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of + each sub-exception +* Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than + clobbering everything). +* Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators) +* Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`. + For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`. +* Now properly escaping the regular expression delimiter when matching Cookie domains. +* Network access is now disabled when loading XML documents + +## 3.8.0 - 2013-12-05 + +* Added the ability to define a POST name for a file +* JSON response parsing now properly walks additionalProperties +* cURL error code 18 is now retried automatically in the BackoffPlugin +* Fixed a cURL error when URLs contain fragments +* Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were + CurlExceptions +* CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e) +* Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS` +* Fixed a bug that was encountered when parsing empty header parameters +* UriTemplate now has a `setRegex()` method to match the docs +* The `debug` request parameter now checks if it is truthy rather than if it exists +* Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin +* Added the ability to combine URLs using strict RFC 3986 compliance +* Command objects can now return the validation errors encountered by the command +* Various fixes to cache revalidation (#437 and 29797e5) +* Various fixes to the AsyncPlugin +* Cleaned up build scripts + +## 3.7.4 - 2013-10-02 + +* Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430) +* Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp + (see https://github.com/aws/aws-sdk-php/issues/147) +* Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots +* Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420) +* Updated the bundled cacert.pem (#419) +* OauthPlugin now supports adding authentication to headers or query string (#425) + +## 3.7.3 - 2013-09-08 + +* Added the ability to get the exception associated with a request/command when using `MultiTransferException` and + `CommandTransferException`. +* Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description +* Schemas are only injected into response models when explicitly configured. +* No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of + an EntityBody. +* Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator. +* Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`. +* Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody() +* Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin +* Bug fix: Visiting XML attributes first before visiting XML children when serializing requests +* Bug fix: Properly parsing headers that contain commas contained in quotes +* Bug fix: mimetype guessing based on a filename is now case-insensitive + +## 3.7.2 - 2013-08-02 + +* Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander + See https://github.com/guzzle/guzzle/issues/371 +* Bug fix: Cookie domains are now matched correctly according to RFC 6265 + See https://github.com/guzzle/guzzle/issues/377 +* Bug fix: GET parameters are now used when calculating an OAuth signature +* Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted +* `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched +* `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input. + See https://github.com/guzzle/guzzle/issues/379 +* Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See + https://github.com/guzzle/guzzle/pull/380 +* cURL multi cleanup and optimizations + +## 3.7.1 - 2013-07-05 + +* Bug fix: Setting default options on a client now works +* Bug fix: Setting options on HEAD requests now works. See #352 +* Bug fix: Moving stream factory before send event to before building the stream. See #353 +* Bug fix: Cookies no longer match on IP addresses per RFC 6265 +* Bug fix: Correctly parsing header parameters that are in `<>` and quotes +* Added `cert` and `ssl_key` as request options +* `Host` header can now diverge from the host part of a URL if the header is set manually +* `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter +* OAuth parameters are only added via the plugin if they aren't already set +* Exceptions are now thrown when a URL cannot be parsed +* Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails +* Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin + +## 3.7.0 - 2013-06-10 + +* See UPGRADING.md for more information on how to upgrade. +* Requests now support the ability to specify an array of $options when creating a request to more easily modify a + request. You can pass a 'request.options' configuration setting to a client to apply default request options to + every request created by a client (e.g. default query string variables, headers, curl options, etc.). +* Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`. + See `Guzzle\Http\StaticClient::mount`. +* Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests + created by a command (e.g. custom headers, query string variables, timeout settings, etc.). +* Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the + headers of a response +* Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key + (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`) +* ServiceBuilders now support storing and retrieving arbitrary data +* CachePlugin can now purge all resources for a given URI +* CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource +* CachePlugin now uses the Vary header to determine if a resource is a cache hit +* `Guzzle\Http\Message\Response` now implements `\Serializable` +* Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters +* `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable +* Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()` +* Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size +* `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message +* Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older + Symfony users can still use the old version of Monolog. +* Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`. + Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`. +* Several performance improvements to `Guzzle\Common\Collection` +* Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`: + createRequest, head, delete, put, patch, post, options, prepareRequest +* Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()` +* Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface` +* Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to + `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a + resource, string, or EntityBody into the $options parameter to specify the download location of the response. +* Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a + default `array()` +* Added `Guzzle\Stream\StreamInterface::isRepeatable` +* Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use + $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or + $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`. +* Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`. +* Removed `Guzzle\Http\ClientInterface::expandTemplate()` +* Removed `Guzzle\Http\ClientInterface::setRequestFactory()` +* Removed `Guzzle\Http\ClientInterface::getCurlMulti()` +* Removed `Guzzle\Http\Message\RequestInterface::canCache` +* Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect` +* Removed `Guzzle\Http\Message\RequestInterface::isRedirect` +* Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods. +* You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting + `Guzzle\Common\Version::$emitWarnings` to true. +* Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use + `$request->getResponseBody()->isRepeatable()` instead. +* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use + `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. +* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use + `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. +* Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead. +* Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead. +* Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated +* Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. + These will work through Guzzle 4.0 +* Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params]. +* Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client. +* Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`. +* Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. +* Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8. +* Marked `Guzzle\Common\Collection::inject()` as deprecated. +* Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');` +* CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a + CacheStorageInterface. These two objects and interface will be removed in a future version. +* Always setting X-cache headers on cached responses +* Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin +* `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface + $request, Response $response);` +* `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);` +* `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);` +* Added `CacheStorageInterface::purge($url)` +* `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin + $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache, + CanCacheStrategyInterface $canCache = null)` +* Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)` + +## 3.6.0 - 2013-05-29 + +* ServiceDescription now implements ToArrayInterface +* Added command.hidden_params to blacklist certain headers from being treated as additionalParameters +* Guzzle can now correctly parse incomplete URLs +* Mixed casing of headers are now forced to be a single consistent casing across all values for that header. +* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution +* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader(). +* Specific header implementations can be created for complex headers. When a message creates a header, it uses a + HeaderFactory which can map specific headers to specific header classes. There is now a Link header and + CacheControl header implementation. +* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate +* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti() +* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in + Guzzle\Http\Curl\RequestMediator +* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string. +* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface +* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders() +* Removed Guzzle\Parser\ParserRegister::get(). Use getParser() +* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser(). +* All response header helper functions return a string rather than mixing Header objects and strings inconsistently +* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle + directly via interfaces +* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist + but are a no-op until removed. +* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a + `Guzzle\Service\Command\ArrayCommandInterface`. +* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response + on a request while the request is still being transferred +* The ability to case-insensitively search for header values +* Guzzle\Http\Message\Header::hasExactHeader +* Guzzle\Http\Message\Header::raw. Use getAll() +* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object + instead. +* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess +* Added the ability to cast Model objects to a string to view debug information. + +## 3.5.0 - 2013-05-13 + +* Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times +* Bug: Better cleanup of one-time events across the board (when an event is meant to fire once, it will now remove + itself from the EventDispatcher) +* Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values +* Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too +* Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a + non-existent key +* Bug: All __call() method arguments are now required (helps with mocking frameworks) +* Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference + to help with refcount based garbage collection of resources created by sending a request +* Deprecating ZF1 cache and log adapters. These will be removed in the next major version. +* Deprecating `Response::getPreviousResponse()` (method signature still exists, but it's deprecated). Use the + HistoryPlugin for a history. +* Added a `responseBody` alias for the `response_body` location +* Refactored internals to no longer rely on Response::getRequest() +* HistoryPlugin can now be cast to a string +* HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests + and responses that are sent over the wire +* Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects + +## 3.4.3 - 2013-04-30 + +* Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response +* Added a check to re-extract the temp cacert bundle from the phar before sending each request + +## 3.4.2 - 2013-04-29 + +* Bug fix: Stream objects now work correctly with "a" and "a+" modes +* Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present +* Bug fix: AsyncPlugin no longer forces HEAD requests +* Bug fix: DateTime timezones are now properly handled when using the service description schema formatter +* Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails +* Setting a response on a request will write to the custom request body from the response body if one is specified +* LogPlugin now writes to php://output when STDERR is undefined +* Added the ability to set multiple POST files for the same key in a single call +* application/x-www-form-urlencoded POSTs now use the utf-8 charset by default +* Added the ability to queue CurlExceptions to the MockPlugin +* Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send) +* Configuration loading now allows remote files + +## 3.4.1 - 2013-04-16 + +* Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti + handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost. +* Exceptions are now properly grouped when sending requests in parallel +* Redirects are now properly aggregated when a multi transaction fails +* Redirects now set the response on the original object even in the event of a failure +* Bug fix: Model names are now properly set even when using $refs +* Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax +* Added support for oauth_callback in OAuth signatures +* Added support for oauth_verifier in OAuth signatures +* Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection + +## 3.4.0 - 2013-04-11 + +* Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289 +* Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289 +* Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263 +* Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264. +* Bug fix: Added `number` type to service descriptions. +* Bug fix: empty parameters are removed from an OAuth signature +* Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header +* Bug fix: Fixed "array to string" error when validating a union of types in a service description +* Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream +* Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin. +* Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs. +* The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections. +* Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if + the Content-Type can be determined based on the entity body or the path of the request. +* Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder. +* Added support for a PSR-3 LogAdapter. +* Added a `command.after_prepare` event +* Added `oauth_callback` parameter to the OauthPlugin +* Added the ability to create a custom stream class when using a stream factory +* Added a CachingEntityBody decorator +* Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized. +* The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar. +* You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies +* POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This + means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use + POST fields or files (the latter is only used when emulating a form POST in the browser). +* Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest + +## 3.3.1 - 2013-03-10 + +* Added the ability to create PHP streaming responses from HTTP requests +* Bug fix: Running any filters when parsing response headers with service descriptions +* Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing +* Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across + response location visitors. +* Bug fix: Removed the possibility of creating configuration files with circular dependencies +* RequestFactory::create() now uses the key of a POST file when setting the POST file name +* Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set + +## 3.3.0 - 2013-03-03 + +* A large number of performance optimizations have been made +* Bug fix: Added 'wb' as a valid write mode for streams +* Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned +* Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()` +* BC: Removed `Guzzle\Http\Utils` class +* BC: Setting a service description on a client will no longer modify the client's command factories. +* BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using + the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io' +* BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to + lowercase +* Operation parameter objects are now lazy loaded internally +* Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses +* Added support for instantiating responseType=class responseClass classes. Classes must implement + `Guzzle\Service\Command\ResponseClassInterface` +* Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These + additional properties also support locations and can be used to parse JSON responses where the outermost part of the + JSON is an array +* Added support for nested renaming of JSON models (rename sentAs to name) +* CachePlugin + * Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error + * Debug headers can now added to cached response in the CachePlugin + +## 3.2.0 - 2013-02-14 + +* CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients. +* URLs with no path no longer contain a "/" by default +* Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url. +* BadResponseException no longer includes the full request and response message +* Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface +* Adding getResponseBody() to Guzzle\Http\Message\RequestInterface +* Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription +* Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list +* xmlEncoding can now be customized for the XML declaration of a XML service description operation +* Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value + aggregation and no longer uses callbacks +* The URL encoding implementation of Guzzle\Http\QueryString can now be customized +* Bug fix: Filters were not always invoked for array service description parameters +* Bug fix: Redirects now use a target response body rather than a temporary response body +* Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded +* Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives + +## 3.1.2 - 2013-01-27 + +* Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the + response body. For example, the XmlVisitor now parses the XML response into an array in the before() method. +* Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent +* CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444) +* Fixed a bug where redirect responses were not chained correctly using getPreviousResponse() +* Setting default headers on a client after setting the user-agent will not erase the user-agent setting + +## 3.1.1 - 2013-01-20 + +* Adding wildcard support to Guzzle\Common\Collection::getPath() +* Adding alias support to ServiceBuilder configs +* Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface + +## 3.1.0 - 2013-01-12 + +* BC: CurlException now extends from RequestException rather than BadResponseException +* BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse() +* Added getData to ServiceDescriptionInterface +* Added context array to RequestInterface::setState() +* Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http +* Bug: Adding required content-type when JSON request visitor adds JSON to a command +* Bug: Fixing the serialization of a service description with custom data +* Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing + an array of successful and failed responses +* Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection +* Added Guzzle\Http\IoEmittingEntityBody +* Moved command filtration from validators to location visitors +* Added `extends` attributes to service description parameters +* Added getModels to ServiceDescriptionInterface + +## 3.0.7 - 2012-12-19 + +* Fixing phar detection when forcing a cacert to system if null or true +* Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()` +* Cleaning up `Guzzle\Common\Collection::inject` method +* Adding a response_body location to service descriptions + +## 3.0.6 - 2012-12-09 + +* CurlMulti performance improvements +* Adding setErrorResponses() to Operation +* composer.json tweaks + +## 3.0.5 - 2012-11-18 + +* Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin +* Bug: Response body can now be a string containing "0" +* Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert +* Bug: QueryString::fromString now properly parses query string parameters that contain equal signs +* Added support for XML attributes in service description responses +* DefaultRequestSerializer now supports array URI parameter values for URI template expansion +* Added better mimetype guessing to requests and post files + +## 3.0.4 - 2012-11-11 + +* Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value +* Bug: Cookies can now be added that have a name, domain, or value set to "0" +* Bug: Using the system cacert bundle when using the Phar +* Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures +* Enhanced cookie jar de-duplication +* Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added +* Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies +* Added the ability to create any sort of hash for a stream rather than just an MD5 hash + +## 3.0.3 - 2012-11-04 + +* Implementing redirects in PHP rather than cURL +* Added PECL URI template extension and using as default parser if available +* Bug: Fixed Content-Length parsing of Response factory +* Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams. +* Adding ToArrayInterface throughout library +* Fixing OauthPlugin to create unique nonce values per request + +## 3.0.2 - 2012-10-25 + +* Magic methods are enabled by default on clients +* Magic methods return the result of a command +* Service clients no longer require a base_url option in the factory +* Bug: Fixed an issue with URI templates where null template variables were being expanded + +## 3.0.1 - 2012-10-22 + +* Models can now be used like regular collection objects by calling filter, map, etc. +* Models no longer require a Parameter structure or initial data in the constructor +* Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator` + +## 3.0.0 - 2012-10-15 + +* Rewrote service description format to be based on Swagger + * Now based on JSON schema + * Added nested input structures and nested response models + * Support for JSON and XML input and output models + * Renamed `commands` to `operations` + * Removed dot class notation + * Removed custom types +* Broke the project into smaller top-level namespaces to be more component friendly +* Removed support for XML configs and descriptions. Use arrays or JSON files. +* Removed the Validation component and Inspector +* Moved all cookie code to Guzzle\Plugin\Cookie +* Magic methods on a Guzzle\Service\Client now return the command un-executed. +* Calling getResult() or getResponse() on a command will lazily execute the command if needed. +* Now shipping with cURL's CA certs and using it by default +* Added previousResponse() method to response objects +* No longer sending Accept and Accept-Encoding headers on every request +* Only sending an Expect header by default when a payload is greater than 1MB +* Added/moved client options: + * curl.blacklist to curl.option.blacklist + * Added ssl.certificate_authority +* Added a Guzzle\Iterator component +* Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin +* Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin) +* Added a more robust caching plugin +* Added setBody to response objects +* Updating LogPlugin to use a more flexible MessageFormatter +* Added a completely revamped build process +* Cleaning up Collection class and removing default values from the get method +* Fixed ZF2 cache adapters + +## 2.8.8 - 2012-10-15 + +* Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did + +## 2.8.7 - 2012-09-30 + +* Bug: Fixed config file aliases for JSON includes +* Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests +* Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload +* Bug: Hardening request and response parsing to account for missing parts +* Bug: Fixed PEAR packaging +* Bug: Fixed Request::getInfo +* Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail +* Adding the ability for the namespace Iterator factory to look in multiple directories +* Added more getters/setters/removers from service descriptions +* Added the ability to remove POST fields from OAuth signatures +* OAuth plugin now supports 2-legged OAuth + +## 2.8.6 - 2012-09-05 + +* Added the ability to modify and build service descriptions +* Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command +* Added a `json` parameter location +* Now allowing dot notation for classes in the CacheAdapterFactory +* Using the union of two arrays rather than an array_merge when extending service builder services and service params +* Ensuring that a service is a string before doing strpos() checks on it when substituting services for references + in service builder config files. +* Services defined in two different config files that include one another will by default replace the previously + defined service, but you can now create services that extend themselves and merge their settings over the previous +* The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like + '_default' with a default JSON configuration file. + +## 2.8.5 - 2012-08-29 + +* Bug: Suppressed empty arrays from URI templates +* Bug: Added the missing $options argument from ServiceDescription::factory to enable caching +* Added support for HTTP responses that do not contain a reason phrase in the start-line +* AbstractCommand commands are now invokable +* Added a way to get the data used when signing an Oauth request before a request is sent + +## 2.8.4 - 2012-08-15 + +* Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin +* Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable. +* Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream +* Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream +* Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5()) +* Added additional response status codes +* Removed SSL information from the default User-Agent header +* DELETE requests can now send an entity body +* Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries +* Added the ability of the MockPlugin to consume mocked request bodies +* LogPlugin now exposes request and response objects in the extras array + +## 2.8.3 - 2012-07-30 + +* Bug: Fixed a case where empty POST requests were sent as GET requests +* Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body +* Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new +* Added multiple inheritance to service description commands +* Added an ApiCommandInterface and added `getParamNames()` and `hasParam()` +* Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything +* Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles + +## 2.8.2 - 2012-07-24 + +* Bug: Query string values set to 0 are no longer dropped from the query string +* Bug: A Collection object is no longer created each time a call is made to `Guzzle\Service\Command\AbstractCommand::getRequestHeaders()` +* Bug: `+` is now treated as an encoded space when parsing query strings +* QueryString and Collection performance improvements +* Allowing dot notation for class paths in filters attribute of a service descriptions + +## 2.8.1 - 2012-07-16 + +* Loosening Event Dispatcher dependency +* POST redirects can now be customized using CURLOPT_POSTREDIR + +## 2.8.0 - 2012-07-15 + +* BC: Guzzle\Http\Query + * Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl) + * Changed isEncodingValues() and isEncodingFields() to isUrlEncoding() + * Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool) + * Changed the aggregation functions of QueryString to be static methods + * Can now use fromString() with querystrings that have a leading ? +* cURL configuration values can be specified in service descriptions using `curl.` prefixed parameters +* Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body +* Cookies are no longer URL decoded by default +* Bug: URI template variables set to null are no longer expanded + +## 2.7.2 - 2012-07-02 + +* BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser. +* BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty() +* CachePlugin now allows for a custom request parameter function to check if a request can be cached +* Bug fix: CachePlugin now only caches GET and HEAD requests by default +* Bug fix: Using header glue when transferring headers over the wire +* Allowing deeply nested arrays for composite variables in URI templates +* Batch divisors can now return iterators or arrays + +## 2.7.1 - 2012-06-26 + +* Minor patch to update version number in UA string +* Updating build process + +## 2.7.0 - 2012-06-25 + +* BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes. +* BC: Removed magic setX methods from commands +* BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method +* Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable. +* Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity) +* Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace +* Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin +* Added the ability to set POST fields and files in a service description +* Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method +* Adding a command.before_prepare event to clients +* Added BatchClosureTransfer and BatchClosureDivisor +* BatchTransferException now includes references to the batch divisor and transfer strategies +* Fixed some tests so that they pass more reliably +* Added Guzzle\Common\Log\ArrayLogAdapter + +## 2.6.6 - 2012-06-10 + +* BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin +* BC: Removing Guzzle\Service\Command\CommandSet +* Adding generic batching system (replaces the batch queue plugin and command set) +* Updating ZF cache and log adapters and now using ZF's composer repository +* Bug: Setting the name of each ApiParam when creating through an ApiCommand +* Adding result_type, result_doc, deprecated, and doc_url to service descriptions +* Bug: Changed the default cookie header casing back to 'Cookie' + +## 2.6.5 - 2012-06-03 + +* BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource() +* BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from +* BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data +* BC: Renaming methods in the CookieJarInterface +* Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations +* Making the default glue for HTTP headers ';' instead of ',' +* Adding a removeValue to Guzzle\Http\Message\Header +* Adding getCookies() to request interface. +* Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber() + +## 2.6.4 - 2012-05-30 + +* BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class. +* BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand +* Bug: Fixing magic method command calls on clients +* Bug: Email constraint only validates strings +* Bug: Aggregate POST fields when POST files are present in curl handle +* Bug: Fixing default User-Agent header +* Bug: Only appending or prepending parameters in commands if they are specified +* Bug: Not requiring response reason phrases or status codes to match a predefined list of codes +* Allowing the use of dot notation for class namespaces when using instance_of constraint +* Added any_match validation constraint +* Added an AsyncPlugin +* Passing request object to the calculateWait method of the ExponentialBackoffPlugin +* Allowing the result of a command object to be changed +* Parsing location and type sub values when instantiating a service description rather than over and over at runtime + +## 2.6.3 - 2012-05-23 + +* [BC] Guzzle\Common\FromConfigInterface no longer requires any config options. +* [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields. +* You can now use an array of data when creating PUT request bodies in the request factory. +* Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable. +* [Http] Adding support for Content-Type in multipart POST uploads per upload +* [Http] Added support for uploading multiple files using the same name (foo[0], foo[1]) +* Adding more POST data operations for easier manipulation of POST data. +* You can now set empty POST fields. +* The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files. +* Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate. +* CS updates + +## 2.6.2 - 2012-05-19 + +* [Http] Better handling of nested scope requests in CurlMulti. Requests are now always prepares in the send() method rather than the addRequest() method. + +## 2.6.1 - 2012-05-19 + +* [BC] Removing 'path' support in service descriptions. Use 'uri'. +* [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache. +* [BC] Removing Guzzle\Common\NullObject. Use https://github.com/mtdowling/NullObject if you need it. +* [BC] Removing Guzzle\Common\XmlElement. +* All commands, both dynamic and concrete, have ApiCommand objects. +* Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits. +* Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored. +* Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible. + +## 2.6.0 - 2012-05-15 + +* [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder +* [BC] Executing a Command returns the result of the command rather than the command +* [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed. +* [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args. +* [BC] Moving ResourceIterator* to Guzzle\Service\Resource +* [BC] Completely refactored ResourceIterators to iterate over a cloned command object +* [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate +* [BC] Guzzle\Guzzle is now deprecated +* Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject +* Adding Guzzle\Version class to give version information about Guzzle +* Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate() +* Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data +* ServiceDescription and ServiceBuilder are now cacheable using similar configs +* Changing the format of XML and JSON service builder configs. Backwards compatible. +* Cleaned up Cookie parsing +* Trimming the default Guzzle User-Agent header +* Adding a setOnComplete() method to Commands that is called when a command completes +* Keeping track of requests that were mocked in the MockPlugin +* Fixed a caching bug in the CacheAdapterFactory +* Inspector objects can be injected into a Command object +* Refactoring a lot of code and tests to be case insensitive when dealing with headers +* Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL +* Adding the ability to set global option overrides to service builder configs +* Adding the ability to include other service builder config files from within XML and JSON files +* Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method. + +## 2.5.0 - 2012-05-08 + +* Major performance improvements +* [BC] Simplifying Guzzle\Common\Collection. Please check to see if you are using features that are now deprecated. +* [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component. +* [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates. Use "{}" +* Added the ability to passed parameters to all requests created by a client +* Added callback functionality to the ExponentialBackoffPlugin +* Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies. +* Rewinding request stream bodies when retrying requests +* Exception is thrown when JSON response body cannot be decoded +* Added configurable magic method calls to clients and commands. This is off by default. +* Fixed a defect that added a hash to every parsed URL part +* Fixed duplicate none generation for OauthPlugin. +* Emitting an event each time a client is generated by a ServiceBuilder +* Using an ApiParams object instead of a Collection for parameters of an ApiCommand +* cache.* request parameters should be renamed to params.cache.* +* Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc.). See CurlHandle. +* Added the ability to disable type validation of service descriptions +* ServiceDescriptions and ServiceBuilders are now Serializable diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/LICENSE b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/LICENSE new file mode 100644 index 00000000..50a177b0 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/README.md b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/README.md new file mode 100644 index 00000000..bcd18b8e --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/README.md @@ -0,0 +1,91 @@ +Guzzle, PHP HTTP client +======================= + +[![Latest Version](https://img.shields.io/github/release/guzzle/guzzle.svg?style=flat-square)](https://github.com/guzzle/guzzle/releases) +[![Build Status](https://img.shields.io/travis/guzzle/guzzle.svg?style=flat-square)](https://travis-ci.org/guzzle/guzzle) +[![Total Downloads](https://img.shields.io/packagist/dt/guzzlehttp/guzzle.svg?style=flat-square)](https://packagist.org/packages/guzzlehttp/guzzle) + +Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and +trivial to integrate with web services. + +- Simple interface for building query strings, POST requests, streaming large + uploads, streaming large downloads, using HTTP cookies, uploading JSON data, + etc... +- Can send both synchronous and asynchronous requests using the same interface. +- Uses PSR-7 interfaces for requests, responses, and streams. This allows you + to utilize other PSR-7 compatible libraries with Guzzle. +- Abstracts away the underlying HTTP transport, allowing you to write + environment and transport agnostic code; i.e., no hard dependency on cURL, + PHP streams, sockets, or non-blocking event loops. +- Middleware system allows you to augment and compose client behavior. + +```php +$client = new \GuzzleHttp\Client(); +$res = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle'); +echo $res->getStatusCode(); +// 200 +echo $res->getHeaderLine('content-type'); +// 'application/json; charset=utf8' +echo $res->getBody(); +// '{"id": 1420053, "name": "guzzle", ...}' + +// Send an asynchronous request. +$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org'); +$promise = $client->sendAsync($request)->then(function ($response) { + echo 'I completed! ' . $response->getBody(); +}); +$promise->wait(); +``` + +## Help and docs + +- [Documentation](http://guzzlephp.org/) +- [Stack Overflow](http://stackoverflow.com/questions/tagged/guzzle) +- [Gitter](https://gitter.im/guzzle/guzzle) + + +## Installing Guzzle + +The recommended way to install Guzzle is through +[Composer](http://getcomposer.org). + +```bash +# Install Composer +curl -sS https://getcomposer.org/installer | php +``` + +Next, run the Composer command to install the latest stable version of Guzzle: + +```bash +php composer.phar require guzzlehttp/guzzle +``` + +After installing, you need to require Composer's autoloader: + +```php +require 'vendor/autoload.php'; +``` + +You can then later update Guzzle using composer: + + ```bash +composer.phar update + ``` + + +## Version Guidance + +| Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version | +|---------|------------|---------------------|--------------|---------------------|---------------------|-------|-------------| +| 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >= 5.3.3 | +| 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >= 5.4 | +| 5.x | Maintained | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >= 5.4 | +| 6.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >= 5.5 | + +[guzzle-3-repo]: https://github.com/guzzle/guzzle3 +[guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x +[guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3 +[guzzle-6-repo]: https://github.com/guzzle/guzzle +[guzzle-3-docs]: http://guzzle3.readthedocs.org/en/latest/ +[guzzle-5-docs]: http://guzzle.readthedocs.org/en/5.3/ +[guzzle-6-docs]: http://guzzle.readthedocs.org/en/latest/ diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/UPGRADING.md b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/UPGRADING.md new file mode 100644 index 00000000..91d1dcc9 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/UPGRADING.md @@ -0,0 +1,1203 @@ +Guzzle Upgrade Guide +==================== + +5.0 to 6.0 +---------- + +Guzzle now uses [PSR-7](http://www.php-fig.org/psr/psr-7/) for HTTP messages. +Due to the fact that these messages are immutable, this prompted a refactoring +of Guzzle to use a middleware based system rather than an event system. Any +HTTP message interaction (e.g., `GuzzleHttp\Message\Request`) need to be +updated to work with the new immutable PSR-7 request and response objects. Any +event listeners or subscribers need to be updated to become middleware +functions that wrap handlers (or are injected into a +`GuzzleHttp\HandlerStack`). + +- Removed `GuzzleHttp\BatchResults` +- Removed `GuzzleHttp\Collection` +- Removed `GuzzleHttp\HasDataTrait` +- Removed `GuzzleHttp\ToArrayInterface` +- The `guzzlehttp/streams` dependency has been removed. Stream functionality + is now present in the `GuzzleHttp\Psr7` namespace provided by the + `guzzlehttp/psr7` package. +- Guzzle no longer uses ReactPHP promises and now uses the + `guzzlehttp/promises` library. We use a custom promise library for three + significant reasons: + 1. React promises (at the time of writing this) are recursive. Promise + chaining and promise resolution will eventually blow the stack. Guzzle + promises are not recursive as they use a sort of trampolining technique. + Note: there has been movement in the React project to modify promises to + no longer utilize recursion. + 2. Guzzle needs to have the ability to synchronously block on a promise to + wait for a result. Guzzle promises allows this functionality (and does + not require the use of recursion). + 3. Because we need to be able to wait on a result, doing so using React + promises requires wrapping react promises with RingPHP futures. This + overhead is no longer needed, reducing stack sizes, reducing complexity, + and improving performance. +- `GuzzleHttp\Mimetypes` has been moved to a function in + `GuzzleHttp\Psr7\mimetype_from_extension` and + `GuzzleHttp\Psr7\mimetype_from_filename`. +- `GuzzleHttp\Query` and `GuzzleHttp\QueryParser` have been removed. Query + strings must now be passed into request objects as strings, or provided to + the `query` request option when creating requests with clients. The `query` + option uses PHP's `http_build_query` to convert an array to a string. If you + need a different serialization technique, you will need to pass the query + string in as a string. There are a couple helper functions that will make + working with query strings easier: `GuzzleHttp\Psr7\parse_query` and + `GuzzleHttp\Psr7\build_query`. +- Guzzle no longer has a dependency on RingPHP. Due to the use of a middleware + system based on PSR-7, using RingPHP and it's middleware system as well adds + more complexity than the benefits it provides. All HTTP handlers that were + present in RingPHP have been modified to work directly with PSR-7 messages + and placed in the `GuzzleHttp\Handler` namespace. This significantly reduces + complexity in Guzzle, removes a dependency, and improves performance. RingPHP + will be maintained for Guzzle 5 support, but will no longer be a part of + Guzzle 6. +- As Guzzle now uses a middleware based systems the event system and RingPHP + integration has been removed. Note: while the event system has been removed, + it is possible to add your own type of event system that is powered by the + middleware system. + - Removed the `Event` namespace. + - Removed the `Subscriber` namespace. + - Removed `Transaction` class + - Removed `RequestFsm` + - Removed `RingBridge` + - `GuzzleHttp\Subscriber\Cookie` is now provided by + `GuzzleHttp\Middleware::cookies` + - `GuzzleHttp\Subscriber\HttpError` is now provided by + `GuzzleHttp\Middleware::httpError` + - `GuzzleHttp\Subscriber\History` is now provided by + `GuzzleHttp\Middleware::history` + - `GuzzleHttp\Subscriber\Mock` is now provided by + `GuzzleHttp\Handler\MockHandler` + - `GuzzleHttp\Subscriber\Prepare` is now provided by + `GuzzleHttp\PrepareBodyMiddleware` + - `GuzzleHttp\Subscriber\Redirect` is now provided by + `GuzzleHttp\RedirectMiddleware` +- Guzzle now uses `Psr\Http\Message\UriInterface` (implements in + `GuzzleHttp\Psr7\Uri`) for URI support. `GuzzleHttp\Url` is now gone. +- Static functions in `GuzzleHttp\Utils` have been moved to namespaced + functions under the `GuzzleHttp` namespace. This requires either a Composer + based autoloader or you to include functions.php. +- `GuzzleHttp\ClientInterface::getDefaultOption` has been renamed to + `GuzzleHttp\ClientInterface::getConfig`. +- `GuzzleHttp\ClientInterface::setDefaultOption` has been removed. +- The `json` and `xml` methods of response objects has been removed. With the + migration to strictly adhering to PSR-7 as the interface for Guzzle messages, + adding methods to message interfaces would actually require Guzzle messages + to extend from PSR-7 messages rather then work with them directly. + +## Migrating to middleware + +The change to PSR-7 unfortunately required significant refactoring to Guzzle +due to the fact that PSR-7 messages are immutable. Guzzle 5 relied on an event +system from plugins. The event system relied on mutability of HTTP messages and +side effects in order to work. With immutable messages, you have to change your +workflow to become more about either returning a value (e.g., functional +middlewares) or setting a value on an object. Guzzle v6 has chosen the +functional middleware approach. + +Instead of using the event system to listen for things like the `before` event, +you now create a stack based middleware function that intercepts a request on +the way in and the promise of the response on the way out. This is a much +simpler and more predictable approach than the event system and works nicely +with PSR-7 middleware. Due to the use of promises, the middleware system is +also asynchronous. + +v5: + +```php +use GuzzleHttp\Event\BeforeEvent; +$client = new GuzzleHttp\Client(); +// Get the emitter and listen to the before event. +$client->getEmitter()->on('before', function (BeforeEvent $e) { + // Guzzle v5 events relied on mutation + $e->getRequest()->setHeader('X-Foo', 'Bar'); +}); +``` + +v6: + +In v6, you can modify the request before it is sent using the `mapRequest` +middleware. The idiomatic way in v6 to modify the request/response lifecycle is +to setup a handler middleware stack up front and inject the handler into a +client. + +```php +use GuzzleHttp\Middleware; +// Create a handler stack that has all of the default middlewares attached +$handler = GuzzleHttp\HandlerStack::create(); +// Push the handler onto the handler stack +$handler->push(Middleware::mapRequest(function (RequestInterface $request) { + // Notice that we have to return a request object + return $request->withHeader('X-Foo', 'Bar'); +})); +// Inject the handler into the client +$client = new GuzzleHttp\Client(['handler' => $handler]); +``` + +## POST Requests + +This version added the [`form_params`](http://guzzle.readthedocs.org/en/latest/request-options.html#form_params) +and `multipart` request options. `form_params` is an associative array of +strings or array of strings and is used to serialize an +`application/x-www-form-urlencoded` POST request. The +[`multipart`](http://guzzle.readthedocs.org/en/latest/request-options.html#multipart) +option is now used to send a multipart/form-data POST request. + +`GuzzleHttp\Post\PostFile` has been removed. Use the `multipart` option to add +POST files to a multipart/form-data request. + +The `body` option no longer accepts an array to send POST requests. Please use +`multipart` or `form_params` instead. + +The `base_url` option has been renamed to `base_uri`. + +4.x to 5.0 +---------- + +## Rewritten Adapter Layer + +Guzzle now uses [RingPHP](http://ringphp.readthedocs.org/en/latest) to send +HTTP requests. The `adapter` option in a `GuzzleHttp\Client` constructor +is still supported, but it has now been renamed to `handler`. Instead of +passing a `GuzzleHttp\Adapter\AdapterInterface`, you must now pass a PHP +`callable` that follows the RingPHP specification. + +## Removed Fluent Interfaces + +[Fluent interfaces were removed](http://ocramius.github.io/blog/fluent-interfaces-are-evil) +from the following classes: + +- `GuzzleHttp\Collection` +- `GuzzleHttp\Url` +- `GuzzleHttp\Query` +- `GuzzleHttp\Post\PostBody` +- `GuzzleHttp\Cookie\SetCookie` + +## Removed functions.php + +Removed "functions.php", so that Guzzle is truly PSR-4 compliant. The following +functions can be used as replacements. + +- `GuzzleHttp\json_decode` -> `GuzzleHttp\Utils::jsonDecode` +- `GuzzleHttp\get_path` -> `GuzzleHttp\Utils::getPath` +- `GuzzleHttp\Utils::setPath` -> `GuzzleHttp\set_path` +- `GuzzleHttp\Pool::batch` -> `GuzzleHttp\batch`. This function is, however, + deprecated in favor of using `GuzzleHttp\Pool::batch()`. + +The "procedural" global client has been removed with no replacement (e.g., +`GuzzleHttp\get()`, `GuzzleHttp\post()`, etc.). Use a `GuzzleHttp\Client` +object as a replacement. + +## `throwImmediately` has been removed + +The concept of "throwImmediately" has been removed from exceptions and error +events. This control mechanism was used to stop a transfer of concurrent +requests from completing. This can now be handled by throwing the exception or +by cancelling a pool of requests or each outstanding future request +individually. + +## headers event has been removed + +Removed the "headers" event. This event was only useful for changing the +body a response once the headers of the response were known. You can implement +a similar behavior in a number of ways. One example might be to use a +FnStream that has access to the transaction being sent. For example, when the +first byte is written, you could check if the response headers match your +expectations, and if so, change the actual stream body that is being +written to. + +## Updates to HTTP Messages + +Removed the `asArray` parameter from +`GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header +value as an array, then use the newly added `getHeaderAsArray()` method of +`MessageInterface`. This change makes the Guzzle interfaces compatible with +the PSR-7 interfaces. + +3.x to 4.0 +---------- + +## Overarching changes: + +- Now requires PHP 5.4 or greater. +- No longer requires cURL to send requests. +- Guzzle no longer wraps every exception it throws. Only exceptions that are + recoverable are now wrapped by Guzzle. +- Various namespaces have been removed or renamed. +- No longer requiring the Symfony EventDispatcher. A custom event dispatcher + based on the Symfony EventDispatcher is + now utilized in `GuzzleHttp\Event\EmitterInterface` (resulting in significant + speed and functionality improvements). + +Changes per Guzzle 3.x namespace are described below. + +## Batch + +The `Guzzle\Batch` namespace has been removed. This is best left to +third-parties to implement on top of Guzzle's core HTTP library. + +## Cache + +The `Guzzle\Cache` namespace has been removed. (Todo: No suitable replacement +has been implemented yet, but hoping to utilize a PSR cache interface). + +## Common + +- Removed all of the wrapped exceptions. It's better to use the standard PHP + library for unrecoverable exceptions. +- `FromConfigInterface` has been removed. +- `Guzzle\Common\Version` has been removed. The VERSION constant can be found + at `GuzzleHttp\ClientInterface::VERSION`. + +### Collection + +- `getAll` has been removed. Use `toArray` to convert a collection to an array. +- `inject` has been removed. +- `keySearch` has been removed. +- `getPath` no longer supports wildcard expressions. Use something better like + JMESPath for this. +- `setPath` now supports appending to an existing array via the `[]` notation. + +### Events + +Guzzle no longer requires Symfony's EventDispatcher component. Guzzle now uses +`GuzzleHttp\Event\Emitter`. + +- `Symfony\Component\EventDispatcher\EventDispatcherInterface` is replaced by + `GuzzleHttp\Event\EmitterInterface`. +- `Symfony\Component\EventDispatcher\EventDispatcher` is replaced by + `GuzzleHttp\Event\Emitter`. +- `Symfony\Component\EventDispatcher\Event` is replaced by + `GuzzleHttp\Event\Event`, and Guzzle now has an EventInterface in + `GuzzleHttp\Event\EventInterface`. +- `AbstractHasDispatcher` has moved to a trait, `HasEmitterTrait`, and + `HasDispatcherInterface` has moved to `HasEmitterInterface`. Retrieving the + event emitter of a request, client, etc. now uses the `getEmitter` method + rather than the `getDispatcher` method. + +#### Emitter + +- Use the `once()` method to add a listener that automatically removes itself + the first time it is invoked. +- Use the `listeners()` method to retrieve a list of event listeners rather than + the `getListeners()` method. +- Use `emit()` instead of `dispatch()` to emit an event from an emitter. +- Use `attach()` instead of `addSubscriber()` and `detach()` instead of + `removeSubscriber()`. + +```php +$mock = new Mock(); +// 3.x +$request->getEventDispatcher()->addSubscriber($mock); +$request->getEventDispatcher()->removeSubscriber($mock); +// 4.x +$request->getEmitter()->attach($mock); +$request->getEmitter()->detach($mock); +``` + +Use the `on()` method to add a listener rather than the `addListener()` method. + +```php +// 3.x +$request->getEventDispatcher()->addListener('foo', function (Event $event) { /* ... */ } ); +// 4.x +$request->getEmitter()->on('foo', function (Event $event, $name) { /* ... */ } ); +``` + +## Http + +### General changes + +- The cacert.pem certificate has been moved to `src/cacert.pem`. +- Added the concept of adapters that are used to transfer requests over the + wire. +- Simplified the event system. +- Sending requests in parallel is still possible, but batching is no longer a + concept of the HTTP layer. Instead, you must use the `complete` and `error` + events to asynchronously manage parallel request transfers. +- `Guzzle\Http\Url` has moved to `GuzzleHttp\Url`. +- `Guzzle\Http\QueryString` has moved to `GuzzleHttp\Query`. +- QueryAggregators have been rewritten so that they are simply callable + functions. +- `GuzzleHttp\StaticClient` has been removed. Use the functions provided in + `functions.php` for an easy to use static client instance. +- Exceptions in `GuzzleHttp\Exception` have been updated to all extend from + `GuzzleHttp\Exception\TransferException`. + +### Client + +Calling methods like `get()`, `post()`, `head()`, etc. no longer create and +return a request, but rather creates a request, sends the request, and returns +the response. + +```php +// 3.0 +$request = $client->get('/'); +$response = $request->send(); + +// 4.0 +$response = $client->get('/'); + +// or, to mirror the previous behavior +$request = $client->createRequest('GET', '/'); +$response = $client->send($request); +``` + +`GuzzleHttp\ClientInterface` has changed. + +- The `send` method no longer accepts more than one request. Use `sendAll` to + send multiple requests in parallel. +- `setUserAgent()` has been removed. Use a default request option instead. You + could, for example, do something like: + `$client->setConfig('defaults/headers/User-Agent', 'Foo/Bar ' . $client::getDefaultUserAgent())`. +- `setSslVerification()` has been removed. Use default request options instead, + like `$client->setConfig('defaults/verify', true)`. + +`GuzzleHttp\Client` has changed. + +- The constructor now accepts only an associative array. You can include a + `base_url` string or array to use a URI template as the base URL of a client. + You can also specify a `defaults` key that is an associative array of default + request options. You can pass an `adapter` to use a custom adapter, + `batch_adapter` to use a custom adapter for sending requests in parallel, or + a `message_factory` to change the factory used to create HTTP requests and + responses. +- The client no longer emits a `client.create_request` event. +- Creating requests with a client no longer automatically utilize a URI + template. You must pass an array into a creational method (e.g., + `createRequest`, `get`, `put`, etc.) in order to expand a URI template. + +### Messages + +Messages no longer have references to their counterparts (i.e., a request no +longer has a reference to it's response, and a response no loger has a +reference to its request). This association is now managed through a +`GuzzleHttp\Adapter\TransactionInterface` object. You can get references to +these transaction objects using request events that are emitted over the +lifecycle of a request. + +#### Requests with a body + +- `GuzzleHttp\Message\EntityEnclosingRequest` and + `GuzzleHttp\Message\EntityEnclosingRequestInterface` have been removed. The + separation between requests that contain a body and requests that do not + contain a body has been removed, and now `GuzzleHttp\Message\RequestInterface` + handles both use cases. +- Any method that previously accepts a `GuzzleHttp\Response` object now accept a + `GuzzleHttp\Message\ResponseInterface`. +- `GuzzleHttp\Message\RequestFactoryInterface` has been renamed to + `GuzzleHttp\Message\MessageFactoryInterface`. This interface is used to create + both requests and responses and is implemented in + `GuzzleHttp\Message\MessageFactory`. +- POST field and file methods have been removed from the request object. You + must now use the methods made available to `GuzzleHttp\Post\PostBodyInterface` + to control the format of a POST body. Requests that are created using a + standard `GuzzleHttp\Message\MessageFactoryInterface` will automatically use + a `GuzzleHttp\Post\PostBody` body if the body was passed as an array or if + the method is POST and no body is provided. + +```php +$request = $client->createRequest('POST', '/'); +$request->getBody()->setField('foo', 'bar'); +$request->getBody()->addFile(new PostFile('file_key', fopen('/path/to/content', 'r'))); +``` + +#### Headers + +- `GuzzleHttp\Message\Header` has been removed. Header values are now simply + represented by an array of values or as a string. Header values are returned + as a string by default when retrieving a header value from a message. You can + pass an optional argument of `true` to retrieve a header value as an array + of strings instead of a single concatenated string. +- `GuzzleHttp\PostFile` and `GuzzleHttp\PostFileInterface` have been moved to + `GuzzleHttp\Post`. This interface has been simplified and now allows the + addition of arbitrary headers. +- Custom headers like `GuzzleHttp\Message\Header\Link` have been removed. Most + of the custom headers are now handled separately in specific + subscribers/plugins, and `GuzzleHttp\Message\HeaderValues::parseParams()` has + been updated to properly handle headers that contain parameters (like the + `Link` header). + +#### Responses + +- `GuzzleHttp\Message\Response::getInfo()` and + `GuzzleHttp\Message\Response::setInfo()` have been removed. Use the event + system to retrieve this type of information. +- `GuzzleHttp\Message\Response::getRawHeaders()` has been removed. +- `GuzzleHttp\Message\Response::getMessage()` has been removed. +- `GuzzleHttp\Message\Response::calculateAge()` and other cache specific + methods have moved to the CacheSubscriber. +- Header specific helper functions like `getContentMd5()` have been removed. + Just use `getHeader('Content-MD5')` instead. +- `GuzzleHttp\Message\Response::setRequest()` and + `GuzzleHttp\Message\Response::getRequest()` have been removed. Use the event + system to work with request and response objects as a transaction. +- `GuzzleHttp\Message\Response::getRedirectCount()` has been removed. Use the + Redirect subscriber instead. +- `GuzzleHttp\Message\Response::isSuccessful()` and other related methods have + been removed. Use `getStatusCode()` instead. + +#### Streaming responses + +Streaming requests can now be created by a client directly, returning a +`GuzzleHttp\Message\ResponseInterface` object that contains a body stream +referencing an open PHP HTTP stream. + +```php +// 3.0 +use Guzzle\Stream\PhpStreamRequestFactory; +$request = $client->get('/'); +$factory = new PhpStreamRequestFactory(); +$stream = $factory->fromRequest($request); +$data = $stream->read(1024); + +// 4.0 +$response = $client->get('/', ['stream' => true]); +// Read some data off of the stream in the response body +$data = $response->getBody()->read(1024); +``` + +#### Redirects + +The `configureRedirects()` method has been removed in favor of a +`allow_redirects` request option. + +```php +// Standard redirects with a default of a max of 5 redirects +$request = $client->createRequest('GET', '/', ['allow_redirects' => true]); + +// Strict redirects with a custom number of redirects +$request = $client->createRequest('GET', '/', [ + 'allow_redirects' => ['max' => 5, 'strict' => true] +]); +``` + +#### EntityBody + +EntityBody interfaces and classes have been removed or moved to +`GuzzleHttp\Stream`. All classes and interfaces that once required +`GuzzleHttp\EntityBodyInterface` now require +`GuzzleHttp\Stream\StreamInterface`. Creating a new body for a request no +longer uses `GuzzleHttp\EntityBody::factory` but now uses +`GuzzleHttp\Stream\Stream::factory` or even better: +`GuzzleHttp\Stream\create()`. + +- `Guzzle\Http\EntityBodyInterface` is now `GuzzleHttp\Stream\StreamInterface` +- `Guzzle\Http\EntityBody` is now `GuzzleHttp\Stream\Stream` +- `Guzzle\Http\CachingEntityBody` is now `GuzzleHttp\Stream\CachingStream` +- `Guzzle\Http\ReadLimitEntityBody` is now `GuzzleHttp\Stream\LimitStream` +- `Guzzle\Http\IoEmittyinEntityBody` has been removed. + +#### Request lifecycle events + +Requests previously submitted a large number of requests. The number of events +emitted over the lifecycle of a request has been significantly reduced to make +it easier to understand how to extend the behavior of a request. All events +emitted during the lifecycle of a request now emit a custom +`GuzzleHttp\Event\EventInterface` object that contains context providing +methods and a way in which to modify the transaction at that specific point in +time (e.g., intercept the request and set a response on the transaction). + +- `request.before_send` has been renamed to `before` and now emits a + `GuzzleHttp\Event\BeforeEvent` +- `request.complete` has been renamed to `complete` and now emits a + `GuzzleHttp\Event\CompleteEvent`. +- `request.sent` has been removed. Use `complete`. +- `request.success` has been removed. Use `complete`. +- `error` is now an event that emits a `GuzzleHttp\Event\ErrorEvent`. +- `request.exception` has been removed. Use `error`. +- `request.receive.status_line` has been removed. +- `curl.callback.progress` has been removed. Use a custom `StreamInterface` to + maintain a status update. +- `curl.callback.write` has been removed. Use a custom `StreamInterface` to + intercept writes. +- `curl.callback.read` has been removed. Use a custom `StreamInterface` to + intercept reads. + +`headers` is a new event that is emitted after the response headers of a +request have been received before the body of the response is downloaded. This +event emits a `GuzzleHttp\Event\HeadersEvent`. + +You can intercept a request and inject a response using the `intercept()` event +of a `GuzzleHttp\Event\BeforeEvent`, `GuzzleHttp\Event\CompleteEvent`, and +`GuzzleHttp\Event\ErrorEvent` event. + +See: http://docs.guzzlephp.org/en/latest/events.html + +## Inflection + +The `Guzzle\Inflection` namespace has been removed. This is not a core concern +of Guzzle. + +## Iterator + +The `Guzzle\Iterator` namespace has been removed. + +- `Guzzle\Iterator\AppendIterator`, `Guzzle\Iterator\ChunkedIterator`, and + `Guzzle\Iterator\MethodProxyIterator` are nice, but not a core requirement of + Guzzle itself. +- `Guzzle\Iterator\FilterIterator` is no longer needed because an equivalent + class is shipped with PHP 5.4. +- `Guzzle\Iterator\MapIterator` is not really needed when using PHP 5.5 because + it's easier to just wrap an iterator in a generator that maps values. + +For a replacement of these iterators, see https://github.com/nikic/iter + +## Log + +The LogPlugin has moved to https://github.com/guzzle/log-subscriber. The +`Guzzle\Log` namespace has been removed. Guzzle now relies on +`Psr\Log\LoggerInterface` for all logging. The MessageFormatter class has been +moved to `GuzzleHttp\Subscriber\Log\Formatter`. + +## Parser + +The `Guzzle\Parser` namespace has been removed. This was previously used to +make it possible to plug in custom parsers for cookies, messages, URI +templates, and URLs; however, this level of complexity is not needed in Guzzle +so it has been removed. + +- Cookie: Cookie parsing logic has been moved to + `GuzzleHttp\Cookie\SetCookie::fromString`. +- Message: Message parsing logic for both requests and responses has been moved + to `GuzzleHttp\Message\MessageFactory::fromMessage`. Message parsing is only + used in debugging or deserializing messages, so it doesn't make sense for + Guzzle as a library to add this level of complexity to parsing messages. +- UriTemplate: URI template parsing has been moved to + `GuzzleHttp\UriTemplate`. The Guzzle library will automatically use the PECL + URI template library if it is installed. +- Url: URL parsing is now performed in `GuzzleHttp\Url::fromString` (previously + it was `Guzzle\Http\Url::factory()`). If custom URL parsing is necessary, + then developers are free to subclass `GuzzleHttp\Url`. + +## Plugin + +The `Guzzle\Plugin` namespace has been renamed to `GuzzleHttp\Subscriber`. +Several plugins are shipping with the core Guzzle library under this namespace. + +- `GuzzleHttp\Subscriber\Cookie`: Replaces the old CookiePlugin. Cookie jar + code has moved to `GuzzleHttp\Cookie`. +- `GuzzleHttp\Subscriber\History`: Replaces the old HistoryPlugin. +- `GuzzleHttp\Subscriber\HttpError`: Throws errors when a bad HTTP response is + received. +- `GuzzleHttp\Subscriber\Mock`: Replaces the old MockPlugin. +- `GuzzleHttp\Subscriber\Prepare`: Prepares the body of a request just before + sending. This subscriber is attached to all requests by default. +- `GuzzleHttp\Subscriber\Redirect`: Replaces the RedirectPlugin. + +The following plugins have been removed (third-parties are free to re-implement +these if needed): + +- `GuzzleHttp\Plugin\Async` has been removed. +- `GuzzleHttp\Plugin\CurlAuth` has been removed. +- `GuzzleHttp\Plugin\ErrorResponse\ErrorResponsePlugin` has been removed. This + functionality should instead be implemented with event listeners that occur + after normal response parsing occurs in the guzzle/command package. + +The following plugins are not part of the core Guzzle package, but are provided +in separate repositories: + +- `Guzzle\Http\Plugin\BackoffPlugin` has been rewritten to be much simpler + to build custom retry policies using simple functions rather than various + chained classes. See: https://github.com/guzzle/retry-subscriber +- `Guzzle\Http\Plugin\Cache\CachePlugin` has moved to + https://github.com/guzzle/cache-subscriber +- `Guzzle\Http\Plugin\Log\LogPlugin` has moved to + https://github.com/guzzle/log-subscriber +- `Guzzle\Http\Plugin\Md5\Md5Plugin` has moved to + https://github.com/guzzle/message-integrity-subscriber +- `Guzzle\Http\Plugin\Mock\MockPlugin` has moved to + `GuzzleHttp\Subscriber\MockSubscriber`. +- `Guzzle\Http\Plugin\Oauth\OauthPlugin` has moved to + https://github.com/guzzle/oauth-subscriber + +## Service + +The service description layer of Guzzle has moved into two separate packages: + +- http://github.com/guzzle/command Provides a high level abstraction over web + services by representing web service operations using commands. +- http://github.com/guzzle/guzzle-services Provides an implementation of + guzzle/command that provides request serialization and response parsing using + Guzzle service descriptions. + +## Stream + +Stream have moved to a separate package available at +https://github.com/guzzle/streams. + +`Guzzle\Stream\StreamInterface` has been given a large update to cleanly take +on the responsibilities of `Guzzle\Http\EntityBody` and +`Guzzle\Http\EntityBodyInterface` now that they have been removed. The number +of methods implemented by the `StreamInterface` has been drastically reduced to +allow developers to more easily extend and decorate stream behavior. + +## Removed methods from StreamInterface + +- `getStream` and `setStream` have been removed to better encapsulate streams. +- `getMetadata` and `setMetadata` have been removed in favor of + `GuzzleHttp\Stream\MetadataStreamInterface`. +- `getWrapper`, `getWrapperData`, `getStreamType`, and `getUri` have all been + removed. This data is accessible when + using streams that implement `GuzzleHttp\Stream\MetadataStreamInterface`. +- `rewind` has been removed. Use `seek(0)` for a similar behavior. + +## Renamed methods + +- `detachStream` has been renamed to `detach`. +- `feof` has been renamed to `eof`. +- `ftell` has been renamed to `tell`. +- `readLine` has moved from an instance method to a static class method of + `GuzzleHttp\Stream\Stream`. + +## Metadata streams + +`GuzzleHttp\Stream\MetadataStreamInterface` has been added to denote streams +that contain additional metadata accessible via `getMetadata()`. +`GuzzleHttp\Stream\StreamInterface::getMetadata` and +`GuzzleHttp\Stream\StreamInterface::setMetadata` have been removed. + +## StreamRequestFactory + +The entire concept of the StreamRequestFactory has been removed. The way this +was used in Guzzle 3 broke the actual interface of sending streaming requests +(instead of getting back a Response, you got a StreamInterface). Streaming +PHP requests are now implemented through the `GuzzleHttp\Adapter\StreamAdapter`. + +3.6 to 3.7 +---------- + +### Deprecations + +- You can now enable E_USER_DEPRECATED warnings to see if you are using any deprecated methods.: + +```php +\Guzzle\Common\Version::$emitWarnings = true; +``` + +The following APIs and options have been marked as deprecated: + +- Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use `$request->getResponseBody()->isRepeatable()` instead. +- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. +- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. +- Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead. +- Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead. +- Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated +- Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client. +- Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8. +- Marked `Guzzle\Common\Collection::inject()` as deprecated. +- Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use + `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` or + `$client->setDefaultOption('auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` + +3.7 introduces `request.options` as a parameter for a client configuration and as an optional argument to all creational +request methods. When paired with a client's configuration settings, these options allow you to specify default settings +for various aspects of a request. Because these options make other previous configuration options redundant, several +configuration options and methods of a client and AbstractCommand have been deprecated. + +- Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use `$client->getDefaultOption('headers')`. +- Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use `$client->setDefaultOption('headers/{header_name}', 'value')`. +- Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use `$client->setDefaultOption('params/{param_name}', 'value')` +- Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0 + + $command = $client->getCommand('foo', array( + 'command.headers' => array('Test' => '123'), + 'command.response_body' => '/path/to/file' + )); + + // Should be changed to: + + $command = $client->getCommand('foo', array( + 'command.request_options' => array( + 'headers' => array('Test' => '123'), + 'save_as' => '/path/to/file' + ) + )); + +### Interface changes + +Additions and changes (you will need to update any implementations or subclasses you may have created): + +- Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`: + createRequest, head, delete, put, patch, post, options, prepareRequest +- Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()` +- Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface` +- Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to + `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a + resource, string, or EntityBody into the $options parameter to specify the download location of the response. +- Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a + default `array()` +- Added `Guzzle\Stream\StreamInterface::isRepeatable` +- Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods. + +The following methods were removed from interfaces. All of these methods are still available in the concrete classes +that implement them, but you should update your code to use alternative methods: + +- Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use + `$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or + `$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))` or + `$client->setDefaultOption('headers/{header_name}', 'value')`. or + `$client->setDefaultOption('headers', array('header_name' => 'value'))`. +- Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use `$client->getConfig()->getPath('request.options/headers')`. +- Removed `Guzzle\Http\ClientInterface::expandTemplate()`. This is an implementation detail. +- Removed `Guzzle\Http\ClientInterface::setRequestFactory()`. This is an implementation detail. +- Removed `Guzzle\Http\ClientInterface::getCurlMulti()`. This is a very specific implementation detail. +- Removed `Guzzle\Http\Message\RequestInterface::canCache`. Use the CachePlugin. +- Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`. Use the HistoryPlugin. +- Removed `Guzzle\Http\Message\RequestInterface::isRedirect`. Use the HistoryPlugin. + +### Cache plugin breaking changes + +- CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a + CacheStorageInterface. These two objects and interface will be removed in a future version. +- Always setting X-cache headers on cached responses +- Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin +- `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface + $request, Response $response);` +- `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);` +- `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);` +- Added `CacheStorageInterface::purge($url)` +- `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin + $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache, + CanCacheStrategyInterface $canCache = null)` +- Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)` + +3.5 to 3.6 +---------- + +* Mixed casing of headers are now forced to be a single consistent casing across all values for that header. +* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution +* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader(). + For example, setHeader() first removes the header using unset on a HeaderCollection and then calls addHeader(). + Keeping the Host header and URL host in sync is now handled by overriding the addHeader method in Request. +* Specific header implementations can be created for complex headers. When a message creates a header, it uses a + HeaderFactory which can map specific headers to specific header classes. There is now a Link header and + CacheControl header implementation. +* Moved getLinks() from Response to just be used on a Link header object. + +If you previously relied on Guzzle\Http\Message\Header::raw(), then you will need to update your code to use the +HeaderInterface (e.g. toArray(), getAll(), etc.). + +### Interface changes + +* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate +* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti() +* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in + Guzzle\Http\Curl\RequestMediator +* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string. +* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface +* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders() + +### Removed deprecated functions + +* Removed Guzzle\Parser\ParserRegister::get(). Use getParser() +* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser(). + +### Deprecations + +* The ability to case-insensitively search for header values +* Guzzle\Http\Message\Header::hasExactHeader +* Guzzle\Http\Message\Header::raw. Use getAll() +* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object + instead. + +### Other changes + +* All response header helper functions return a string rather than mixing Header objects and strings inconsistently +* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle + directly via interfaces +* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist + but are a no-op until removed. +* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a + `Guzzle\Service\Command\ArrayCommandInterface`. +* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response + on a request while the request is still being transferred +* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess + +3.3 to 3.4 +---------- + +Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs. + +3.2 to 3.3 +---------- + +### Response::getEtag() quote stripping removed + +`Guzzle\Http\Message\Response::getEtag()` no longer strips quotes around the ETag response header + +### Removed `Guzzle\Http\Utils` + +The `Guzzle\Http\Utils` class was removed. This class was only used for testing. + +### Stream wrapper and type + +`Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getStreamType()` are no longer converted to lowercase. + +### curl.emit_io became emit_io + +Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the +'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io' + +3.1 to 3.2 +---------- + +### CurlMulti is no longer reused globally + +Before 3.2, the same CurlMulti object was reused globally for each client. This can cause issue where plugins added +to a single client can pollute requests dispatched from other clients. + +If you still wish to reuse the same CurlMulti object with each client, then you can add a listener to the +ServiceBuilder's `service_builder.create_client` event to inject a custom CurlMulti object into each client as it is +created. + +```php +$multi = new Guzzle\Http\Curl\CurlMulti(); +$builder = Guzzle\Service\Builder\ServiceBuilder::factory('/path/to/config.json'); +$builder->addListener('service_builder.create_client', function ($event) use ($multi) { + $event['client']->setCurlMulti($multi); +} +}); +``` + +### No default path + +URLs no longer have a default path value of '/' if no path was specified. + +Before: + +```php +$request = $client->get('http://www.foo.com'); +echo $request->getUrl(); +// >> http://www.foo.com/ +``` + +After: + +```php +$request = $client->get('http://www.foo.com'); +echo $request->getUrl(); +// >> http://www.foo.com +``` + +### Less verbose BadResponseException + +The exception message for `Guzzle\Http\Exception\BadResponseException` no longer contains the full HTTP request and +response information. You can, however, get access to the request and response object by calling `getRequest()` or +`getResponse()` on the exception object. + +### Query parameter aggregation + +Multi-valued query parameters are no longer aggregated using a callback function. `Guzzle\Http\Query` now has a +setAggregator() method that accepts a `Guzzle\Http\QueryAggregator\QueryAggregatorInterface` object. This object is +responsible for handling the aggregation of multi-valued query string variables into a flattened hash. + +2.8 to 3.x +---------- + +### Guzzle\Service\Inspector + +Change `\Guzzle\Service\Inspector::fromConfig` to `\Guzzle\Common\Collection::fromConfig` + +**Before** + +```php +use Guzzle\Service\Inspector; + +class YourClient extends \Guzzle\Service\Client +{ + public static function factory($config = array()) + { + $default = array(); + $required = array('base_url', 'username', 'api_key'); + $config = Inspector::fromConfig($config, $default, $required); + + $client = new self( + $config->get('base_url'), + $config->get('username'), + $config->get('api_key') + ); + $client->setConfig($config); + + $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json')); + + return $client; + } +``` + +**After** + +```php +use Guzzle\Common\Collection; + +class YourClient extends \Guzzle\Service\Client +{ + public static function factory($config = array()) + { + $default = array(); + $required = array('base_url', 'username', 'api_key'); + $config = Collection::fromConfig($config, $default, $required); + + $client = new self( + $config->get('base_url'), + $config->get('username'), + $config->get('api_key') + ); + $client->setConfig($config); + + $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json')); + + return $client; + } +``` + +### Convert XML Service Descriptions to JSON + +**Before** + +```xml + + + + + + Get a list of groups + + + Uses a search query to get a list of groups + + + + Create a group + + + + + Delete a group by ID + + + + + + + Update a group + + + + + + +``` + +**After** + +```json +{ + "name": "Zendesk REST API v2", + "apiVersion": "2012-12-31", + "description":"Provides access to Zendesk views, groups, tickets, ticket fields, and users", + "operations": { + "list_groups": { + "httpMethod":"GET", + "uri": "groups.json", + "summary": "Get a list of groups" + }, + "search_groups":{ + "httpMethod":"GET", + "uri": "search.json?query=\"{query} type:group\"", + "summary": "Uses a search query to get a list of groups", + "parameters":{ + "query":{ + "location": "uri", + "description":"Zendesk Search Query", + "type": "string", + "required": true + } + } + }, + "create_group": { + "httpMethod":"POST", + "uri": "groups.json", + "summary": "Create a group", + "parameters":{ + "data": { + "type": "array", + "location": "body", + "description":"Group JSON", + "filters": "json_encode", + "required": true + }, + "Content-Type":{ + "type": "string", + "location":"header", + "static": "application/json" + } + } + }, + "delete_group": { + "httpMethod":"DELETE", + "uri": "groups/{id}.json", + "summary": "Delete a group", + "parameters":{ + "id":{ + "location": "uri", + "description":"Group to delete by ID", + "type": "integer", + "required": true + } + } + }, + "get_group": { + "httpMethod":"GET", + "uri": "groups/{id}.json", + "summary": "Get a ticket", + "parameters":{ + "id":{ + "location": "uri", + "description":"Group to get by ID", + "type": "integer", + "required": true + } + } + }, + "update_group": { + "httpMethod":"PUT", + "uri": "groups/{id}.json", + "summary": "Update a group", + "parameters":{ + "id": { + "location": "uri", + "description":"Group to update by ID", + "type": "integer", + "required": true + }, + "data": { + "type": "array", + "location": "body", + "description":"Group JSON", + "filters": "json_encode", + "required": true + }, + "Content-Type":{ + "type": "string", + "location":"header", + "static": "application/json" + } + } + } +} +``` + +### Guzzle\Service\Description\ServiceDescription + +Commands are now called Operations + +**Before** + +```php +use Guzzle\Service\Description\ServiceDescription; + +$sd = new ServiceDescription(); +$sd->getCommands(); // @returns ApiCommandInterface[] +$sd->hasCommand($name); +$sd->getCommand($name); // @returns ApiCommandInterface|null +$sd->addCommand($command); // @param ApiCommandInterface $command +``` + +**After** + +```php +use Guzzle\Service\Description\ServiceDescription; + +$sd = new ServiceDescription(); +$sd->getOperations(); // @returns OperationInterface[] +$sd->hasOperation($name); +$sd->getOperation($name); // @returns OperationInterface|null +$sd->addOperation($operation); // @param OperationInterface $operation +``` + +### Guzzle\Common\Inflection\Inflector + +Namespace is now `Guzzle\Inflection\Inflector` + +### Guzzle\Http\Plugin + +Namespace is now `Guzzle\Plugin`. Many other changes occur within this namespace and are detailed in their own sections below. + +### Guzzle\Http\Plugin\LogPlugin and Guzzle\Common\Log + +Now `Guzzle\Plugin\Log\LogPlugin` and `Guzzle\Log` respectively. + +**Before** + +```php +use Guzzle\Common\Log\ClosureLogAdapter; +use Guzzle\Http\Plugin\LogPlugin; + +/** @var \Guzzle\Http\Client */ +$client; + +// $verbosity is an integer indicating desired message verbosity level +$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $verbosity = LogPlugin::LOG_VERBOSE); +``` + +**After** + +```php +use Guzzle\Log\ClosureLogAdapter; +use Guzzle\Log\MessageFormatter; +use Guzzle\Plugin\Log\LogPlugin; + +/** @var \Guzzle\Http\Client */ +$client; + +// $format is a string indicating desired message format -- @see MessageFormatter +$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $format = MessageFormatter::DEBUG_FORMAT); +``` + +### Guzzle\Http\Plugin\CurlAuthPlugin + +Now `Guzzle\Plugin\CurlAuth\CurlAuthPlugin`. + +### Guzzle\Http\Plugin\ExponentialBackoffPlugin + +Now `Guzzle\Plugin\Backoff\BackoffPlugin`, and other changes. + +**Before** + +```php +use Guzzle\Http\Plugin\ExponentialBackoffPlugin; + +$backoffPlugin = new ExponentialBackoffPlugin($maxRetries, array_merge( + ExponentialBackoffPlugin::getDefaultFailureCodes(), array(429) + )); + +$client->addSubscriber($backoffPlugin); +``` + +**After** + +```php +use Guzzle\Plugin\Backoff\BackoffPlugin; +use Guzzle\Plugin\Backoff\HttpBackoffStrategy; + +// Use convenient factory method instead -- see implementation for ideas of what +// you can do with chaining backoff strategies +$backoffPlugin = BackoffPlugin::getExponentialBackoff($maxRetries, array_merge( + HttpBackoffStrategy::getDefaultFailureCodes(), array(429) + )); +$client->addSubscriber($backoffPlugin); +``` + +### Known Issues + +#### [BUG] Accept-Encoding header behavior changed unintentionally. + +(See #217) (Fixed in 09daeb8c666fb44499a0646d655a8ae36456575e) + +In version 2.8 setting the `Accept-Encoding` header would set the CURLOPT_ENCODING option, which permitted cURL to +properly handle gzip/deflate compressed responses from the server. In versions affected by this bug this does not happen. +See issue #217 for a workaround, or use a version containing the fix. diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/composer.json b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/composer.json new file mode 100644 index 00000000..438e1420 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/composer.json @@ -0,0 +1,54 @@ +{ + "name": "guzzlehttp\/guzzle", + "type": "library", + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "framework", + "http", + "rest", + "web service", + "curl", + "client", + "HTTP client" + ], + "homepage": "http:\/\/guzzlephp.org\/", + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https:\/\/github.com\/mtdowling" + } + ], + "require": { + "php": ">=5.5", + "guzzlehttp\/psr7": "^1.4", + "guzzlehttp\/promises": "^1.0" + }, + "require-dev": { + "ext-curl": "*", + "phpunit\/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr\/log": "^1.0" + }, + "autoload": { + "files": [ + "src\/functions_include.php" + ], + "psr-4": { + "_PhpScoper5b87e821469bb\\GuzzleHttp\\": "src\/" + } + }, + "autoload-dev": { + "psr-4": { + "_PhpScoper5b87e821469bb\\GuzzleHttp\\Tests\\": "tests\/" + } + }, + "suggest": { + "psr\/log": "Required for using the Log middleware" + }, + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + } +} \ No newline at end of file diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Client.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Client.php new file mode 100644 index 00000000..d50e43a3 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Client.php @@ -0,0 +1,347 @@ + 'http://www.foo.com/1.0/', + * 'timeout' => 0, + * 'allow_redirects' => false, + * 'proxy' => '192.168.16.1:10' + * ]); + * + * Client configuration settings include the following options: + * + * - handler: (callable) Function that transfers HTTP requests over the + * wire. The function is called with a Psr7\Http\Message\RequestInterface + * and array of transfer options, and must return a + * GuzzleHttp\Promise\PromiseInterface that is fulfilled with a + * Psr7\Http\Message\ResponseInterface on success. "handler" is a + * constructor only option that cannot be overridden in per/request + * options. If no handler is provided, a default handler will be created + * that enables all of the request options below by attaching all of the + * default middleware to the handler. + * - base_uri: (string|UriInterface) Base URI of the client that is merged + * into relative URIs. Can be a string or instance of UriInterface. + * - **: any request option + * + * @param array $config Client configuration settings. + * + * @see \GuzzleHttp\RequestOptions for a list of available request options. + */ + public function __construct(array $config = []) + { + if (!isset($config['handler'])) { + $config['handler'] = \_PhpScoper5b87e821469bb\GuzzleHttp\HandlerStack::create(); + } elseif (!\is_callable($config['handler'])) { + throw new \InvalidArgumentException('handler must be a callable'); + } + // Convert the base_uri to a UriInterface + if (isset($config['base_uri'])) { + $config['base_uri'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\uri_for($config['base_uri']); + } + $this->configureDefaults($config); + } + public function __call($method, $args) + { + if (\count($args) < 1) { + throw new \InvalidArgumentException('Magic request methods require a URI and optional options array'); + } + $uri = $args[0]; + $opts = isset($args[1]) ? $args[1] : []; + return \substr($method, -5) === 'Async' ? $this->requestAsync(\substr($method, 0, -5), $uri, $opts) : $this->request($method, $uri, $opts); + } + public function sendAsync(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options = []) + { + // Merge the base URI into the request URI if needed. + $options = $this->prepareDefaults($options); + return $this->transfer($request->withUri($this->buildUri($request->getUri(), $options), $request->hasHeader('Host')), $options); + } + public function send(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options = []) + { + $options[\_PhpScoper5b87e821469bb\GuzzleHttp\RequestOptions::SYNCHRONOUS] = \true; + return $this->sendAsync($request, $options)->wait(); + } + public function requestAsync($method, $uri = '', array $options = []) + { + $options = $this->prepareDefaults($options); + // Remove request modifying parameter because it can be done up-front. + $headers = isset($options['headers']) ? $options['headers'] : []; + $body = isset($options['body']) ? $options['body'] : null; + $version = isset($options['version']) ? $options['version'] : '1.1'; + // Merge the URI into the base URI. + $uri = $this->buildUri($uri, $options); + if (\is_array($body)) { + $this->invalidBody(); + } + $request = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Request($method, $uri, $headers, $body, $version); + // Remove the option so that they are not doubly-applied. + unset($options['headers'], $options['body'], $options['version']); + return $this->transfer($request, $options); + } + public function request($method, $uri = '', array $options = []) + { + $options[\_PhpScoper5b87e821469bb\GuzzleHttp\RequestOptions::SYNCHRONOUS] = \true; + return $this->requestAsync($method, $uri, $options)->wait(); + } + public function getConfig($option = null) + { + return $option === null ? $this->config : (isset($this->config[$option]) ? $this->config[$option] : null); + } + private function buildUri($uri, array $config) + { + // for BC we accept null which would otherwise fail in uri_for + $uri = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\uri_for($uri === null ? '' : $uri); + if (isset($config['base_uri'])) { + $uri = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::resolve(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\uri_for($config['base_uri']), $uri); + } + return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri; + } + /** + * Configures the default options for a client. + * + * @param array $config + */ + private function configureDefaults(array $config) + { + $defaults = ['allow_redirects' => \_PhpScoper5b87e821469bb\GuzzleHttp\RedirectMiddleware::$defaultSettings, 'http_errors' => \true, 'decode_content' => \true, 'verify' => \true, 'cookies' => \false]; + // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set. + // We can only trust the HTTP_PROXY environment variable in a CLI + // process due to the fact that PHP has no reliable mechanism to + // get environment variables that start with "HTTP_". + if (\php_sapi_name() == 'cli' && \getenv('HTTP_PROXY')) { + $defaults['proxy']['http'] = \getenv('HTTP_PROXY'); + } + if ($proxy = \getenv('HTTPS_PROXY')) { + $defaults['proxy']['https'] = $proxy; + } + if ($noProxy = \getenv('NO_PROXY')) { + $cleanedNoProxy = \str_replace(' ', '', $noProxy); + $defaults['proxy']['no'] = \explode(',', $cleanedNoProxy); + } + $this->config = $config + $defaults; + if (!empty($config['cookies']) && $config['cookies'] === \true) { + $this->config['cookies'] = new \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\CookieJar(); + } + // Add the default user-agent header. + if (!isset($this->config['headers'])) { + $this->config['headers'] = ['User-Agent' => default_user_agent()]; + } else { + // Add the User-Agent header if one was not already set. + foreach (\array_keys($this->config['headers']) as $name) { + if (\strtolower($name) === 'user-agent') { + return; + } + } + $this->config['headers']['User-Agent'] = default_user_agent(); + } + } + /** + * Merges default options into the array. + * + * @param array $options Options to modify by reference + * + * @return array + */ + private function prepareDefaults($options) + { + $defaults = $this->config; + if (!empty($defaults['headers'])) { + // Default headers are only added if they are not present. + $defaults['_conditional'] = $defaults['headers']; + unset($defaults['headers']); + } + // Special handling for headers is required as they are added as + // conditional headers and as headers passed to a request ctor. + if (\array_key_exists('headers', $options)) { + // Allows default headers to be unset. + if ($options['headers'] === null) { + $defaults['_conditional'] = null; + unset($options['headers']); + } elseif (!\is_array($options['headers'])) { + throw new \InvalidArgumentException('headers must be an array'); + } + } + // Shallow merge defaults underneath options. + $result = $options + $defaults; + // Remove null values. + foreach ($result as $k => $v) { + if ($v === null) { + unset($result[$k]); + } + } + return $result; + } + /** + * Transfers the given request and applies request options. + * + * The URI of the request is not modified and the request options are used + * as-is without merging in default options. + * + * @param RequestInterface $request + * @param array $options + * + * @return Promise\PromiseInterface + */ + private function transfer(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + { + // save_to -> sink + if (isset($options['save_to'])) { + $options['sink'] = $options['save_to']; + unset($options['save_to']); + } + // exceptions -> http_errors + if (isset($options['exceptions'])) { + $options['http_errors'] = $options['exceptions']; + unset($options['exceptions']); + } + $request = $this->applyOptions($request, $options); + $handler = $options['handler']; + try { + return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\promise_for($handler($request, $options)); + } catch (\Exception $e) { + return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($e); + } + } + /** + * Applies the array of request options to a request. + * + * @param RequestInterface $request + * @param array $options + * + * @return RequestInterface + */ + private function applyOptions(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array &$options) + { + $modify = ['set_headers' => []]; + if (isset($options['headers'])) { + $modify['set_headers'] = $options['headers']; + unset($options['headers']); + } + if (isset($options['form_params'])) { + if (isset($options['multipart'])) { + throw new \InvalidArgumentException('You cannot use ' . 'form_params and multipart at the same time. Use the ' . 'form_params option if you want to send application/' . 'x-www-form-urlencoded requests, and the multipart ' . 'option to send multipart/form-data requests.'); + } + $options['body'] = \http_build_query($options['form_params'], '', '&'); + unset($options['form_params']); + // Ensure that we don't have the header in different case and set the new value. + $options['_conditional'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); + $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded'; + } + if (isset($options['multipart'])) { + $options['body'] = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\MultipartStream($options['multipart']); + unset($options['multipart']); + } + if (isset($options['json'])) { + $options['body'] = \_PhpScoper5b87e821469bb\GuzzleHttp\json_encode($options['json']); + unset($options['json']); + // Ensure that we don't have the header in different case and set the new value. + $options['_conditional'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); + $options['_conditional']['Content-Type'] = 'application/json'; + } + if (!empty($options['decode_content']) && $options['decode_content'] !== \true) { + // Ensure that we don't have the header in different case and set the new value. + $options['_conditional'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']); + $modify['set_headers']['Accept-Encoding'] = $options['decode_content']; + } + if (isset($options['body'])) { + if (\is_array($options['body'])) { + $this->invalidBody(); + } + $modify['body'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($options['body']); + unset($options['body']); + } + if (!empty($options['auth']) && \is_array($options['auth'])) { + $value = $options['auth']; + $type = isset($value[2]) ? \strtolower($value[2]) : 'basic'; + switch ($type) { + case 'basic': + // Ensure that we don't have the header in different case and set the new value. + $modify['set_headers'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\_caseless_remove(['Authorization'], $modify['set_headers']); + $modify['set_headers']['Authorization'] = 'Basic ' . \base64_encode("{$value[0]}:{$value[1]}"); + break; + case 'digest': + // @todo: Do not rely on curl + $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_DIGEST; + $options['curl'][\CURLOPT_USERPWD] = "{$value[0]}:{$value[1]}"; + break; + case 'ntlm': + $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_NTLM; + $options['curl'][\CURLOPT_USERPWD] = "{$value[0]}:{$value[1]}"; + break; + } + } + if (isset($options['query'])) { + $value = $options['query']; + if (\is_array($value)) { + $value = \http_build_query($value, null, '&', \PHP_QUERY_RFC3986); + } + if (!\is_string($value)) { + throw new \InvalidArgumentException('query must be a string or array'); + } + $modify['query'] = $value; + unset($options['query']); + } + // Ensure that sink is not an invalid value. + if (isset($options['sink'])) { + // TODO: Add more sink validation? + if (\is_bool($options['sink'])) { + throw new \InvalidArgumentException('sink must not be a boolean'); + } + } + $request = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\modify_request($request, $modify); + if ($request->getBody() instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\MultipartStream) { + // Use a multipart/form-data POST if a Content-Type is not set. + // Ensure that we don't have the header in different case and set the new value. + $options['_conditional'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); + $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary=' . $request->getBody()->getBoundary(); + } + // Merge in conditional headers if they are not present. + if (isset($options['_conditional'])) { + // Build up the changes so it's in a single clone of the message. + $modify = []; + foreach ($options['_conditional'] as $k => $v) { + if (!$request->hasHeader($k)) { + $modify['set_headers'][$k] = $v; + } + } + $request = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\modify_request($request, $modify); + // Don't pass this internal value along to middleware/handlers. + unset($options['_conditional']); + } + return $request; + } + private function invalidBody() + { + throw new \InvalidArgumentException('Passing in the "body" request ' . 'option as an array to send a POST request has been deprecated. ' . 'Please use the "form_params" request option to send a ' . 'application/x-www-form-urlencoded request, or the "multipart" ' . 'request option to send a multipart/form-data request.'); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/ClientInterface.php new file mode 100644 index 00000000..e4ed4da0 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/ClientInterface.php @@ -0,0 +1,79 @@ +strictMode = $strictMode; + foreach ($cookieArray as $cookie) { + if (!$cookie instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie) { + $cookie = new \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie($cookie); + } + $this->setCookie($cookie); + } + } + /** + * Create a new Cookie jar from an associative array and domain. + * + * @param array $cookies Cookies to create the jar from + * @param string $domain Domain to set the cookies to + * + * @return self + */ + public static function fromArray(array $cookies, $domain) + { + $cookieJar = new self(); + foreach ($cookies as $name => $value) { + $cookieJar->setCookie(new \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie(['Domain' => $domain, 'Name' => $name, 'Value' => $value, 'Discard' => \true])); + } + return $cookieJar; + } + /** + * @deprecated + */ + public static function getCookieValue($value) + { + return $value; + } + /** + * Evaluate if this cookie should be persisted to storage + * that survives between requests. + * + * @param SetCookie $cookie Being evaluated. + * @param bool $allowSessionCookies If we should persist session cookies + * @return bool + */ + public static function shouldPersist(\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie, $allowSessionCookies = \false) + { + if ($cookie->getExpires() || $allowSessionCookies) { + if (!$cookie->getDiscard()) { + return \true; + } + } + return \false; + } + /** + * Finds and returns the cookie based on the name + * + * @param string $name cookie name to search for + * @return SetCookie|null cookie that was found or null if not found + */ + public function getCookieByName($name) + { + // don't allow a null name + if ($name === null) { + return null; + } + foreach ($this->cookies as $cookie) { + if ($cookie->getName() !== null && \strcasecmp($cookie->getName(), $name) === 0) { + return $cookie; + } + } + } + public function toArray() + { + return \array_map(function (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) { + return $cookie->toArray(); + }, $this->getIterator()->getArrayCopy()); + } + public function clear($domain = null, $path = null, $name = null) + { + if (!$domain) { + $this->cookies = []; + return; + } elseif (!$path) { + $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain) { + return !$cookie->matchesDomain($domain); + }); + } elseif (!$name) { + $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain) { + return !($cookie->matchesPath($path) && $cookie->matchesDomain($domain)); + }); + } else { + $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain, $name) { + return !($cookie->getName() == $name && $cookie->matchesPath($path) && $cookie->matchesDomain($domain)); + }); + } + } + public function clearSessionCookies() + { + $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) { + return !$cookie->getDiscard() && $cookie->getExpires(); + }); + } + public function setCookie(\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) + { + // If the name string is empty (but not 0), ignore the set-cookie + // string entirely. + $name = $cookie->getName(); + if (!$name && $name !== '0') { + return \false; + } + // Only allow cookies with set and valid domain, name, value + $result = $cookie->validate(); + if ($result !== \true) { + if ($this->strictMode) { + throw new \RuntimeException('Invalid cookie: ' . $result); + } else { + $this->removeCookieIfEmpty($cookie); + return \false; + } + } + // Resolve conflicts with previously set cookies + foreach ($this->cookies as $i => $c) { + // Two cookies are identical, when their path, and domain are + // identical. + if ($c->getPath() != $cookie->getPath() || $c->getDomain() != $cookie->getDomain() || $c->getName() != $cookie->getName()) { + continue; + } + // The previously set cookie is a discard cookie and this one is + // not so allow the new cookie to be set + if (!$cookie->getDiscard() && $c->getDiscard()) { + unset($this->cookies[$i]); + continue; + } + // If the new cookie's expiration is further into the future, then + // replace the old cookie + if ($cookie->getExpires() > $c->getExpires()) { + unset($this->cookies[$i]); + continue; + } + // If the value has changed, we better change it + if ($cookie->getValue() !== $c->getValue()) { + unset($this->cookies[$i]); + continue; + } + // The cookie exists, so no need to continue + return \false; + } + $this->cookies[] = $cookie; + return \true; + } + public function count() + { + return \count($this->cookies); + } + public function getIterator() + { + return new \ArrayIterator(\array_values($this->cookies)); + } + public function extractCookies(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) + { + if ($cookieHeader = $response->getHeader('Set-Cookie')) { + foreach ($cookieHeader as $cookie) { + $sc = \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie::fromString($cookie); + if (!$sc->getDomain()) { + $sc->setDomain($request->getUri()->getHost()); + } + if (0 !== \strpos($sc->getPath(), '/')) { + $sc->setPath($this->getCookiePathFromRequest($request)); + } + $this->setCookie($sc); + } + } + } + /** + * Computes cookie path following RFC 6265 section 5.1.4 + * + * @link https://tools.ietf.org/html/rfc6265#section-5.1.4 + * + * @param RequestInterface $request + * @return string + */ + private function getCookiePathFromRequest(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request) + { + $uriPath = $request->getUri()->getPath(); + if ('' === $uriPath) { + return '/'; + } + if (0 !== \strpos($uriPath, '/')) { + return '/'; + } + if ('/' === $uriPath) { + return '/'; + } + if (0 === ($lastSlashPos = \strrpos($uriPath, '/'))) { + return '/'; + } + return \substr($uriPath, 0, $lastSlashPos); + } + public function withCookieHeader(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request) + { + $values = []; + $uri = $request->getUri(); + $scheme = $uri->getScheme(); + $host = $uri->getHost(); + $path = $uri->getPath() ?: '/'; + foreach ($this->cookies as $cookie) { + if ($cookie->matchesPath($path) && $cookie->matchesDomain($host) && !$cookie->isExpired() && (!$cookie->getSecure() || $scheme === 'https')) { + $values[] = $cookie->getName() . '=' . $cookie->getValue(); + } + } + return $values ? $request->withHeader('Cookie', \implode('; ', $values)) : $request; + } + /** + * If a cookie already exists and the server asks to set it again with a + * null value, the cookie must be deleted. + * + * @param SetCookie $cookie + */ + private function removeCookieIfEmpty(\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) + { + $cookieValue = $cookie->getValue(); + if ($cookieValue === null || $cookieValue === '') { + $this->clear($cookie->getDomain(), $cookie->getPath(), $cookie->getName()); + } + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php new file mode 100644 index 00000000..b331d4e8 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php @@ -0,0 +1,76 @@ +filename = $cookieFile; + $this->storeSessionCookies = $storeSessionCookies; + if (\file_exists($cookieFile)) { + $this->load($cookieFile); + } + } + /** + * Saves the file when shutting down + */ + public function __destruct() + { + $this->save($this->filename); + } + /** + * Saves the cookies to a file. + * + * @param string $filename File to save + * @throws \RuntimeException if the file cannot be found or created + */ + public function save($filename) + { + $json = []; + foreach ($this as $cookie) { + /** @var SetCookie $cookie */ + if (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { + $json[] = $cookie->toArray(); + } + } + $jsonStr = \_PhpScoper5b87e821469bb\GuzzleHttp\json_encode($json); + if (\false === \file_put_contents($filename, $jsonStr)) { + throw new \RuntimeException("Unable to save file {$filename}"); + } + } + /** + * Load cookies from a JSON formatted file. + * + * Old cookies are kept unless overwritten by newly loaded ones. + * + * @param string $filename Cookie file to load. + * @throws \RuntimeException if the file cannot be loaded. + */ + public function load($filename) + { + $json = \file_get_contents($filename); + if (\false === $json) { + throw new \RuntimeException("Unable to load file {$filename}"); + } elseif ($json === '') { + return; + } + $data = \_PhpScoper5b87e821469bb\GuzzleHttp\json_decode($json, \true); + if (\is_array($data)) { + foreach (\json_decode($json, \true) as $cookie) { + $this->setCookie(new \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie($cookie)); + } + } elseif (\strlen($data)) { + throw new \RuntimeException("Invalid cookie file: {$filename}"); + } + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php new file mode 100644 index 00000000..906a34e3 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php @@ -0,0 +1,66 @@ +sessionKey = $sessionKey; + $this->storeSessionCookies = $storeSessionCookies; + $this->load(); + } + /** + * Saves cookies to session when shutting down + */ + public function __destruct() + { + $this->save(); + } + /** + * Save cookies to the client session + */ + public function save() + { + $json = []; + foreach ($this as $cookie) { + /** @var SetCookie $cookie */ + if (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { + $json[] = $cookie->toArray(); + } + } + $_SESSION[$this->sessionKey] = \json_encode($json); + } + /** + * Load the contents of the client session into the data array + */ + protected function load() + { + if (!isset($_SESSION[$this->sessionKey])) { + return; + } + $data = \json_decode($_SESSION[$this->sessionKey], \true); + if (\is_array($data)) { + foreach ($data as $cookie) { + $this->setCookie(new \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie($cookie)); + } + } elseif (\strlen($data)) { + throw new \RuntimeException("Invalid cookie data"); + } + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php new file mode 100644 index 00000000..d5798d74 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php @@ -0,0 +1,343 @@ + null, 'Value' => null, 'Domain' => null, 'Path' => '/', 'Max-Age' => null, 'Expires' => null, 'Secure' => \false, 'Discard' => \false, 'HttpOnly' => \false]; + /** @var array Cookie data */ + private $data; + /** + * Create a new SetCookie object from a string + * + * @param string $cookie Set-Cookie header string + * + * @return self + */ + public static function fromString($cookie) + { + // Create the default return array + $data = self::$defaults; + // Explode the cookie string using a series of semicolons + $pieces = \array_filter(\array_map('trim', \explode(';', $cookie))); + // The name of the cookie (first kvp) must exist and include an equal sign. + if (empty($pieces[0]) || !\strpos($pieces[0], '=')) { + return new self($data); + } + // Add the cookie pieces into the parsed data array + foreach ($pieces as $part) { + $cookieParts = \explode('=', $part, 2); + $key = \trim($cookieParts[0]); + $value = isset($cookieParts[1]) ? \trim($cookieParts[1], " \n\r\t\0\v") : \true; + // Only check for non-cookies when cookies have been found + if (empty($data['Name'])) { + $data['Name'] = $key; + $data['Value'] = $value; + } else { + foreach (\array_keys(self::$defaults) as $search) { + if (!\strcasecmp($search, $key)) { + $data[$search] = $value; + continue 2; + } + } + $data[$key] = $value; + } + } + return new self($data); + } + /** + * @param array $data Array of cookie data provided by a Cookie parser + */ + public function __construct(array $data = []) + { + $this->data = \array_replace(self::$defaults, $data); + // Extract the Expires value and turn it into a UNIX timestamp if needed + if (!$this->getExpires() && $this->getMaxAge()) { + // Calculate the Expires date + $this->setExpires(\time() + $this->getMaxAge()); + } elseif ($this->getExpires() && !\is_numeric($this->getExpires())) { + $this->setExpires($this->getExpires()); + } + } + public function __toString() + { + $str = $this->data['Name'] . '=' . $this->data['Value'] . '; '; + foreach ($this->data as $k => $v) { + if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== \false) { + if ($k === 'Expires') { + $str .= 'Expires=' . \gmdate('_PhpScoper5b87e821469bb\\D, d M Y H:i:s \\G\\M\\T', $v) . '; '; + } else { + $str .= ($v === \true ? $k : "{$k}={$v}") . '; '; + } + } + } + return \rtrim($str, '; '); + } + public function toArray() + { + return $this->data; + } + /** + * Get the cookie name + * + * @return string + */ + public function getName() + { + return $this->data['Name']; + } + /** + * Set the cookie name + * + * @param string $name Cookie name + */ + public function setName($name) + { + $this->data['Name'] = $name; + } + /** + * Get the cookie value + * + * @return string + */ + public function getValue() + { + return $this->data['Value']; + } + /** + * Set the cookie value + * + * @param string $value Cookie value + */ + public function setValue($value) + { + $this->data['Value'] = $value; + } + /** + * Get the domain + * + * @return string|null + */ + public function getDomain() + { + return $this->data['Domain']; + } + /** + * Set the domain of the cookie + * + * @param string $domain + */ + public function setDomain($domain) + { + $this->data['Domain'] = $domain; + } + /** + * Get the path + * + * @return string + */ + public function getPath() + { + return $this->data['Path']; + } + /** + * Set the path of the cookie + * + * @param string $path Path of the cookie + */ + public function setPath($path) + { + $this->data['Path'] = $path; + } + /** + * Maximum lifetime of the cookie in seconds + * + * @return int|null + */ + public function getMaxAge() + { + return $this->data['Max-Age']; + } + /** + * Set the max-age of the cookie + * + * @param int $maxAge Max age of the cookie in seconds + */ + public function setMaxAge($maxAge) + { + $this->data['Max-Age'] = $maxAge; + } + /** + * The UNIX timestamp when the cookie Expires + * + * @return mixed + */ + public function getExpires() + { + return $this->data['Expires']; + } + /** + * Set the unix timestamp for which the cookie will expire + * + * @param int $timestamp Unix timestamp + */ + public function setExpires($timestamp) + { + $this->data['Expires'] = \is_numeric($timestamp) ? (int) $timestamp : \strtotime($timestamp); + } + /** + * Get whether or not this is a secure cookie + * + * @return null|bool + */ + public function getSecure() + { + return $this->data['Secure']; + } + /** + * Set whether or not the cookie is secure + * + * @param bool $secure Set to true or false if secure + */ + public function setSecure($secure) + { + $this->data['Secure'] = $secure; + } + /** + * Get whether or not this is a session cookie + * + * @return null|bool + */ + public function getDiscard() + { + return $this->data['Discard']; + } + /** + * Set whether or not this is a session cookie + * + * @param bool $discard Set to true or false if this is a session cookie + */ + public function setDiscard($discard) + { + $this->data['Discard'] = $discard; + } + /** + * Get whether or not this is an HTTP only cookie + * + * @return bool + */ + public function getHttpOnly() + { + return $this->data['HttpOnly']; + } + /** + * Set whether or not this is an HTTP only cookie + * + * @param bool $httpOnly Set to true or false if this is HTTP only + */ + public function setHttpOnly($httpOnly) + { + $this->data['HttpOnly'] = $httpOnly; + } + /** + * Check if the cookie matches a path value. + * + * A request-path path-matches a given cookie-path if at least one of + * the following conditions holds: + * + * - The cookie-path and the request-path are identical. + * - The cookie-path is a prefix of the request-path, and the last + * character of the cookie-path is %x2F ("/"). + * - The cookie-path is a prefix of the request-path, and the first + * character of the request-path that is not included in the cookie- + * path is a %x2F ("/") character. + * + * @param string $requestPath Path to check against + * + * @return bool + */ + public function matchesPath($requestPath) + { + $cookiePath = $this->getPath(); + // Match on exact matches or when path is the default empty "/" + if ($cookiePath === '/' || $cookiePath == $requestPath) { + return \true; + } + // Ensure that the cookie-path is a prefix of the request path. + if (0 !== \strpos($requestPath, $cookiePath)) { + return \false; + } + // Match if the last character of the cookie-path is "/" + if (\substr($cookiePath, -1, 1) === '/') { + return \true; + } + // Match if the first character not included in cookie path is "/" + return \substr($requestPath, \strlen($cookiePath), 1) === '/'; + } + /** + * Check if the cookie matches a domain value + * + * @param string $domain Domain to check against + * + * @return bool + */ + public function matchesDomain($domain) + { + // Remove the leading '.' as per spec in RFC 6265. + // http://tools.ietf.org/html/rfc6265#section-5.2.3 + $cookieDomain = \ltrim($this->getDomain(), '.'); + // Domain not set or exact match. + if (!$cookieDomain || !\strcasecmp($domain, $cookieDomain)) { + return \true; + } + // Matching the subdomain according to RFC 6265. + // http://tools.ietf.org/html/rfc6265#section-5.1.3 + if (\filter_var($domain, \FILTER_VALIDATE_IP)) { + return \false; + } + return (bool) \preg_match('/\\.' . \preg_quote($cookieDomain, '/') . '$/', $domain); + } + /** + * Check if the cookie is expired + * + * @return bool + */ + public function isExpired() + { + return $this->getExpires() !== null && \time() > $this->getExpires(); + } + /** + * Check if the cookie is valid according to RFC 6265 + * + * @return bool|string Returns true if valid or an error message if invalid + */ + public function validate() + { + // Names must not be empty, but can be 0 + $name = $this->getName(); + if (empty($name) && !\is_numeric($name)) { + return 'The cookie name must not be empty'; + } + // Check if any of the invalid characters are present in the cookie name + if (\preg_match('/[\\x00-\\x20\\x22\\x28-\\x29\\x2c\\x2f\\x3a-\\x40\\x5c\\x7b\\x7d\\x7f]/', $name)) { + return 'Cookie name must not contain invalid characters: ASCII ' . 'Control characters (0-31;127), space, tab and the ' . 'following characters: ()<>@,;:\\"/?={}'; + } + // Value must not be empty, but can be 0 + $value = $this->getValue(); + if (empty($value) && !\is_numeric($value)) { + return 'The cookie value must not be empty'; + } + // Domains must not be empty, but can be 0 + // A "0" is not a valid internet domain, but may be used as server name + // in a private network. + $domain = $this->getDomain(); + if (empty($domain) && !\is_numeric($domain)) { + return 'The cookie domain must not be empty'; + } + return \true; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php new file mode 100644 index 00000000..1e80f66d --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php @@ -0,0 +1,19 @@ +getStatusCode() : 0; + parent::__construct($message, $code, $previous); + $this->request = $request; + $this->response = $response; + $this->handlerContext = $handlerContext; + } + /** + * Wrap non-RequestExceptions with a RequestException + * + * @param RequestInterface $request + * @param \Exception $e + * + * @return RequestException + */ + public static function wrapException(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, \Exception $e) + { + return $e instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException ? $e : new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException($e->getMessage(), $request, null, $e); + } + /** + * Factory method to create a new exception with a normalized error message + * + * @param RequestInterface $request Request + * @param ResponseInterface $response Response received + * @param \Exception $previous Previous exception + * @param array $ctx Optional handler context. + * + * @return self + */ + public static function create(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response = null, \Exception $previous = null, array $ctx = []) + { + if (!$response) { + return new self('Error completing request', $request, null, $previous, $ctx); + } + $level = (int) \floor($response->getStatusCode() / 100); + if ($level === 4) { + $label = 'Client error'; + $className = \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ClientException::class; + } elseif ($level === 5) { + $label = 'Server error'; + $className = \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ServerException::class; + } else { + $label = 'Unsuccessful request'; + $className = __CLASS__; + } + $uri = $request->getUri(); + $uri = static::obfuscateUri($uri); + // Client Error: `GET /` resulted in a `404 Not Found` response: + // ... (truncated) + $message = \sprintf('%s: `%s %s` resulted in a `%s %s` response', $label, $request->getMethod(), $uri, $response->getStatusCode(), $response->getReasonPhrase()); + $summary = static::getResponseBodySummary($response); + if ($summary !== null) { + $message .= ":\n{$summary}\n"; + } + return new $className($message, $request, $response, $previous, $ctx); + } + /** + * Get a short summary of the response + * + * Will return `null` if the response is not printable. + * + * @param ResponseInterface $response + * + * @return string|null + */ + public static function getResponseBodySummary(\_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) + { + $body = $response->getBody(); + if (!$body->isSeekable()) { + return null; + } + $size = $body->getSize(); + if ($size === 0) { + return null; + } + $summary = $body->read(120); + $body->rewind(); + if ($size > 120) { + $summary .= ' (truncated...)'; + } + // Matches any printable character, including unicode characters: + // letters, marks, numbers, punctuation, spacing, and separators. + if (\preg_match('/[^\\pL\\pM\\pN\\pP\\pS\\pZ\\n\\r\\t]/', $summary)) { + return null; + } + return $summary; + } + /** + * Obfuscates URI if there is an username and a password present + * + * @param UriInterface $uri + * + * @return UriInterface + */ + private static function obfuscateUri($uri) + { + $userInfo = $uri->getUserInfo(); + if (\false !== ($pos = \strpos($userInfo, ':'))) { + return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***'); + } + return $uri; + } + /** + * Get the request that caused the exception + * + * @return RequestInterface + */ + public function getRequest() + { + return $this->request; + } + /** + * Get the associated response + * + * @return ResponseInterface|null + */ + public function getResponse() + { + return $this->response; + } + /** + * Check if a response was received + * + * @return bool + */ + public function hasResponse() + { + return $this->response !== null; + } + /** + * Get contextual information about the error from the underlying handler. + * + * The contents of this array will vary depending on which handler you are + * using. It may also be just an empty array. Relying on this data will + * couple you to a specific handler, but can give more debug information + * when needed. + * + * @return array + */ + public function getHandlerContext() + { + return $this->handlerContext; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php new file mode 100644 index 00000000..e58ec7d5 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php @@ -0,0 +1,25 @@ +stream = $stream; + $msg = $msg ?: 'Could not seek the stream to position ' . $pos; + parent::__construct($msg); + } + /** + * @return StreamInterface + */ + public function getStream() + { + return $this->stream; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php new file mode 100644 index 00000000..60941fa9 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php @@ -0,0 +1,10 @@ +maxHandles = $maxHandles; + } + public function create(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + { + if (isset($options['curl']['body_as_string'])) { + $options['_body_as_string'] = $options['curl']['body_as_string']; + unset($options['curl']['body_as_string']); + } + $easy = new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle(); + $easy->request = $request; + $easy->options = $options; + $conf = $this->getDefaultConf($easy); + $this->applyMethod($easy, $conf); + $this->applyHandlerOptions($easy, $conf); + $this->applyHeaders($easy, $conf); + unset($conf['_headers']); + // Add handler options from the request configuration options + if (isset($options['curl'])) { + $conf = \array_replace($conf, $options['curl']); + } + $conf[\CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy); + $easy->handle = $this->handles ? \array_pop($this->handles) : \curl_init(); + \curl_setopt_array($easy->handle, $conf); + return $easy; + } + public function release(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy) + { + $resource = $easy->handle; + unset($easy->handle); + if (\count($this->handles) >= $this->maxHandles) { + \curl_close($resource); + } else { + // Remove all callback functions as they can hold onto references + // and are not cleaned up by curl_reset. Using curl_setopt_array + // does not work for some reason, so removing each one + // individually. + \curl_setopt($resource, \CURLOPT_HEADERFUNCTION, null); + \curl_setopt($resource, \CURLOPT_READFUNCTION, null); + \curl_setopt($resource, \CURLOPT_WRITEFUNCTION, null); + \curl_setopt($resource, \CURLOPT_PROGRESSFUNCTION, null); + \curl_reset($resource); + $this->handles[] = $resource; + } + } + /** + * Completes a cURL transaction, either returning a response promise or a + * rejected promise. + * + * @param callable $handler + * @param EasyHandle $easy + * @param CurlFactoryInterface $factory Dictates how the handle is released + * + * @return \GuzzleHttp\Promise\PromiseInterface + */ + public static function finish(callable $handler, \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactoryInterface $factory) + { + if (isset($easy->options['on_stats'])) { + self::invokeStats($easy); + } + if (!$easy->response || $easy->errno) { + return self::finishError($handler, $easy, $factory); + } + // Return the response if it is present and there is no error. + $factory->release($easy); + // Rewind the body of the response if possible. + $body = $easy->response->getBody(); + if ($body->isSeekable()) { + $body->rewind(); + } + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\FulfilledPromise($easy->response); + } + private static function invokeStats(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy) + { + $curlStats = \curl_getinfo($easy->handle); + $stats = new \_PhpScoper5b87e821469bb\GuzzleHttp\TransferStats($easy->request, $easy->response, $curlStats['total_time'], $easy->errno, $curlStats); + \call_user_func($easy->options['on_stats'], $stats); + } + private static function finishError(callable $handler, \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactoryInterface $factory) + { + // Get error information and release the handle to the factory. + $ctx = ['errno' => $easy->errno, 'error' => \curl_error($easy->handle)] + \curl_getinfo($easy->handle); + $factory->release($easy); + // Retry when nothing is present or when curl failed to rewind. + if (empty($easy->options['_err_message']) && (!$easy->errno || $easy->errno == 65)) { + return self::retryFailedRewind($handler, $easy, $ctx); + } + return self::createRejection($easy, $ctx); + } + private static function createRejection(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, array $ctx) + { + static $connectionErrors = [\CURLE_OPERATION_TIMEOUTED => \true, \CURLE_COULDNT_RESOLVE_HOST => \true, \CURLE_COULDNT_CONNECT => \true, \CURLE_SSL_CONNECT_ERROR => \true, \CURLE_GOT_NOTHING => \true]; + // If an exception was encountered during the onHeaders event, then + // return a rejected promise that wraps that exception. + if ($easy->onHeadersException) { + return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for(new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException('An error was encountered during the on_headers event', $easy->request, $easy->response, $easy->onHeadersException, $ctx)); + } + $message = \sprintf('cURL error %s: %s (%s)', $ctx['errno'], $ctx['error'], 'see http://curl.haxx.se/libcurl/c/libcurl-errors.html'); + // Create a connection exception if it was a specific error code. + $error = isset($connectionErrors[$easy->errno]) ? new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ConnectException($message, $easy->request, null, $ctx) : new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException($message, $easy->request, $easy->response, null, $ctx); + return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($error); + } + private function getDefaultConf(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy) + { + $conf = ['_headers' => $easy->request->getHeaders(), \CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(), \CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), \CURLOPT_RETURNTRANSFER => \false, \CURLOPT_HEADER => \false, \CURLOPT_CONNECTTIMEOUT => 150]; + if (\defined('CURLOPT_PROTOCOLS')) { + $conf[\CURLOPT_PROTOCOLS] = \CURLPROTO_HTTP | \CURLPROTO_HTTPS; + } + $version = $easy->request->getProtocolVersion(); + if ($version == 1.1) { + $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1; + } elseif ($version == 2.0) { + $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0; + } else { + $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_0; + } + return $conf; + } + private function applyMethod(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) + { + $body = $easy->request->getBody(); + $size = $body->getSize(); + if ($size === null || $size > 0) { + $this->applyBody($easy->request, $easy->options, $conf); + return; + } + $method = $easy->request->getMethod(); + if ($method === 'PUT' || $method === 'POST') { + // See http://tools.ietf.org/html/rfc7230#section-3.3.2 + if (!$easy->request->hasHeader('Content-Length')) { + $conf[\CURLOPT_HTTPHEADER][] = 'Content-Length: 0'; + } + } elseif ($method === 'HEAD') { + $conf[\CURLOPT_NOBODY] = \true; + unset($conf[\CURLOPT_WRITEFUNCTION], $conf[\CURLOPT_READFUNCTION], $conf[\CURLOPT_FILE], $conf[\CURLOPT_INFILE]); + } + } + private function applyBody(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, array &$conf) + { + $size = $request->hasHeader('Content-Length') ? (int) $request->getHeaderLine('Content-Length') : null; + // Send the body as a string if the size is less than 1MB OR if the + // [curl][body_as_string] request value is set. + if ($size !== null && $size < 1000000 || !empty($options['_body_as_string'])) { + $conf[\CURLOPT_POSTFIELDS] = (string) $request->getBody(); + // Don't duplicate the Content-Length header + $this->removeHeader('Content-Length', $conf); + $this->removeHeader('Transfer-Encoding', $conf); + } else { + $conf[\CURLOPT_UPLOAD] = \true; + if ($size !== null) { + $conf[\CURLOPT_INFILESIZE] = $size; + $this->removeHeader('Content-Length', $conf); + } + $body = $request->getBody(); + if ($body->isSeekable()) { + $body->rewind(); + } + $conf[\CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use($body) { + return $body->read($length); + }; + } + // If the Expect header is not present, prevent curl from adding it + if (!$request->hasHeader('Expect')) { + $conf[\CURLOPT_HTTPHEADER][] = 'Expect:'; + } + // cURL sometimes adds a content-type by default. Prevent this. + if (!$request->hasHeader('Content-Type')) { + $conf[\CURLOPT_HTTPHEADER][] = 'Content-Type:'; + } + } + private function applyHeaders(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) + { + foreach ($conf['_headers'] as $name => $values) { + foreach ($values as $value) { + $value = (string) $value; + if ($value === '') { + // cURL requires a special format for empty headers. + // See https://github.com/guzzle/guzzle/issues/1882 for more details. + $conf[\CURLOPT_HTTPHEADER][] = "{$name};"; + } else { + $conf[\CURLOPT_HTTPHEADER][] = "{$name}: {$value}"; + } + } + } + // Remove the Accept header if one was not set + if (!$easy->request->hasHeader('Accept')) { + $conf[\CURLOPT_HTTPHEADER][] = 'Accept:'; + } + } + /** + * Remove a header from the options array. + * + * @param string $name Case-insensitive header to remove + * @param array $options Array of options to modify + */ + private function removeHeader($name, array &$options) + { + foreach (\array_keys($options['_headers']) as $key) { + if (!\strcasecmp($key, $name)) { + unset($options['_headers'][$key]); + return; + } + } + } + private function applyHandlerOptions(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) + { + $options = $easy->options; + if (isset($options['verify'])) { + if ($options['verify'] === \false) { + unset($conf[\CURLOPT_CAINFO]); + $conf[\CURLOPT_SSL_VERIFYHOST] = 0; + $conf[\CURLOPT_SSL_VERIFYPEER] = \false; + } else { + $conf[\CURLOPT_SSL_VERIFYHOST] = 2; + $conf[\CURLOPT_SSL_VERIFYPEER] = \true; + if (\is_string($options['verify'])) { + // Throw an error if the file/folder/link path is not valid or doesn't exist. + if (!\file_exists($options['verify'])) { + throw new \InvalidArgumentException("SSL CA bundle not found: {$options['verify']}"); + } + // If it's a directory or a link to a directory use CURLOPT_CAPATH. + // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO. + if (\is_dir($options['verify']) || \is_link($options['verify']) && \is_dir(\readlink($options['verify']))) { + $conf[\CURLOPT_CAPATH] = $options['verify']; + } else { + $conf[\CURLOPT_CAINFO] = $options['verify']; + } + } + } + } + if (!empty($options['decode_content'])) { + $accept = $easy->request->getHeaderLine('Accept-Encoding'); + if ($accept) { + $conf[\CURLOPT_ENCODING] = $accept; + } else { + $conf[\CURLOPT_ENCODING] = ''; + // Don't let curl send the header over the wire + $conf[\CURLOPT_HTTPHEADER][] = 'Accept-Encoding:'; + } + } + if (isset($options['sink'])) { + $sink = $options['sink']; + if (!\is_string($sink)) { + $sink = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($sink); + } elseif (!\is_dir(\dirname($sink))) { + // Ensure that the directory exists before failing in curl. + throw new \RuntimeException(\sprintf('Directory %s does not exist for sink value of %s', \dirname($sink), $sink)); + } else { + $sink = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LazyOpenStream($sink, 'w+'); + } + $easy->sink = $sink; + $conf[\CURLOPT_WRITEFUNCTION] = function ($ch, $write) use($sink) { + return $sink->write($write); + }; + } else { + // Use a default temp stream if no sink was set. + $conf[\CURLOPT_FILE] = \fopen('php://temp', 'w+'); + $easy->sink = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($conf[\CURLOPT_FILE]); + } + $timeoutRequiresNoSignal = \false; + if (isset($options['timeout'])) { + $timeoutRequiresNoSignal |= $options['timeout'] < 1; + $conf[\CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000; + } + // CURL default value is CURL_IPRESOLVE_WHATEVER + if (isset($options['force_ip_resolve'])) { + if ('v4' === $options['force_ip_resolve']) { + $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V4; + } elseif ('v6' === $options['force_ip_resolve']) { + $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V6; + } + } + if (isset($options['connect_timeout'])) { + $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1; + $conf[\CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000; + } + if ($timeoutRequiresNoSignal && \strtoupper(\substr(\PHP_OS, 0, 3)) !== 'WIN') { + $conf[\CURLOPT_NOSIGNAL] = \true; + } + if (isset($options['proxy'])) { + if (!\is_array($options['proxy'])) { + $conf[\CURLOPT_PROXY] = $options['proxy']; + } else { + $scheme = $easy->request->getUri()->getScheme(); + if (isset($options['proxy'][$scheme])) { + $host = $easy->request->getUri()->getHost(); + if (!isset($options['proxy']['no']) || !\_PhpScoper5b87e821469bb\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no'])) { + $conf[\CURLOPT_PROXY] = $options['proxy'][$scheme]; + } + } + } + } + if (isset($options['cert'])) { + $cert = $options['cert']; + if (\is_array($cert)) { + $conf[\CURLOPT_SSLCERTPASSWD] = $cert[1]; + $cert = $cert[0]; + } + if (!\file_exists($cert)) { + throw new \InvalidArgumentException("SSL certificate not found: {$cert}"); + } + $conf[\CURLOPT_SSLCERT] = $cert; + } + if (isset($options['ssl_key'])) { + $sslKey = $options['ssl_key']; + if (\is_array($sslKey)) { + $conf[\CURLOPT_SSLKEYPASSWD] = $sslKey[1]; + $sslKey = $sslKey[0]; + } + if (!\file_exists($sslKey)) { + throw new \InvalidArgumentException("SSL private key not found: {$sslKey}"); + } + $conf[\CURLOPT_SSLKEY] = $sslKey; + } + if (isset($options['progress'])) { + $progress = $options['progress']; + if (!\is_callable($progress)) { + throw new \InvalidArgumentException('progress client option must be callable'); + } + $conf[\CURLOPT_NOPROGRESS] = \false; + $conf[\CURLOPT_PROGRESSFUNCTION] = function () use($progress) { + $args = \func_get_args(); + // PHP 5.5 pushed the handle onto the start of the args + if (\is_resource($args[0])) { + \array_shift($args); + } + \call_user_func_array($progress, $args); + }; + } + if (!empty($options['debug'])) { + $conf[\CURLOPT_STDERR] = \_PhpScoper5b87e821469bb\GuzzleHttp\debug_resource($options['debug']); + $conf[\CURLOPT_VERBOSE] = \true; + } + } + /** + * This function ensures that a response was set on a transaction. If one + * was not set, then the request is retried if possible. This error + * typically means you are sending a payload, curl encountered a + * "Connection died, retrying a fresh connect" error, tried to rewind the + * stream, and then encountered a "necessary data rewind wasn't possible" + * error, causing the request to be sent through curl_multi_info_read() + * without an error status. + */ + private static function retryFailedRewind(callable $handler, \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, array $ctx) + { + try { + // Only rewind if the body has been read from. + $body = $easy->request->getBody(); + if ($body->tell() > 0) { + $body->rewind(); + } + } catch (\RuntimeException $e) { + $ctx['error'] = 'The connection unexpectedly failed without ' . 'providing an error. The request would have been retried, ' . 'but attempting to rewind the request body failed. ' . 'Exception: ' . $e; + return self::createRejection($easy, $ctx); + } + // Retry no more than 3 times before giving up. + if (!isset($easy->options['_curl_retries'])) { + $easy->options['_curl_retries'] = 1; + } elseif ($easy->options['_curl_retries'] == 2) { + $ctx['error'] = 'The cURL request was retried 3 times ' . 'and did not succeed. The most likely reason for the failure ' . 'is that cURL was unable to rewind the body of the request ' . 'and subsequent retries resulted in the same error. Turn on ' . 'the debug option to see what went wrong. See ' . 'https://bugs.php.net/bug.php?id=47204 for more information.'; + return self::createRejection($easy, $ctx); + } else { + $easy->options['_curl_retries']++; + } + return $handler($easy->request, $easy->options); + } + private function createHeaderFn(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy) + { + if (isset($easy->options['on_headers'])) { + $onHeaders = $easy->options['on_headers']; + if (!\is_callable($onHeaders)) { + throw new \InvalidArgumentException('on_headers must be callable'); + } + } else { + $onHeaders = null; + } + return function ($ch, $h) use($onHeaders, $easy, &$startingResponse) { + $value = \trim($h); + if ($value === '') { + $startingResponse = \true; + $easy->createResponse(); + if ($onHeaders !== null) { + try { + $onHeaders($easy->response); + } catch (\Exception $e) { + // Associate the exception with the handle and trigger + // a curl header write error by returning 0. + $easy->onHeadersException = $e; + return -1; + } + } + } elseif ($startingResponse) { + $startingResponse = \false; + $easy->headers = [$value]; + } else { + $easy->headers[] = $value; + } + return \strlen($h); + }; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php new file mode 100644 index 00000000..2fe650c3 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php @@ -0,0 +1,26 @@ +factory = isset($options['handle_factory']) ? $options['handle_factory'] : new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactory(3); + } + public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + { + if (isset($options['delay'])) { + \usleep($options['delay'] * 1000); + } + $easy = $this->factory->create($request, $options); + \curl_exec($easy->handle); + $easy->errno = \curl_errno($easy->handle); + return \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactory::finish($this, $easy, $this->factory); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php new file mode 100644 index 00000000..fb3d0fcd --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php @@ -0,0 +1,160 @@ +factory = isset($options['handle_factory']) ? $options['handle_factory'] : new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactory(50); + $this->selectTimeout = isset($options['select_timeout']) ? $options['select_timeout'] : 1; + } + public function __get($name) + { + if ($name === '_mh') { + return $this->_mh = \curl_multi_init(); + } + throw new \BadMethodCallException(); + } + public function __destruct() + { + if (isset($this->_mh)) { + \curl_multi_close($this->_mh); + unset($this->_mh); + } + } + public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + { + $easy = $this->factory->create($request, $options); + $id = (int) $easy->handle; + $promise = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise([$this, 'execute'], function () use($id) { + return $this->cancel($id); + }); + $this->addRequest(['easy' => $easy, 'deferred' => $promise]); + return $promise; + } + /** + * Ticks the curl event loop. + */ + public function tick() + { + // Add any delayed handles if needed. + if ($this->delays) { + $currentTime = \microtime(\true); + foreach ($this->delays as $id => $delay) { + if ($currentTime >= $delay) { + unset($this->delays[$id]); + \curl_multi_add_handle($this->_mh, $this->handles[$id]['easy']->handle); + } + } + } + // Step through the task queue which may add additional requests. + \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\queue()->run(); + if ($this->active && \curl_multi_select($this->_mh, $this->selectTimeout) === -1) { + // Perform a usleep if a select returns -1. + // See: https://bugs.php.net/bug.php?id=61141 + \usleep(250); + } + while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) { + } + $this->processMessages(); + } + /** + * Runs until all outstanding connections have completed. + */ + public function execute() + { + $queue = \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\queue(); + while ($this->handles || !$queue->isEmpty()) { + // If there are no transfers, then sleep for the next delay + if (!$this->active && $this->delays) { + \usleep($this->timeToNext()); + } + $this->tick(); + } + } + private function addRequest(array $entry) + { + $easy = $entry['easy']; + $id = (int) $easy->handle; + $this->handles[$id] = $entry; + if (empty($easy->options['delay'])) { + \curl_multi_add_handle($this->_mh, $easy->handle); + } else { + $this->delays[$id] = \microtime(\true) + $easy->options['delay'] / 1000; + } + } + /** + * Cancels a handle from sending and removes references to it. + * + * @param int $id Handle ID to cancel and remove. + * + * @return bool True on success, false on failure. + */ + private function cancel($id) + { + // Cannot cancel if it has been processed. + if (!isset($this->handles[$id])) { + return \false; + } + $handle = $this->handles[$id]['easy']->handle; + unset($this->delays[$id], $this->handles[$id]); + \curl_multi_remove_handle($this->_mh, $handle); + \curl_close($handle); + return \true; + } + private function processMessages() + { + while ($done = \curl_multi_info_read($this->_mh)) { + $id = (int) $done['handle']; + \curl_multi_remove_handle($this->_mh, $done['handle']); + if (!isset($this->handles[$id])) { + // Probably was cancelled. + continue; + } + $entry = $this->handles[$id]; + unset($this->handles[$id], $this->delays[$id]); + $entry['easy']->errno = $done['result']; + $entry['deferred']->resolve(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactory::finish($this, $entry['easy'], $this->factory)); + } + } + private function timeToNext() + { + $currentTime = \microtime(\true); + $nextTime = \PHP_INT_MAX; + foreach ($this->delays as $time) { + if ($time < $nextTime) { + $nextTime = $time; + } + } + return \max(0, $nextTime - $currentTime) * 1000000; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php new file mode 100644 index 00000000..104c4076 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php @@ -0,0 +1,67 @@ +headers)) { + throw new \RuntimeException('No headers have been received'); + } + // HTTP-version SP status-code SP reason-phrase + $startLine = \explode(' ', \array_shift($this->headers), 3); + $headers = \_PhpScoper5b87e821469bb\GuzzleHttp\headers_from_lines($this->headers); + $normalizedKeys = \_PhpScoper5b87e821469bb\GuzzleHttp\normalize_header_keys($headers); + if (!empty($this->options['decode_content']) && isset($normalizedKeys['content-encoding'])) { + $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']]; + unset($headers[$normalizedKeys['content-encoding']]); + if (isset($normalizedKeys['content-length'])) { + $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']]; + $bodyLength = (int) $this->sink->getSize(); + if ($bodyLength) { + $headers[$normalizedKeys['content-length']] = $bodyLength; + } else { + unset($headers[$normalizedKeys['content-length']]); + } + } + } + // Attach a response to the easy handle with the parsed headers. + $this->response = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Response($startLine[1], $headers, $this->sink, \substr($startLine[0], 5), isset($startLine[2]) ? (string) $startLine[2] : null); + } + public function __get($name) + { + $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: ' . $name; + throw new \BadMethodCallException($msg); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php new file mode 100644 index 00000000..2b594691 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php @@ -0,0 +1,152 @@ +onFulfilled = $onFulfilled; + $this->onRejected = $onRejected; + if ($queue) { + \call_user_func_array([$this, 'append'], $queue); + } + } + public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + { + if (!$this->queue) { + throw new \OutOfBoundsException('Mock queue is empty'); + } + if (isset($options['delay'])) { + \usleep($options['delay'] * 1000); + } + $this->lastRequest = $request; + $this->lastOptions = $options; + $response = \array_shift($this->queue); + if (isset($options['on_headers'])) { + if (!\is_callable($options['on_headers'])) { + throw new \InvalidArgumentException('on_headers must be callable'); + } + try { + $options['on_headers']($response); + } catch (\Exception $e) { + $msg = 'An error was encountered during the on_headers event'; + $response = new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException($msg, $request, $response, $e); + } + } + if (\is_callable($response)) { + $response = \call_user_func($response, $request, $options); + } + $response = $response instanceof \Exception ? \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($response) : \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\promise_for($response); + return $response->then(function ($value) use($request, $options) { + $this->invokeStats($request, $options, $value); + if ($this->onFulfilled) { + \call_user_func($this->onFulfilled, $value); + } + if (isset($options['sink'])) { + $contents = (string) $value->getBody(); + $sink = $options['sink']; + if (\is_resource($sink)) { + \fwrite($sink, $contents); + } elseif (\is_string($sink)) { + \file_put_contents($sink, $contents); + } elseif ($sink instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface) { + $sink->write($contents); + } + } + return $value; + }, function ($reason) use($request, $options) { + $this->invokeStats($request, $options, null, $reason); + if ($this->onRejected) { + \call_user_func($this->onRejected, $reason); + } + return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($reason); + }); + } + /** + * Adds one or more variadic requests, exceptions, callables, or promises + * to the queue. + */ + public function append() + { + foreach (\func_get_args() as $value) { + if ($value instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface || $value instanceof \Exception || $value instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface || \is_callable($value)) { + $this->queue[] = $value; + } else { + throw new \InvalidArgumentException('Expected a response or ' . 'exception. Found ' . \_PhpScoper5b87e821469bb\GuzzleHttp\describe_type($value)); + } + } + } + /** + * Get the last received request. + * + * @return RequestInterface + */ + public function getLastRequest() + { + return $this->lastRequest; + } + /** + * Get the last received request options. + * + * @return array + */ + public function getLastOptions() + { + return $this->lastOptions; + } + /** + * Returns the number of remaining items in the queue. + * + * @return int + */ + public function count() + { + return \count($this->queue); + } + private function invokeStats(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response = null, $reason = null) + { + if (isset($options['on_stats'])) { + $stats = new \_PhpScoper5b87e821469bb\GuzzleHttp\TransferStats($request, $response, 0, $reason); + \call_user_func($options['on_stats'], $stats); + } + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php new file mode 100644 index 00000000..5b17d023 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php @@ -0,0 +1,46 @@ +withoutHeader('Expect'); + // Append a content-length header if body size is zero to match + // cURL's behavior. + if (0 === $request->getBody()->getSize()) { + $request = $request->withHeader('Content-Length', 0); + } + return $this->createResponse($request, $options, $this->createStream($request, $options), $startTime); + } catch (\InvalidArgumentException $e) { + throw $e; + } catch (\Exception $e) { + // Determine if the error was a networking error. + $message = $e->getMessage(); + // This list can probably get more comprehensive. + if (\strpos($message, 'getaddrinfo') || \strpos($message, 'Connection refused') || \strpos($message, "couldn't connect to host") || \strpos($message, "connection attempt failed")) { + $e = new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ConnectException($e->getMessage(), $request, $e); + } + $e = \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException::wrapException($request, $e); + $this->invokeStats($options, $request, $startTime, null, $e); + return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($e); + } + } + private function invokeStats(array $options, \_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, $startTime, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response = null, $error = null) + { + if (isset($options['on_stats'])) { + $stats = new \_PhpScoper5b87e821469bb\GuzzleHttp\TransferStats($request, $response, \microtime(\true) - $startTime, $error, []); + \call_user_func($options['on_stats'], $stats); + } + } + private function createResponse(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, $stream, $startTime) + { + $hdrs = $this->lastHeaders; + $this->lastHeaders = []; + $parts = \explode(' ', \array_shift($hdrs), 3); + $ver = \explode('/', $parts[0])[1]; + $status = $parts[1]; + $reason = isset($parts[2]) ? $parts[2] : null; + $headers = \_PhpScoper5b87e821469bb\GuzzleHttp\headers_from_lines($hdrs); + list($stream, $headers) = $this->checkDecode($options, $headers, $stream); + $stream = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($stream); + $sink = $stream; + if (\strcasecmp('HEAD', $request->getMethod())) { + $sink = $this->createSink($stream, $options); + } + $response = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Response($status, $headers, $sink, $ver, $reason); + if (isset($options['on_headers'])) { + try { + $options['on_headers']($response); + } catch (\Exception $e) { + $msg = 'An error was encountered during the on_headers event'; + $ex = new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException($msg, $request, $response, $e); + return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($ex); + } + } + // Do not drain when the request is a HEAD request because they have + // no body. + if ($sink !== $stream) { + $this->drain($stream, $sink, $response->getHeaderLine('Content-Length')); + } + $this->invokeStats($options, $request, $startTime, $response, null); + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\FulfilledPromise($response); + } + private function createSink(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, array $options) + { + if (!empty($options['stream'])) { + return $stream; + } + $sink = isset($options['sink']) ? $options['sink'] : \fopen('php://temp', 'r+'); + return \is_string($sink) ? new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LazyOpenStream($sink, 'w+') : \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($sink); + } + private function checkDecode(array $options, array $headers, $stream) + { + // Automatically decode responses when instructed. + if (!empty($options['decode_content'])) { + $normalizedKeys = \_PhpScoper5b87e821469bb\GuzzleHttp\normalize_header_keys($headers); + if (isset($normalizedKeys['content-encoding'])) { + $encoding = $headers[$normalizedKeys['content-encoding']]; + if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') { + $stream = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\InflateStream(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($stream)); + $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']]; + // Remove content-encoding header + unset($headers[$normalizedKeys['content-encoding']]); + // Fix content-length header + if (isset($normalizedKeys['content-length'])) { + $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']]; + $length = (int) $stream->getSize(); + if ($length === 0) { + unset($headers[$normalizedKeys['content-length']]); + } else { + $headers[$normalizedKeys['content-length']] = [$length]; + } + } + } + } + } + return [$stream, $headers]; + } + /** + * Drains the source stream into the "sink" client option. + * + * @param StreamInterface $source + * @param StreamInterface $sink + * @param string $contentLength Header specifying the amount of + * data to read. + * + * @return StreamInterface + * @throws \RuntimeException when the sink option is invalid. + */ + private function drain(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $source, \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $sink, $contentLength) + { + // If a content-length header is provided, then stop reading once + // that number of bytes has been read. This can prevent infinitely + // reading from a stream when dealing with servers that do not honor + // Connection: Close headers. + \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\copy_to_stream($source, $sink, \strlen($contentLength) > 0 && (int) $contentLength > 0 ? (int) $contentLength : -1); + $sink->seek(0); + $source->close(); + return $sink; + } + /** + * Create a resource and check to ensure it was created successfully + * + * @param callable $callback Callable that returns stream resource + * + * @return resource + * @throws \RuntimeException on error + */ + private function createResource(callable $callback) + { + $errors = null; + \set_error_handler(function ($_, $msg, $file, $line) use(&$errors) { + $errors[] = ['message' => $msg, 'file' => $file, 'line' => $line]; + return \true; + }); + $resource = $callback(); + \restore_error_handler(); + if (!$resource) { + $message = 'Error creating resource: '; + foreach ($errors as $err) { + foreach ($err as $key => $value) { + $message .= "[{$key}] {$value}" . \PHP_EOL; + } + } + throw new \RuntimeException(\trim($message)); + } + return $resource; + } + private function createStream(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + { + static $methods; + if (!$methods) { + $methods = \array_flip(\get_class_methods(__CLASS__)); + } + // HTTP/1.1 streams using the PHP stream wrapper require a + // Connection: close header + if ($request->getProtocolVersion() == '1.1' && !$request->hasHeader('Connection')) { + $request = $request->withHeader('Connection', 'close'); + } + // Ensure SSL is verified by default + if (!isset($options['verify'])) { + $options['verify'] = \true; + } + $params = []; + $context = $this->getDefaultContext($request); + if (isset($options['on_headers']) && !\is_callable($options['on_headers'])) { + throw new \InvalidArgumentException('on_headers must be callable'); + } + if (!empty($options)) { + foreach ($options as $key => $value) { + $method = "add_{$key}"; + if (isset($methods[$method])) { + $this->{$method}($request, $context, $value, $params); + } + } + } + if (isset($options['stream_context'])) { + if (!\is_array($options['stream_context'])) { + throw new \InvalidArgumentException('stream_context must be an array'); + } + $context = \array_replace_recursive($context, $options['stream_context']); + } + // Microsoft NTLM authentication only supported with curl handler + if (isset($options['auth']) && \is_array($options['auth']) && isset($options['auth'][2]) && 'ntlm' == $options['auth'][2]) { + throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler'); + } + $uri = $this->resolveHost($request, $options); + $context = $this->createResource(function () use($context, $params) { + return \stream_context_create($context, $params); + }); + return $this->createResource(function () use($uri, &$http_response_header, $context, $options) { + $resource = \fopen((string) $uri, 'r', null, $context); + $this->lastHeaders = $http_response_header; + if (isset($options['read_timeout'])) { + $readTimeout = $options['read_timeout']; + $sec = (int) $readTimeout; + $usec = ($readTimeout - $sec) * 100000; + \stream_set_timeout($resource, $sec, $usec); + } + return $resource; + }); + } + private function resolveHost(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + { + $uri = $request->getUri(); + if (isset($options['force_ip_resolve']) && !\filter_var($uri->getHost(), \FILTER_VALIDATE_IP)) { + if ('v4' === $options['force_ip_resolve']) { + $records = \dns_get_record($uri->getHost(), \DNS_A); + if (!isset($records[0]['ip'])) { + throw new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ConnectException(\sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request); + } + $uri = $uri->withHost($records[0]['ip']); + } elseif ('v6' === $options['force_ip_resolve']) { + $records = \dns_get_record($uri->getHost(), \DNS_AAAA); + if (!isset($records[0]['ipv6'])) { + throw new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ConnectException(\sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request); + } + $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']'); + } + } + return $uri; + } + private function getDefaultContext(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request) + { + $headers = ''; + foreach ($request->getHeaders() as $name => $value) { + foreach ($value as $val) { + $headers .= "{$name}: {$val}\r\n"; + } + } + $context = ['http' => ['method' => $request->getMethod(), 'header' => $headers, 'protocol_version' => $request->getProtocolVersion(), 'ignore_errors' => \true, 'follow_location' => 0]]; + $body = (string) $request->getBody(); + if (!empty($body)) { + $context['http']['content'] = $body; + // Prevent the HTTP handler from adding a Content-Type header. + if (!$request->hasHeader('Content-Type')) { + $context['http']['header'] .= "Content-Type:\r\n"; + } + } + $context['http']['header'] = \rtrim($context['http']['header']); + return $context; + } + private function add_proxy(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + { + if (!\is_array($value)) { + $options['http']['proxy'] = $value; + } else { + $scheme = $request->getUri()->getScheme(); + if (isset($value[$scheme])) { + if (!isset($value['no']) || !\_PhpScoper5b87e821469bb\GuzzleHttp\is_host_in_noproxy($request->getUri()->getHost(), $value['no'])) { + $options['http']['proxy'] = $value[$scheme]; + } + } + } + } + private function add_timeout(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + { + if ($value > 0) { + $options['http']['timeout'] = $value; + } + } + private function add_verify(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + { + if ($value === \true) { + // PHP 5.6 or greater will find the system cert by default. When + // < 5.6, use the Guzzle bundled cacert. + if (\PHP_VERSION_ID < 50600) { + $options['ssl']['cafile'] = \_PhpScoper5b87e821469bb\GuzzleHttp\default_ca_bundle(); + } + } elseif (\is_string($value)) { + $options['ssl']['cafile'] = $value; + if (!\file_exists($value)) { + throw new \RuntimeException("SSL CA bundle not found: {$value}"); + } + } elseif ($value === \false) { + $options['ssl']['verify_peer'] = \false; + $options['ssl']['verify_peer_name'] = \false; + return; + } else { + throw new \InvalidArgumentException('Invalid verify request option'); + } + $options['ssl']['verify_peer'] = \true; + $options['ssl']['verify_peer_name'] = \true; + $options['ssl']['allow_self_signed'] = \false; + } + private function add_cert(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + { + if (\is_array($value)) { + $options['ssl']['passphrase'] = $value[1]; + $value = $value[0]; + } + if (!\file_exists($value)) { + throw new \RuntimeException("SSL certificate not found: {$value}"); + } + $options['ssl']['local_cert'] = $value; + } + private function add_progress(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + { + $this->addNotification($params, function ($code, $a, $b, $c, $transferred, $total) use($value) { + if ($code == \STREAM_NOTIFY_PROGRESS) { + $value($total, $transferred, null, null); + } + }); + } + private function add_debug(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + { + if ($value === \false) { + return; + } + static $map = [\STREAM_NOTIFY_CONNECT => 'CONNECT', \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', \STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', \STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', \STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', \STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', \STREAM_NOTIFY_PROGRESS => 'PROGRESS', \STREAM_NOTIFY_FAILURE => 'FAILURE', \STREAM_NOTIFY_COMPLETED => 'COMPLETED', \STREAM_NOTIFY_RESOLVE => 'RESOLVE']; + static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max']; + $value = \_PhpScoper5b87e821469bb\GuzzleHttp\debug_resource($value); + $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment(''); + $this->addNotification($params, function () use($ident, $value, $map, $args) { + $passed = \func_get_args(); + $code = \array_shift($passed); + \fprintf($value, '<%s> [%s] ', $ident, $map[$code]); + foreach (\array_filter($passed) as $i => $v) { + \fwrite($value, $args[$i] . ': "' . $v . '" '); + } + \fwrite($value, "\n"); + }); + } + private function addNotification(array &$params, callable $notify) + { + // Wrap the existing function if needed. + if (!isset($params['notification'])) { + $params['notification'] = $notify; + } else { + $params['notification'] = $this->callArray([$params['notification'], $notify]); + } + } + private function callArray(array $functions) + { + return function () use($functions) { + $args = \func_get_args(); + foreach ($functions as $fn) { + \call_user_func_array($fn, $args); + } + }; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/HandlerStack.php new file mode 100644 index 00000000..7016990c --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/HandlerStack.php @@ -0,0 +1,239 @@ +push(\_PhpScoper5b87e821469bb\GuzzleHttp\Middleware::httpErrors(), 'http_errors'); + $stack->push(\_PhpScoper5b87e821469bb\GuzzleHttp\Middleware::redirect(), 'allow_redirects'); + $stack->push(\_PhpScoper5b87e821469bb\GuzzleHttp\Middleware::cookies(), 'cookies'); + $stack->push(\_PhpScoper5b87e821469bb\GuzzleHttp\Middleware::prepareBody(), 'prepare_body'); + return $stack; + } + /** + * @param callable $handler Underlying HTTP handler. + */ + public function __construct(callable $handler = null) + { + $this->handler = $handler; + } + /** + * Invokes the handler stack as a composed handler + * + * @param RequestInterface $request + * @param array $options + */ + public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + { + $handler = $this->resolve(); + return $handler($request, $options); + } + /** + * Dumps a string representation of the stack. + * + * @return string + */ + public function __toString() + { + $depth = 0; + $stack = []; + if ($this->handler) { + $stack[] = "0) Handler: " . $this->debugCallable($this->handler); + } + $result = ''; + foreach (\array_reverse($this->stack) as $tuple) { + $depth++; + $str = "{$depth}) Name: '{$tuple[1]}', "; + $str .= "Function: " . $this->debugCallable($tuple[0]); + $result = "> {$str}\n{$result}"; + $stack[] = $str; + } + foreach (\array_keys($stack) as $k) { + $result .= "< {$stack[$k]}\n"; + } + return $result; + } + /** + * Set the HTTP handler that actually returns a promise. + * + * @param callable $handler Accepts a request and array of options and + * returns a Promise. + */ + public function setHandler(callable $handler) + { + $this->handler = $handler; + $this->cached = null; + } + /** + * Returns true if the builder has a handler. + * + * @return bool + */ + public function hasHandler() + { + return (bool) $this->handler; + } + /** + * Unshift a middleware to the bottom of the stack. + * + * @param callable $middleware Middleware function + * @param string $name Name to register for this middleware. + */ + public function unshift(callable $middleware, $name = null) + { + \array_unshift($this->stack, [$middleware, $name]); + $this->cached = null; + } + /** + * Push a middleware to the top of the stack. + * + * @param callable $middleware Middleware function + * @param string $name Name to register for this middleware. + */ + public function push(callable $middleware, $name = '') + { + $this->stack[] = [$middleware, $name]; + $this->cached = null; + } + /** + * Add a middleware before another middleware by name. + * + * @param string $findName Middleware to find + * @param callable $middleware Middleware function + * @param string $withName Name to register for this middleware. + */ + public function before($findName, callable $middleware, $withName = '') + { + $this->splice($findName, $withName, $middleware, \true); + } + /** + * Add a middleware after another middleware by name. + * + * @param string $findName Middleware to find + * @param callable $middleware Middleware function + * @param string $withName Name to register for this middleware. + */ + public function after($findName, callable $middleware, $withName = '') + { + $this->splice($findName, $withName, $middleware, \false); + } + /** + * Remove a middleware by instance or name from the stack. + * + * @param callable|string $remove Middleware to remove by instance or name. + */ + public function remove($remove) + { + $this->cached = null; + $idx = \is_callable($remove) ? 0 : 1; + $this->stack = \array_values(\array_filter($this->stack, function ($tuple) use($idx, $remove) { + return $tuple[$idx] !== $remove; + })); + } + /** + * Compose the middleware and handler into a single callable function. + * + * @return callable + */ + public function resolve() + { + if (!$this->cached) { + if (!($prev = $this->handler)) { + throw new \LogicException('No handler has been specified'); + } + foreach (\array_reverse($this->stack) as $fn) { + $prev = $fn[0]($prev); + } + $this->cached = $prev; + } + return $this->cached; + } + /** + * @param $name + * @return int + */ + private function findByName($name) + { + foreach ($this->stack as $k => $v) { + if ($v[1] === $name) { + return $k; + } + } + throw new \InvalidArgumentException("Middleware not found: {$name}"); + } + /** + * Splices a function into the middleware list at a specific position. + * + * @param $findName + * @param $withName + * @param callable $middleware + * @param $before + */ + private function splice($findName, $withName, callable $middleware, $before) + { + $this->cached = null; + $idx = $this->findByName($findName); + $tuple = [$middleware, $withName]; + if ($before) { + if ($idx === 0) { + \array_unshift($this->stack, $tuple); + } else { + $replacement = [$tuple, $this->stack[$idx]]; + \array_splice($this->stack, $idx, 1, $replacement); + } + } elseif ($idx === \count($this->stack) - 1) { + $this->stack[] = $tuple; + } else { + $replacement = [$this->stack[$idx], $tuple]; + \array_splice($this->stack, $idx, 1, $replacement); + } + } + /** + * Provides a debug string for a given callable. + * + * @param array|callable $fn Function to write as a string. + * + * @return string + */ + private function debugCallable($fn) + { + if (\is_string($fn)) { + return "callable({$fn})"; + } + if (\is_array($fn)) { + return \is_string($fn[0]) ? "callable({$fn[0]}::{$fn[1]})" : "callable(['" . \get_class($fn[0]) . "', '{$fn[1]}'])"; + } + return 'callable(' . \spl_object_hash($fn) . ')'; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/MessageFormatter.php new file mode 100644 index 00000000..c25a48fa --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/MessageFormatter.php @@ -0,0 +1,151 @@ +>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}"; + const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}'; + /** @var string Template used to format log messages */ + private $template; + /** + * @param string $template Log message template + */ + public function __construct($template = self::CLF) + { + $this->template = $template ?: self::CLF; + } + /** + * Returns a formatted message string. + * + * @param RequestInterface $request Request that was sent + * @param ResponseInterface $response Response that was received + * @param \Exception $error Exception that was received + * + * @return string + */ + public function format(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response = null, \Exception $error = null) + { + $cache = []; + return \preg_replace_callback('/{\\s*([A-Za-z_\\-\\.0-9]+)\\s*}/', function (array $matches) use($request, $response, $error, &$cache) { + if (isset($cache[$matches[1]])) { + return $cache[$matches[1]]; + } + $result = ''; + switch ($matches[1]) { + case 'request': + $result = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\str($request); + break; + case 'response': + $result = $response ? \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\str($response) : ''; + break; + case 'req_headers': + $result = \trim($request->getMethod() . ' ' . $request->getRequestTarget()) . ' HTTP/' . $request->getProtocolVersion() . "\r\n" . $this->headers($request); + break; + case 'res_headers': + $result = $response ? \sprintf('HTTP/%s %d %s', $response->getProtocolVersion(), $response->getStatusCode(), $response->getReasonPhrase()) . "\r\n" . $this->headers($response) : 'NULL'; + break; + case 'req_body': + $result = $request->getBody(); + break; + case 'res_body': + $result = $response ? $response->getBody() : 'NULL'; + break; + case 'ts': + case 'date_iso_8601': + $result = \gmdate('c'); + break; + case 'date_common_log': + $result = \date('d/M/Y:H:i:s O'); + break; + case 'method': + $result = $request->getMethod(); + break; + case 'version': + $result = $request->getProtocolVersion(); + break; + case 'uri': + case 'url': + $result = $request->getUri(); + break; + case 'target': + $result = $request->getRequestTarget(); + break; + case 'req_version': + $result = $request->getProtocolVersion(); + break; + case 'res_version': + $result = $response ? $response->getProtocolVersion() : 'NULL'; + break; + case 'host': + $result = $request->getHeaderLine('Host'); + break; + case 'hostname': + $result = \gethostname(); + break; + case 'code': + $result = $response ? $response->getStatusCode() : 'NULL'; + break; + case 'phrase': + $result = $response ? $response->getReasonPhrase() : 'NULL'; + break; + case 'error': + $result = $error ? $error->getMessage() : 'NULL'; + break; + default: + // handle prefixed dynamic headers + if (\strpos($matches[1], 'req_header_') === 0) { + $result = $request->getHeaderLine(\substr($matches[1], 11)); + } elseif (\strpos($matches[1], 'res_header_') === 0) { + $result = $response ? $response->getHeaderLine(\substr($matches[1], 11)) : 'NULL'; + } + } + $cache[$matches[1]] = $result; + return $result; + }, $this->template); + } + private function headers(\_PhpScoper5b87e821469bb\Psr\Http\Message\MessageInterface $message) + { + $result = ''; + foreach ($message->getHeaders() as $name => $values) { + $result .= $name . ': ' . \implode(', ', $values) . "\r\n"; + } + return \trim($result); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Middleware.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Middleware.php new file mode 100644 index 00000000..d81a77da --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Middleware.php @@ -0,0 +1,222 @@ +withCookieHeader($request); + return $handler($request, $options)->then(function ($response) use($cookieJar, $request) { + $cookieJar->extractCookies($request, $response); + return $response; + }); + }; + }; + } + /** + * Middleware that throws exceptions for 4xx or 5xx responses when the + * "http_error" request option is set to true. + * + * @return callable Returns a function that accepts the next handler. + */ + public static function httpErrors() + { + return function (callable $handler) { + return function ($request, array $options) use($handler) { + if (empty($options['http_errors'])) { + return $handler($request, $options); + } + return $handler($request, $options)->then(function (\_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) use($request, $handler) { + $code = $response->getStatusCode(); + if ($code < 400) { + return $response; + } + throw \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException::create($request, $response); + }); + }; + }; + } + /** + * Middleware that pushes history data to an ArrayAccess container. + * + * @param array|\ArrayAccess $container Container to hold the history (by reference). + * + * @return callable Returns a function that accepts the next handler. + * @throws \InvalidArgumentException if container is not an array or ArrayAccess. + */ + public static function history(&$container) + { + if (!\is_array($container) && !$container instanceof \ArrayAccess) { + throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess'); + } + return function (callable $handler) use(&$container) { + return function ($request, array $options) use($handler, &$container) { + return $handler($request, $options)->then(function ($value) use($request, &$container, $options) { + $container[] = ['request' => $request, 'response' => $value, 'error' => null, 'options' => $options]; + return $value; + }, function ($reason) use($request, &$container, $options) { + $container[] = ['request' => $request, 'response' => null, 'error' => $reason, 'options' => $options]; + return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($reason); + }); + }; + }; + } + /** + * Middleware that invokes a callback before and after sending a request. + * + * The provided listener cannot modify or alter the response. It simply + * "taps" into the chain to be notified before returning the promise. The + * before listener accepts a request and options array, and the after + * listener accepts a request, options array, and response promise. + * + * @param callable $before Function to invoke before forwarding the request. + * @param callable $after Function invoked after forwarding. + * + * @return callable Returns a function that accepts the next handler. + */ + public static function tap(callable $before = null, callable $after = null) + { + return function (callable $handler) use($before, $after) { + return function ($request, array $options) use($handler, $before, $after) { + if ($before) { + $before($request, $options); + } + $response = $handler($request, $options); + if ($after) { + $after($request, $options, $response); + } + return $response; + }; + }; + } + /** + * Middleware that handles request redirects. + * + * @return callable Returns a function that accepts the next handler. + */ + public static function redirect() + { + return function (callable $handler) { + return new \_PhpScoper5b87e821469bb\GuzzleHttp\RedirectMiddleware($handler); + }; + } + /** + * Middleware that retries requests based on the boolean result of + * invoking the provided "decider" function. + * + * If no delay function is provided, a simple implementation of exponential + * backoff will be utilized. + * + * @param callable $decider Function that accepts the number of retries, + * a request, [response], and [exception] and + * returns true if the request is to be retried. + * @param callable $delay Function that accepts the number of retries and + * returns the number of milliseconds to delay. + * + * @return callable Returns a function that accepts the next handler. + */ + public static function retry(callable $decider, callable $delay = null) + { + return function (callable $handler) use($decider, $delay) { + return new \_PhpScoper5b87e821469bb\GuzzleHttp\RetryMiddleware($decider, $handler, $delay); + }; + } + /** + * Middleware that logs requests, responses, and errors using a message + * formatter. + * + * @param LoggerInterface $logger Logs messages. + * @param MessageFormatter $formatter Formatter used to create message strings. + * @param string $logLevel Level at which to log requests. + * + * @return callable Returns a function that accepts the next handler. + */ + public static function log(\_PhpScoper5b87e821469bb\Psr\Log\LoggerInterface $logger, \_PhpScoper5b87e821469bb\GuzzleHttp\MessageFormatter $formatter, $logLevel = \_PhpScoper5b87e821469bb\Psr\Log\LogLevel::INFO) + { + return function (callable $handler) use($logger, $formatter, $logLevel) { + return function ($request, array $options) use($handler, $logger, $formatter, $logLevel) { + return $handler($request, $options)->then(function ($response) use($logger, $request, $formatter, $logLevel) { + $message = $formatter->format($request, $response); + $logger->log($logLevel, $message); + return $response; + }, function ($reason) use($logger, $request, $formatter) { + $response = $reason instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException ? $reason->getResponse() : null; + $message = $formatter->format($request, $response, $reason); + $logger->notice($message); + return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($reason); + }); + }; + }; + } + /** + * This middleware adds a default content-type if possible, a default + * content-length or transfer-encoding header, and the expect header. + * + * @return callable + */ + public static function prepareBody() + { + return function (callable $handler) { + return new \_PhpScoper5b87e821469bb\GuzzleHttp\PrepareBodyMiddleware($handler); + }; + } + /** + * Middleware that applies a map function to the request before passing to + * the next handler. + * + * @param callable $fn Function that accepts a RequestInterface and returns + * a RequestInterface. + * @return callable + */ + public static function mapRequest(callable $fn) + { + return function (callable $handler) use($fn) { + return function ($request, array $options) use($handler, $fn) { + return $handler($fn($request), $options); + }; + }; + } + /** + * Middleware that applies a map function to the resolved promise's + * response. + * + * @param callable $fn Function that accepts a ResponseInterface and + * returns a ResponseInterface. + * @return callable + */ + public static function mapResponse(callable $fn) + { + return function (callable $handler) use($fn) { + return function ($request, array $options) use($handler, $fn) { + return $handler($request, $options)->then($fn); + }; + }; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Pool.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Pool.php new file mode 100644 index 00000000..1148d56b --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Pool.php @@ -0,0 +1,106 @@ + $rfn) { + if ($rfn instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface) { + (yield $key => $client->sendAsync($rfn, $opts)); + } elseif (\is_callable($rfn)) { + (yield $key => $rfn($opts)); + } else { + throw new \InvalidArgumentException('Each value yielded by ' . 'the iterator must be a Psr7\\Http\\Message\\RequestInterface ' . 'or a callable that returns a promise that fulfills ' . 'with a Psr7\\Message\\Http\\ResponseInterface object.'); + } + } + }; + $this->each = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\EachPromise($requests(), $config); + } + public function promise() + { + return $this->each->promise(); + } + /** + * Sends multiple requests concurrently and returns an array of responses + * and exceptions that uses the same ordering as the provided requests. + * + * IMPORTANT: This method keeps every request and response in memory, and + * as such, is NOT recommended when sending a large number or an + * indeterminate number of requests concurrently. + * + * @param ClientInterface $client Client used to send the requests + * @param array|\Iterator $requests Requests to send concurrently. + * @param array $options Passes through the options available in + * {@see GuzzleHttp\Pool::__construct} + * + * @return array Returns an array containing the response or an exception + * in the same order that the requests were sent. + * @throws \InvalidArgumentException if the event format is incorrect. + */ + public static function batch(\_PhpScoper5b87e821469bb\GuzzleHttp\ClientInterface $client, $requests, array $options = []) + { + $res = []; + self::cmpCallback($options, 'fulfilled', $res); + self::cmpCallback($options, 'rejected', $res); + $pool = new static($client, $requests, $options); + $pool->promise()->wait(); + \ksort($res); + return $res; + } + private static function cmpCallback(array &$options, $name, array &$results) + { + if (!isset($options[$name])) { + $options[$name] = function ($v, $k) use(&$results) { + $results[$k] = $v; + }; + } else { + $currentFn = $options[$name]; + $options[$name] = function ($v, $k) use(&$results, $currentFn) { + $currentFn($v, $k); + $results[$k] = $v; + }; + } + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php new file mode 100644 index 00000000..fbe4360c --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php @@ -0,0 +1,86 @@ +nextHandler = $nextHandler; + } + /** + * @param RequestInterface $request + * @param array $options + * + * @return PromiseInterface + */ + public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + { + $fn = $this->nextHandler; + // Don't do anything if the request has no body. + if ($request->getBody()->getSize() === 0) { + return $fn($request, $options); + } + $modify = []; + // Add a default content-type if possible. + if (!$request->hasHeader('Content-Type')) { + if ($uri = $request->getBody()->getMetadata('uri')) { + if ($type = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\mimetype_from_filename($uri)) { + $modify['set_headers']['Content-Type'] = $type; + } + } + } + // Add a default content-length or transfer-encoding header. + if (!$request->hasHeader('Content-Length') && !$request->hasHeader('Transfer-Encoding')) { + $size = $request->getBody()->getSize(); + if ($size !== null) { + $modify['set_headers']['Content-Length'] = $size; + } else { + $modify['set_headers']['Transfer-Encoding'] = 'chunked'; + } + } + // Add the expect header if needed. + $this->addExpectHeader($request, $options, $modify); + return $fn(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\modify_request($request, $modify), $options); + } + private function addExpectHeader(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, array &$modify) + { + // Determine if the Expect header should be used + if ($request->hasHeader('Expect')) { + return; + } + $expect = isset($options['expect']) ? $options['expect'] : null; + // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0 + if ($expect === \false || $request->getProtocolVersion() < 1.1) { + return; + } + // The expect header is unconditionally enabled + if ($expect === \true) { + $modify['set_headers']['Expect'] = '100-Continue'; + return; + } + // By default, send the expect header when the payload is > 1mb + if ($expect === null) { + $expect = 1048576; + } + // Always add if the body cannot be rewound, the size cannot be + // determined, or the size is greater than the cutoff threshold + $body = $request->getBody(); + $size = $body->getSize(); + if ($size === null || $size >= (int) $expect || !$body->isSeekable()) { + $modify['set_headers']['Expect'] = '100-Continue'; + } + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php new file mode 100644 index 00000000..4a3e1941 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php @@ -0,0 +1,160 @@ + 5, 'protocols' => ['http', 'https'], 'strict' => \false, 'referer' => \false, 'track_redirects' => \false]; + /** @var callable */ + private $nextHandler; + /** + * @param callable $nextHandler Next handler to invoke. + */ + public function __construct(callable $nextHandler) + { + $this->nextHandler = $nextHandler; + } + /** + * @param RequestInterface $request + * @param array $options + * + * @return PromiseInterface + */ + public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + { + $fn = $this->nextHandler; + if (empty($options['allow_redirects'])) { + return $fn($request, $options); + } + if ($options['allow_redirects'] === \true) { + $options['allow_redirects'] = self::$defaultSettings; + } elseif (!\is_array($options['allow_redirects'])) { + throw new \InvalidArgumentException('allow_redirects must be true, false, or array'); + } else { + // Merge the default settings with the provided settings + $options['allow_redirects'] += self::$defaultSettings; + } + if (empty($options['allow_redirects']['max'])) { + return $fn($request, $options); + } + return $fn($request, $options)->then(function (\_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) use($request, $options) { + return $this->checkRedirect($request, $options, $response); + }); + } + /** + * @param RequestInterface $request + * @param array $options + * @param ResponseInterface|PromiseInterface $response + * + * @return ResponseInterface|PromiseInterface + */ + public function checkRedirect(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) + { + if (\substr($response->getStatusCode(), 0, 1) != '3' || !$response->hasHeader('Location')) { + return $response; + } + $this->guardMax($request, $options); + $nextRequest = $this->modifyRequest($request, $options, $response); + if (isset($options['allow_redirects']['on_redirect'])) { + \call_user_func($options['allow_redirects']['on_redirect'], $request, $response, $nextRequest->getUri()); + } + /** @var PromiseInterface|ResponseInterface $promise */ + $promise = $this($nextRequest, $options); + // Add headers to be able to track history of redirects. + if (!empty($options['allow_redirects']['track_redirects'])) { + return $this->withTracking($promise, (string) $nextRequest->getUri(), $response->getStatusCode()); + } + return $promise; + } + private function withTracking(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $promise, $uri, $statusCode) + { + return $promise->then(function (\_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) use($uri, $statusCode) { + // Note that we are pushing to the front of the list as this + // would be an earlier response than what is currently present + // in the history header. + $historyHeader = $response->getHeader(self::HISTORY_HEADER); + $statusHeader = $response->getHeader(self::STATUS_HISTORY_HEADER); + \array_unshift($historyHeader, $uri); + \array_unshift($statusHeader, $statusCode); + return $response->withHeader(self::HISTORY_HEADER, $historyHeader)->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader); + }); + } + private function guardMax(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array &$options) + { + $current = isset($options['__redirect_count']) ? $options['__redirect_count'] : 0; + $options['__redirect_count'] = $current + 1; + $max = $options['allow_redirects']['max']; + if ($options['__redirect_count'] > $max) { + throw new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\TooManyRedirectsException("Will not follow more than {$max} redirects", $request); + } + } + /** + * @param RequestInterface $request + * @param array $options + * @param ResponseInterface $response + * + * @return RequestInterface + */ + public function modifyRequest(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) + { + // Request modifications to apply. + $modify = []; + $protocols = $options['allow_redirects']['protocols']; + // Use a GET request if this is an entity enclosing request and we are + // not forcing RFC compliance, but rather emulating what all browsers + // would do. + $statusCode = $response->getStatusCode(); + if ($statusCode == 303 || $statusCode <= 302 && $request->getBody() && !$options['allow_redirects']['strict']) { + $modify['method'] = 'GET'; + $modify['body'] = ''; + } + $modify['uri'] = $this->redirectUri($request, $response, $protocols); + \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\rewind_body($request); + // Add the Referer header if it is told to do so and only + // add the header if we are not redirecting from https to http. + if ($options['allow_redirects']['referer'] && $modify['uri']->getScheme() === $request->getUri()->getScheme()) { + $uri = $request->getUri()->withUserInfo('', ''); + $modify['set_headers']['Referer'] = (string) $uri; + } else { + $modify['remove_headers'][] = 'Referer'; + } + // Remove Authorization header if host is different. + if ($request->getUri()->getHost() !== $modify['uri']->getHost()) { + $modify['remove_headers'][] = 'Authorization'; + } + return \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\modify_request($request, $modify); + } + /** + * Set the appropriate URL on the request based on the location header + * + * @param RequestInterface $request + * @param ResponseInterface $response + * @param array $protocols + * + * @return UriInterface + */ + private function redirectUri(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response, array $protocols) + { + $location = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::resolve($request->getUri(), new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri($response->getHeaderLine('Location'))); + // Ensure that the redirect URI is allowed based on the protocols. + if (!\in_array($location->getScheme(), $protocols)) { + throw new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\BadResponseException(\sprintf('Redirect URI, %s, does not use one of the allowed redirect protocols: %s', $location, \implode(', ', $protocols)), $request, $response); + } + return $location; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RequestOptions.php new file mode 100644 index 00000000..a5db2e62 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RequestOptions.php @@ -0,0 +1,228 @@ +decider = $decider; + $this->nextHandler = $nextHandler; + $this->delay = $delay ?: __CLASS__ . '::exponentialDelay'; + } + /** + * Default exponential backoff delay function. + * + * @param $retries + * + * @return int + */ + public static function exponentialDelay($retries) + { + return (int) \pow(2, $retries - 1); + } + /** + * @param RequestInterface $request + * @param array $options + * + * @return PromiseInterface + */ + public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + { + if (!isset($options['retries'])) { + $options['retries'] = 0; + } + $fn = $this->nextHandler; + return $fn($request, $options)->then($this->onFulfilled($request, $options), $this->onRejected($request, $options)); + } + private function onFulfilled(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $req, array $options) + { + return function ($value) use($req, $options) { + if (!\call_user_func($this->decider, $options['retries'], $req, $value, null)) { + return $value; + } + return $this->doRetry($req, $options, $value); + }; + } + private function onRejected(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $req, array $options) + { + return function ($reason) use($req, $options) { + if (!\call_user_func($this->decider, $options['retries'], $req, null, $reason)) { + return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($reason); + } + return $this->doRetry($req, $options); + }; + } + private function doRetry(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response = null) + { + $options['delay'] = \call_user_func($this->delay, ++$options['retries'], $response); + return $this($request, $options); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/TransferStats.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/TransferStats.php new file mode 100644 index 00000000..33e847e9 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/TransferStats.php @@ -0,0 +1,110 @@ +request = $request; + $this->response = $response; + $this->transferTime = $transferTime; + $this->handlerErrorData = $handlerErrorData; + $this->handlerStats = $handlerStats; + } + /** + * @return RequestInterface + */ + public function getRequest() + { + return $this->request; + } + /** + * Returns the response that was received (if any). + * + * @return ResponseInterface|null + */ + public function getResponse() + { + return $this->response; + } + /** + * Returns true if a response was received. + * + * @return bool + */ + public function hasResponse() + { + return $this->response !== null; + } + /** + * Gets handler specific error data. + * + * This might be an exception, a integer representing an error code, or + * anything else. Relying on this value assumes that you know what handler + * you are using. + * + * @return mixed + */ + public function getHandlerErrorData() + { + return $this->handlerErrorData; + } + /** + * Get the effective URI the request was sent to. + * + * @return UriInterface + */ + public function getEffectiveUri() + { + return $this->request->getUri(); + } + /** + * Get the estimated time the request was being transferred by the handler. + * + * @return float Time in seconds. + */ + public function getTransferTime() + { + return $this->transferTime; + } + /** + * Gets an array of all of the handler specific transfer data. + * + * @return array + */ + public function getHandlerStats() + { + return $this->handlerStats; + } + /** + * Get a specific handler statistic from the handler by name. + * + * @param string $stat Handler specific transfer stat to retrieve. + * + * @return mixed|null + */ + public function getHandlerStat($stat) + { + return isset($this->handlerStats[$stat]) ? $this->handlerStats[$stat] : null; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/UriTemplate.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/UriTemplate.php new file mode 100644 index 00000000..ec8b6cc3 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/UriTemplate.php @@ -0,0 +1,191 @@ + ['prefix' => '', 'joiner' => ',', 'query' => \false], '+' => ['prefix' => '', 'joiner' => ',', 'query' => \false], '#' => ['prefix' => '#', 'joiner' => ',', 'query' => \false], '.' => ['prefix' => '.', 'joiner' => '.', 'query' => \false], '/' => ['prefix' => '/', 'joiner' => '/', 'query' => \false], ';' => ['prefix' => ';', 'joiner' => ';', 'query' => \true], '?' => ['prefix' => '?', 'joiner' => '&', 'query' => \true], '&' => ['prefix' => '&', 'joiner' => '&', 'query' => \true]]; + /** @var array Delimiters */ + private static $delims = [':', '/', '?', '#', '[', ']', '@', '!', '$', '&', '\'', '(', ')', '*', '+', ',', ';', '=']; + /** @var array Percent encoded delimiters */ + private static $delimsPct = ['%3A', '%2F', '%3F', '%23', '%5B', '%5D', '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C', '%3B', '%3D']; + public function expand($template, array $variables) + { + if (\false === \strpos($template, '{')) { + return $template; + } + $this->template = $template; + $this->variables = $variables; + return \preg_replace_callback('/\\{([^\\}]+)\\}/', [$this, 'expandMatch'], $this->template); + } + /** + * Parse an expression into parts + * + * @param string $expression Expression to parse + * + * @return array Returns an associative array of parts + */ + private function parseExpression($expression) + { + $result = []; + if (isset(self::$operatorHash[$expression[0]])) { + $result['operator'] = $expression[0]; + $expression = \substr($expression, 1); + } else { + $result['operator'] = ''; + } + foreach (\explode(',', $expression) as $value) { + $value = \trim($value); + $varspec = []; + if ($colonPos = \strpos($value, ':')) { + $varspec['value'] = \substr($value, 0, $colonPos); + $varspec['modifier'] = ':'; + $varspec['position'] = (int) \substr($value, $colonPos + 1); + } elseif (\substr($value, -1) === '*') { + $varspec['modifier'] = '*'; + $varspec['value'] = \substr($value, 0, -1); + } else { + $varspec['value'] = (string) $value; + $varspec['modifier'] = ''; + } + $result['values'][] = $varspec; + } + return $result; + } + /** + * Process an expansion + * + * @param array $matches Matches met in the preg_replace_callback + * + * @return string Returns the replacement string + */ + private function expandMatch(array $matches) + { + static $rfc1738to3986 = ['+' => '%20', '%7e' => '~']; + $replacements = []; + $parsed = self::parseExpression($matches[1]); + $prefix = self::$operatorHash[$parsed['operator']]['prefix']; + $joiner = self::$operatorHash[$parsed['operator']]['joiner']; + $useQuery = self::$operatorHash[$parsed['operator']]['query']; + foreach ($parsed['values'] as $value) { + if (!isset($this->variables[$value['value']])) { + continue; + } + $variable = $this->variables[$value['value']]; + $actuallyUseQuery = $useQuery; + $expanded = ''; + if (\is_array($variable)) { + $isAssoc = $this->isAssoc($variable); + $kvp = []; + foreach ($variable as $key => $var) { + if ($isAssoc) { + $key = \rawurlencode($key); + $isNestedArray = \is_array($var); + } else { + $isNestedArray = \false; + } + if (!$isNestedArray) { + $var = \rawurlencode($var); + if ($parsed['operator'] === '+' || $parsed['operator'] === '#') { + $var = $this->decodeReserved($var); + } + } + if ($value['modifier'] === '*') { + if ($isAssoc) { + if ($isNestedArray) { + // Nested arrays must allow for deeply nested + // structures. + $var = \strtr(\http_build_query([$key => $var]), $rfc1738to3986); + } else { + $var = $key . '=' . $var; + } + } elseif ($key > 0 && $actuallyUseQuery) { + $var = $value['value'] . '=' . $var; + } + } + $kvp[$key] = $var; + } + if (empty($variable)) { + $actuallyUseQuery = \false; + } elseif ($value['modifier'] === '*') { + $expanded = \implode($joiner, $kvp); + if ($isAssoc) { + // Don't prepend the value name when using the explode + // modifier with an associative array. + $actuallyUseQuery = \false; + } + } else { + if ($isAssoc) { + // When an associative array is encountered and the + // explode modifier is not set, then the result must be + // a comma separated list of keys followed by their + // respective values. + foreach ($kvp as $k => &$v) { + $v = $k . ',' . $v; + } + } + $expanded = \implode(',', $kvp); + } + } else { + if ($value['modifier'] === ':') { + $variable = \substr($variable, 0, $value['position']); + } + $expanded = \rawurlencode($variable); + if ($parsed['operator'] === '+' || $parsed['operator'] === '#') { + $expanded = $this->decodeReserved($expanded); + } + } + if ($actuallyUseQuery) { + if (!$expanded && $joiner !== '&') { + $expanded = $value['value']; + } else { + $expanded = $value['value'] . '=' . $expanded; + } + } + $replacements[] = $expanded; + } + $ret = \implode($joiner, $replacements); + if ($ret && $prefix) { + return $prefix . $ret; + } + return $ret; + } + /** + * Determines if an array is associative. + * + * This makes the assumption that input arrays are sequences or hashes. + * This assumption is a tradeoff for accuracy in favor of speed, but it + * should work in almost every case where input is supplied for a URI + * template. + * + * @param array $array Array to check + * + * @return bool + */ + private function isAssoc(array $array) + { + return $array && \array_keys($array)[0] !== 0; + } + /** + * Removes percent encoding on reserved characters (used with + and # + * modifiers). + * + * @param string $string String to fix + * + * @return string + */ + private function decodeReserved($string) + { + return \str_replace(self::$delimsPct, self::$delims, $string); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/functions.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/functions.php new file mode 100644 index 00000000..ad82f84e --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/functions.php @@ -0,0 +1,294 @@ +expand($template, $variables); +} +/** + * Debug function used to describe the provided value type and class. + * + * @param mixed $input + * + * @return string Returns a string containing the type of the variable and + * if a class is provided, the class name. + */ +function describe_type($input) +{ + switch (\gettype($input)) { + case 'object': + return 'object(' . \get_class($input) . ')'; + case 'array': + return 'array(' . \count($input) . ')'; + default: + \ob_start(); + \var_dump($input); + // normalize float vs double + return \str_replace('double(', 'float(', \rtrim(\ob_get_clean())); + } +} +/** + * Parses an array of header lines into an associative array of headers. + * + * @param array $lines Header lines array of strings in the following + * format: "Name: Value" + * @return array + */ +function headers_from_lines($lines) +{ + $headers = []; + foreach ($lines as $line) { + $parts = \explode(':', $line, 2); + $headers[\trim($parts[0])][] = isset($parts[1]) ? \trim($parts[1]) : null; + } + return $headers; +} +/** + * Returns a debug stream based on the provided variable. + * + * @param mixed $value Optional value + * + * @return resource + */ +function debug_resource($value = null) +{ + if (\is_resource($value)) { + return $value; + } elseif (\defined('STDOUT')) { + return \STDOUT; + } + return \fopen('php://output', 'w'); +} +/** + * Chooses and creates a default handler to use based on the environment. + * + * The returned handler is not wrapped by any default middlewares. + * + * @throws \RuntimeException if no viable Handler is available. + * @return callable Returns the best handler for the given system. + */ +function choose_handler() +{ + $handler = null; + if (\function_exists('curl_multi_exec') && \function_exists('curl_exec')) { + $handler = \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\Proxy::wrapSync(new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlMultiHandler(), new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlHandler()); + } elseif (\function_exists('curl_exec')) { + $handler = new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlHandler(); + } elseif (\function_exists('curl_multi_exec')) { + $handler = new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlMultiHandler(); + } + if (\ini_get('allow_url_fopen')) { + $handler = $handler ? \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\Proxy::wrapStreaming($handler, new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\StreamHandler()) : new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\StreamHandler(); + } elseif (!$handler) { + throw new \RuntimeException('GuzzleHttp requires cURL, the ' . 'allow_url_fopen ini setting, or a custom HTTP handler.'); + } + return $handler; +} +/** + * Get the default User-Agent string to use with Guzzle + * + * @return string + */ +function default_user_agent() +{ + static $defaultAgent = ''; + if (!$defaultAgent) { + $defaultAgent = 'GuzzleHttp/' . \_PhpScoper5b87e821469bb\GuzzleHttp\Client::VERSION; + if (\extension_loaded('curl') && \function_exists('curl_version')) { + $defaultAgent .= ' curl/' . \curl_version()['version']; + } + $defaultAgent .= ' PHP/' . \PHP_VERSION; + } + return $defaultAgent; +} +/** + * Returns the default cacert bundle for the current system. + * + * First, the openssl.cafile and curl.cainfo php.ini settings are checked. + * If those settings are not configured, then the common locations for + * bundles found on Red Hat, CentOS, Fedora, Ubuntu, Debian, FreeBSD, OS X + * and Windows are checked. If any of these file locations are found on + * disk, they will be utilized. + * + * Note: the result of this function is cached for subsequent calls. + * + * @return string + * @throws \RuntimeException if no bundle can be found. + */ +function default_ca_bundle() +{ + static $cached = null; + static $cafiles = [ + // Red Hat, CentOS, Fedora (provided by the ca-certificates package) + '/etc/pki/tls/certs/ca-bundle.crt', + // Ubuntu, Debian (provided by the ca-certificates package) + '/etc/ssl/certs/ca-certificates.crt', + // FreeBSD (provided by the ca_root_nss package) + '/usr/local/share/certs/ca-root-nss.crt', + // SLES 12 (provided by the ca-certificates package) + '/var/lib/ca-certificates/ca-bundle.pem', + // OS X provided by homebrew (using the default path) + '/usr/local/etc/openssl/cert.pem', + // Google app engine + '/etc/ca-certificates.crt', + // Windows? + 'C:\\windows\\system32\\curl-ca-bundle.crt', + 'C:\\windows\\curl-ca-bundle.crt', + ]; + if ($cached) { + return $cached; + } + if ($ca = \ini_get('openssl.cafile')) { + return $cached = $ca; + } + if ($ca = \ini_get('curl.cainfo')) { + return $cached = $ca; + } + foreach ($cafiles as $filename) { + if (\file_exists($filename)) { + return $cached = $filename; + } + } + throw new \RuntimeException(<< + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/Makefile b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/Makefile new file mode 100644 index 00000000..8d5b3ef9 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/Makefile @@ -0,0 +1,13 @@ +all: clean test + +test: + vendor/bin/phpunit + +coverage: + vendor/bin/phpunit --coverage-html=artifacts/coverage + +view-coverage: + open artifacts/coverage/index.html + +clean: + rm -rf artifacts/* diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/README.md b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/README.md new file mode 100644 index 00000000..7b607e28 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/README.md @@ -0,0 +1,504 @@ +# Guzzle Promises + +[Promises/A+](https://promisesaplus.com/) implementation that handles promise +chaining and resolution iteratively, allowing for "infinite" promise chaining +while keeping the stack size constant. Read [this blog post](https://blog.domenic.me/youre-missing-the-point-of-promises/) +for a general introduction to promises. + +- [Features](#features) +- [Quick start](#quick-start) +- [Synchronous wait](#synchronous-wait) +- [Cancellation](#cancellation) +- [API](#api) + - [Promise](#promise) + - [FulfilledPromise](#fulfilledpromise) + - [RejectedPromise](#rejectedpromise) +- [Promise interop](#promise-interop) +- [Implementation notes](#implementation-notes) + + +# Features + +- [Promises/A+](https://promisesaplus.com/) implementation. +- Promise resolution and chaining is handled iteratively, allowing for + "infinite" promise chaining. +- Promises have a synchronous `wait` method. +- Promises can be cancelled. +- Works with any object that has a `then` function. +- C# style async/await coroutine promises using + `GuzzleHttp\Promise\coroutine()`. + + +# Quick start + +A *promise* represents the eventual result of an asynchronous operation. The +primary way of interacting with a promise is through its `then` method, which +registers callbacks to receive either a promise's eventual value or the reason +why the promise cannot be fulfilled. + + +## Callbacks + +Callbacks are registered with the `then` method by providing an optional +`$onFulfilled` followed by an optional `$onRejected` function. + + +```php +use GuzzleHttp\Promise\Promise; + +$promise = new Promise(); +$promise->then( + // $onFulfilled + function ($value) { + echo 'The promise was fulfilled.'; + }, + // $onRejected + function ($reason) { + echo 'The promise was rejected.'; + } +); +``` + +*Resolving* a promise means that you either fulfill a promise with a *value* or +reject a promise with a *reason*. Resolving a promises triggers callbacks +registered with the promises's `then` method. These callbacks are triggered +only once and in the order in which they were added. + + +## Resolving a promise + +Promises are fulfilled using the `resolve($value)` method. Resolving a promise +with any value other than a `GuzzleHttp\Promise\RejectedPromise` will trigger +all of the onFulfilled callbacks (resolving a promise with a rejected promise +will reject the promise and trigger the `$onRejected` callbacks). + +```php +use GuzzleHttp\Promise\Promise; + +$promise = new Promise(); +$promise + ->then(function ($value) { + // Return a value and don't break the chain + return "Hello, " . $value; + }) + // This then is executed after the first then and receives the value + // returned from the first then. + ->then(function ($value) { + echo $value; + }); + +// Resolving the promise triggers the $onFulfilled callbacks and outputs +// "Hello, reader". +$promise->resolve('reader.'); +``` + + +## Promise forwarding + +Promises can be chained one after the other. Each then in the chain is a new +promise. The return value of a promise is what's forwarded to the next +promise in the chain. Returning a promise in a `then` callback will cause the +subsequent promises in the chain to only be fulfilled when the returned promise +has been fulfilled. The next promise in the chain will be invoked with the +resolved value of the promise. + +```php +use GuzzleHttp\Promise\Promise; + +$promise = new Promise(); +$nextPromise = new Promise(); + +$promise + ->then(function ($value) use ($nextPromise) { + echo $value; + return $nextPromise; + }) + ->then(function ($value) { + echo $value; + }); + +// Triggers the first callback and outputs "A" +$promise->resolve('A'); +// Triggers the second callback and outputs "B" +$nextPromise->resolve('B'); +``` + +## Promise rejection + +When a promise is rejected, the `$onRejected` callbacks are invoked with the +rejection reason. + +```php +use GuzzleHttp\Promise\Promise; + +$promise = new Promise(); +$promise->then(null, function ($reason) { + echo $reason; +}); + +$promise->reject('Error!'); +// Outputs "Error!" +``` + +## Rejection forwarding + +If an exception is thrown in an `$onRejected` callback, subsequent +`$onRejected` callbacks are invoked with the thrown exception as the reason. + +```php +use GuzzleHttp\Promise\Promise; + +$promise = new Promise(); +$promise->then(null, function ($reason) { + throw new \Exception($reason); +})->then(null, function ($reason) { + assert($reason->getMessage() === 'Error!'); +}); + +$promise->reject('Error!'); +``` + +You can also forward a rejection down the promise chain by returning a +`GuzzleHttp\Promise\RejectedPromise` in either an `$onFulfilled` or +`$onRejected` callback. + +```php +use GuzzleHttp\Promise\Promise; +use GuzzleHttp\Promise\RejectedPromise; + +$promise = new Promise(); +$promise->then(null, function ($reason) { + return new RejectedPromise($reason); +})->then(null, function ($reason) { + assert($reason === 'Error!'); +}); + +$promise->reject('Error!'); +``` + +If an exception is not thrown in a `$onRejected` callback and the callback +does not return a rejected promise, downstream `$onFulfilled` callbacks are +invoked using the value returned from the `$onRejected` callback. + +```php +use GuzzleHttp\Promise\Promise; +use GuzzleHttp\Promise\RejectedPromise; + +$promise = new Promise(); +$promise + ->then(null, function ($reason) { + return "It's ok"; + }) + ->then(function ($value) { + assert($value === "It's ok"); + }); + +$promise->reject('Error!'); +``` + +# Synchronous wait + +You can synchronously force promises to complete using a promise's `wait` +method. When creating a promise, you can provide a wait function that is used +to synchronously force a promise to complete. When a wait function is invoked +it is expected to deliver a value to the promise or reject the promise. If the +wait function does not deliver a value, then an exception is thrown. The wait +function provided to a promise constructor is invoked when the `wait` function +of the promise is called. + +```php +$promise = new Promise(function () use (&$promise) { + $promise->resolve('foo'); +}); + +// Calling wait will return the value of the promise. +echo $promise->wait(); // outputs "foo" +``` + +If an exception is encountered while invoking the wait function of a promise, +the promise is rejected with the exception and the exception is thrown. + +```php +$promise = new Promise(function () use (&$promise) { + throw new \Exception('foo'); +}); + +$promise->wait(); // throws the exception. +``` + +Calling `wait` on a promise that has been fulfilled will not trigger the wait +function. It will simply return the previously resolved value. + +```php +$promise = new Promise(function () { die('this is not called!'); }); +$promise->resolve('foo'); +echo $promise->wait(); // outputs "foo" +``` + +Calling `wait` on a promise that has been rejected will throw an exception. If +the rejection reason is an instance of `\Exception` the reason is thrown. +Otherwise, a `GuzzleHttp\Promise\RejectionException` is thrown and the reason +can be obtained by calling the `getReason` method of the exception. + +```php +$promise = new Promise(); +$promise->reject('foo'); +$promise->wait(); +``` + +> PHP Fatal error: Uncaught exception 'GuzzleHttp\Promise\RejectionException' with message 'The promise was rejected with value: foo' + + +## Unwrapping a promise + +When synchronously waiting on a promise, you are joining the state of the +promise into the current state of execution (i.e., return the value of the +promise if it was fulfilled or throw an exception if it was rejected). This is +called "unwrapping" the promise. Waiting on a promise will by default unwrap +the promise state. + +You can force a promise to resolve and *not* unwrap the state of the promise +by passing `false` to the first argument of the `wait` function: + +```php +$promise = new Promise(); +$promise->reject('foo'); +// This will not throw an exception. It simply ensures the promise has +// been resolved. +$promise->wait(false); +``` + +When unwrapping a promise, the resolved value of the promise will be waited +upon until the unwrapped value is not a promise. This means that if you resolve +promise A with a promise B and unwrap promise A, the value returned by the +wait function will be the value delivered to promise B. + +**Note**: when you do not unwrap the promise, no value is returned. + + +# Cancellation + +You can cancel a promise that has not yet been fulfilled using the `cancel()` +method of a promise. When creating a promise you can provide an optional +cancel function that when invoked cancels the action of computing a resolution +of the promise. + + +# API + + +## Promise + +When creating a promise object, you can provide an optional `$waitFn` and +`$cancelFn`. `$waitFn` is a function that is invoked with no arguments and is +expected to resolve the promise. `$cancelFn` is a function with no arguments +that is expected to cancel the computation of a promise. It is invoked when the +`cancel()` method of a promise is called. + +```php +use GuzzleHttp\Promise\Promise; + +$promise = new Promise( + function () use (&$promise) { + $promise->resolve('waited'); + }, + function () { + // do something that will cancel the promise computation (e.g., close + // a socket, cancel a database query, etc...) + } +); + +assert('waited' === $promise->wait()); +``` + +A promise has the following methods: + +- `then(callable $onFulfilled, callable $onRejected) : PromiseInterface` + + Appends fulfillment and rejection handlers to the promise, and returns a new promise resolving to the return value of the called handler. + +- `otherwise(callable $onRejected) : PromiseInterface` + + Appends a rejection handler callback to the promise, and returns a new promise resolving to the return value of the callback if it is called, or to its original fulfillment value if the promise is instead fulfilled. + +- `wait($unwrap = true) : mixed` + + Synchronously waits on the promise to complete. + + `$unwrap` controls whether or not the value of the promise is returned for a + fulfilled promise or if an exception is thrown if the promise is rejected. + This is set to `true` by default. + +- `cancel()` + + Attempts to cancel the promise if possible. The promise being cancelled and + the parent most ancestor that has not yet been resolved will also be + cancelled. Any promises waiting on the cancelled promise to resolve will also + be cancelled. + +- `getState() : string` + + Returns the state of the promise. One of `pending`, `fulfilled`, or + `rejected`. + +- `resolve($value)` + + Fulfills the promise with the given `$value`. + +- `reject($reason)` + + Rejects the promise with the given `$reason`. + + +## FulfilledPromise + +A fulfilled promise can be created to represent a promise that has been +fulfilled. + +```php +use GuzzleHttp\Promise\FulfilledPromise; + +$promise = new FulfilledPromise('value'); + +// Fulfilled callbacks are immediately invoked. +$promise->then(function ($value) { + echo $value; +}); +``` + + +## RejectedPromise + +A rejected promise can be created to represent a promise that has been +rejected. + +```php +use GuzzleHttp\Promise\RejectedPromise; + +$promise = new RejectedPromise('Error'); + +// Rejected callbacks are immediately invoked. +$promise->then(null, function ($reason) { + echo $reason; +}); +``` + + +# Promise interop + +This library works with foreign promises that have a `then` method. This means +you can use Guzzle promises with [React promises](https://github.com/reactphp/promise) +for example. When a foreign promise is returned inside of a then method +callback, promise resolution will occur recursively. + +```php +// Create a React promise +$deferred = new React\Promise\Deferred(); +$reactPromise = $deferred->promise(); + +// Create a Guzzle promise that is fulfilled with a React promise. +$guzzlePromise = new \GuzzleHttp\Promise\Promise(); +$guzzlePromise->then(function ($value) use ($reactPromise) { + // Do something something with the value... + // Return the React promise + return $reactPromise; +}); +``` + +Please note that wait and cancel chaining is no longer possible when forwarding +a foreign promise. You will need to wrap a third-party promise with a Guzzle +promise in order to utilize wait and cancel functions with foreign promises. + + +## Event Loop Integration + +In order to keep the stack size constant, Guzzle promises are resolved +asynchronously using a task queue. When waiting on promises synchronously, the +task queue will be automatically run to ensure that the blocking promise and +any forwarded promises are resolved. When using promises asynchronously in an +event loop, you will need to run the task queue on each tick of the loop. If +you do not run the task queue, then promises will not be resolved. + +You can run the task queue using the `run()` method of the global task queue +instance. + +```php +// Get the global task queue +$queue = \GuzzleHttp\Promise\queue(); +$queue->run(); +``` + +For example, you could use Guzzle promises with React using a periodic timer: + +```php +$loop = React\EventLoop\Factory::create(); +$loop->addPeriodicTimer(0, [$queue, 'run']); +``` + +*TODO*: Perhaps adding a `futureTick()` on each tick would be faster? + + +# Implementation notes + + +## Promise resolution and chaining is handled iteratively + +By shuffling pending handlers from one owner to another, promises are +resolved iteratively, allowing for "infinite" then chaining. + +```php +then(function ($v) { + // The stack size remains constant (a good thing) + echo xdebug_get_stack_depth() . ', '; + return $v + 1; + }); +} + +$parent->resolve(0); +var_dump($p->wait()); // int(1000) + +``` + +When a promise is fulfilled or rejected with a non-promise value, the promise +then takes ownership of the handlers of each child promise and delivers values +down the chain without using recursion. + +When a promise is resolved with another promise, the original promise transfers +all of its pending handlers to the new promise. When the new promise is +eventually resolved, all of the pending handlers are delivered the forwarded +value. + + +## A promise is the deferred. + +Some promise libraries implement promises using a deferred object to represent +a computation and a promise object to represent the delivery of the result of +the computation. This is a nice separation of computation and delivery because +consumers of the promise cannot modify the value that will be eventually +delivered. + +One side effect of being able to implement promise resolution and chaining +iteratively is that you need to be able for one promise to reach into the state +of another promise to shuffle around ownership of handlers. In order to achieve +this without making the handlers of a promise publicly mutable, a promise is +also the deferred value, allowing promises of the same parent class to reach +into and modify the private properties of promises of the same type. While this +does allow consumers of the value to modify the resolution or rejection of the +deferred, it is a small price to pay for keeping the stack size constant. + +```php +$promise = new Promise(); +$promise->then(function ($value) { echo $value; }); +// The promise is the deferred value, so you can deliver a value to it. +$promise->resolve('foo'); +// prints "foo" +``` diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/composer.json b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/composer.json new file mode 100644 index 00000000..30e5626a --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/composer.json @@ -0,0 +1,38 @@ +{ + "name": "guzzlehttp\/promises", + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https:\/\/github.com\/mtdowling" + } + ], + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit\/phpunit": "^4.0" + }, + "autoload": { + "psr-4": { + "_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\": "src\/" + }, + "files": [ + "src\/functions_include.php" + ] + }, + "scripts": { + "test": "vendor\/bin\/phpunit", + "test-ci": "vendor\/bin\/phpunit --coverage-text" + }, + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + } +} \ No newline at end of file diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/AggregateException.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/AggregateException.php new file mode 100644 index 00000000..204882d6 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/AggregateException.php @@ -0,0 +1,14 @@ +then(function ($v) { echo $v; }); + * + * @param callable $generatorFn Generator function to wrap into a promise. + * + * @return Promise + * @link https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration + */ +final class Coroutine implements \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface +{ + /** + * @var PromiseInterface|null + */ + private $currentPromise; + /** + * @var Generator + */ + private $generator; + /** + * @var Promise + */ + private $result; + public function __construct(callable $generatorFn) + { + $this->generator = $generatorFn(); + $this->result = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise(function () { + while (isset($this->currentPromise)) { + $this->currentPromise->wait(); + } + }); + $this->nextCoroutine($this->generator->current()); + } + public function then(callable $onFulfilled = null, callable $onRejected = null) + { + return $this->result->then($onFulfilled, $onRejected); + } + public function otherwise(callable $onRejected) + { + return $this->result->otherwise($onRejected); + } + public function wait($unwrap = \true) + { + return $this->result->wait($unwrap); + } + public function getState() + { + return $this->result->getState(); + } + public function resolve($value) + { + $this->result->resolve($value); + } + public function reject($reason) + { + $this->result->reject($reason); + } + public function cancel() + { + $this->currentPromise->cancel(); + $this->result->cancel(); + } + private function nextCoroutine($yielded) + { + $this->currentPromise = promise_for($yielded)->then([$this, '_handleSuccess'], [$this, '_handleFailure']); + } + /** + * @internal + */ + public function _handleSuccess($value) + { + unset($this->currentPromise); + try { + $next = $this->generator->send($value); + if ($this->generator->valid()) { + $this->nextCoroutine($next); + } else { + $this->result->resolve($value); + } + } catch (\Exception $exception) { + $this->result->reject($exception); + } catch (\Throwable $throwable) { + $this->result->reject($throwable); + } + } + /** + * @internal + */ + public function _handleFailure($reason) + { + unset($this->currentPromise); + try { + $nextYield = $this->generator->throw(exception_for($reason)); + // The throw was caught, so keep iterating on the coroutine + $this->nextCoroutine($nextYield); + } catch (\Exception $exception) { + $this->result->reject($exception); + } catch (\Throwable $throwable) { + $this->result->reject($throwable); + } + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/EachPromise.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/EachPromise.php new file mode 100644 index 00000000..914b5925 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/EachPromise.php @@ -0,0 +1,190 @@ +iterable = iter_for($iterable); + if (isset($config['concurrency'])) { + $this->concurrency = $config['concurrency']; + } + if (isset($config['fulfilled'])) { + $this->onFulfilled = $config['fulfilled']; + } + if (isset($config['rejected'])) { + $this->onRejected = $config['rejected']; + } + } + public function promise() + { + if ($this->aggregate) { + return $this->aggregate; + } + try { + $this->createPromise(); + $this->iterable->rewind(); + $this->refillPending(); + } catch (\Throwable $e) { + $this->aggregate->reject($e); + } catch (\Exception $e) { + $this->aggregate->reject($e); + } + return $this->aggregate; + } + private function createPromise() + { + $this->mutex = \false; + $this->aggregate = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise(function () { + \reset($this->pending); + if (empty($this->pending) && !$this->iterable->valid()) { + $this->aggregate->resolve(null); + return; + } + // Consume a potentially fluctuating list of promises while + // ensuring that indexes are maintained (precluding array_shift). + while ($promise = \current($this->pending)) { + \next($this->pending); + $promise->wait(); + if ($this->aggregate->getState() !== \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::PENDING) { + return; + } + } + }); + // Clear the references when the promise is resolved. + $clearFn = function () { + $this->iterable = $this->concurrency = $this->pending = null; + $this->onFulfilled = $this->onRejected = null; + }; + $this->aggregate->then($clearFn, $clearFn); + } + private function refillPending() + { + if (!$this->concurrency) { + // Add all pending promises. + while ($this->addPending() && $this->advanceIterator()) { + } + return; + } + // Add only up to N pending promises. + $concurrency = \is_callable($this->concurrency) ? \call_user_func($this->concurrency, \count($this->pending)) : $this->concurrency; + $concurrency = \max($concurrency - \count($this->pending), 0); + // Concurrency may be set to 0 to disallow new promises. + if (!$concurrency) { + return; + } + // Add the first pending promise. + $this->addPending(); + // Note this is special handling for concurrency=1 so that we do + // not advance the iterator after adding the first promise. This + // helps work around issues with generators that might not have the + // next value to yield until promise callbacks are called. + while (--$concurrency && $this->advanceIterator() && $this->addPending()) { + } + } + private function addPending() + { + if (!$this->iterable || !$this->iterable->valid()) { + return \false; + } + $promise = promise_for($this->iterable->current()); + $idx = $this->iterable->key(); + $this->pending[$idx] = $promise->then(function ($value) use($idx) { + if ($this->onFulfilled) { + \call_user_func($this->onFulfilled, $value, $idx, $this->aggregate); + } + $this->step($idx); + }, function ($reason) use($idx) { + if ($this->onRejected) { + \call_user_func($this->onRejected, $reason, $idx, $this->aggregate); + } + $this->step($idx); + }); + return \true; + } + private function advanceIterator() + { + // Place a lock on the iterator so that we ensure to not recurse, + // preventing fatal generator errors. + if ($this->mutex) { + return \false; + } + $this->mutex = \true; + try { + $this->iterable->next(); + $this->mutex = \false; + return \true; + } catch (\Throwable $e) { + $this->aggregate->reject($e); + $this->mutex = \false; + return \false; + } catch (\Exception $e) { + $this->aggregate->reject($e); + $this->mutex = \false; + return \false; + } + } + private function step($idx) + { + // If the promise was already resolved, then ignore this step. + if ($this->aggregate->getState() !== \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::PENDING) { + return; + } + unset($this->pending[$idx]); + // Only refill pending promises if we are not locked, preventing the + // EachPromise to recursively invoke the provided iterator, which + // cause a fatal error: "Cannot resume an already running generator" + if ($this->advanceIterator() && !$this->checkIfFinished()) { + // Add more pending promises if possible. + $this->refillPending(); + } + } + private function checkIfFinished() + { + if (!$this->pending && !$this->iterable->valid()) { + // Resolve the promise if there's nothing left to do. + $this->aggregate->resolve(null); + return \true; + } + return \false; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/FulfilledPromise.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/FulfilledPromise.php new file mode 100644 index 00000000..d176a911 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/FulfilledPromise.php @@ -0,0 +1,69 @@ +value = $value; + } + public function then(callable $onFulfilled = null, callable $onRejected = null) + { + // Return itself if there is no onFulfilled function. + if (!$onFulfilled) { + return $this; + } + $queue = queue(); + $p = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise([$queue, 'run']); + $value = $this->value; + $queue->add(static function () use($p, $value, $onFulfilled) { + if ($p->getState() === self::PENDING) { + try { + $p->resolve($onFulfilled($value)); + } catch (\Throwable $e) { + $p->reject($e); + } catch (\Exception $e) { + $p->reject($e); + } + } + }); + return $p; + } + public function otherwise(callable $onRejected) + { + return $this->then(null, $onRejected); + } + public function wait($unwrap = \true, $defaultDelivery = null) + { + return $unwrap ? $this->value : null; + } + public function getState() + { + return self::FULFILLED; + } + public function resolve($value) + { + if ($value !== $this->value) { + throw new \LogicException("Cannot resolve a fulfilled promise"); + } + } + public function reject($reason) + { + throw new \LogicException("Cannot reject a fulfilled promise"); + } + public function cancel() + { + // pass + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/Promise.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/Promise.php new file mode 100644 index 00000000..75254f86 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/Promise.php @@ -0,0 +1,231 @@ +waitFn = $waitFn; + $this->cancelFn = $cancelFn; + } + public function then(callable $onFulfilled = null, callable $onRejected = null) + { + if ($this->state === self::PENDING) { + $p = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise(null, [$this, 'cancel']); + $this->handlers[] = [$p, $onFulfilled, $onRejected]; + $p->waitList = $this->waitList; + $p->waitList[] = $this; + return $p; + } + // Return a fulfilled promise and immediately invoke any callbacks. + if ($this->state === self::FULFILLED) { + return $onFulfilled ? promise_for($this->result)->then($onFulfilled) : promise_for($this->result); + } + // It's either cancelled or rejected, so return a rejected promise + // and immediately invoke any callbacks. + $rejection = rejection_for($this->result); + return $onRejected ? $rejection->then(null, $onRejected) : $rejection; + } + public function otherwise(callable $onRejected) + { + return $this->then(null, $onRejected); + } + public function wait($unwrap = \true) + { + $this->waitIfPending(); + $inner = $this->result instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface ? $this->result->wait($unwrap) : $this->result; + if ($unwrap) { + if ($this->result instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface || $this->state === self::FULFILLED) { + return $inner; + } else { + // It's rejected so "unwrap" and throw an exception. + throw exception_for($inner); + } + } + } + public function getState() + { + return $this->state; + } + public function cancel() + { + if ($this->state !== self::PENDING) { + return; + } + $this->waitFn = $this->waitList = null; + if ($this->cancelFn) { + $fn = $this->cancelFn; + $this->cancelFn = null; + try { + $fn(); + } catch (\Throwable $e) { + $this->reject($e); + } catch (\Exception $e) { + $this->reject($e); + } + } + // Reject the promise only if it wasn't rejected in a then callback. + if ($this->state === self::PENDING) { + $this->reject(new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\CancellationException('Promise has been cancelled')); + } + } + public function resolve($value) + { + $this->settle(self::FULFILLED, $value); + } + public function reject($reason) + { + $this->settle(self::REJECTED, $reason); + } + private function settle($state, $value) + { + if ($this->state !== self::PENDING) { + // Ignore calls with the same resolution. + if ($state === $this->state && $value === $this->result) { + return; + } + throw $this->state === $state ? new \LogicException("The promise is already {$state}.") : new \LogicException("Cannot change a {$this->state} promise to {$state}"); + } + if ($value === $this) { + throw new \LogicException('Cannot fulfill or reject a promise with itself'); + } + // Clear out the state of the promise but stash the handlers. + $this->state = $state; + $this->result = $value; + $handlers = $this->handlers; + $this->handlers = null; + $this->waitList = $this->waitFn = null; + $this->cancelFn = null; + if (!$handlers) { + return; + } + // If the value was not a settled promise or a thenable, then resolve + // it in the task queue using the correct ID. + if (!\method_exists($value, 'then')) { + $id = $state === self::FULFILLED ? 1 : 2; + // It's a success, so resolve the handlers in the queue. + queue()->add(static function () use($id, $value, $handlers) { + foreach ($handlers as $handler) { + self::callHandler($id, $value, $handler); + } + }); + } elseif ($value instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise && $value->getState() === self::PENDING) { + // We can just merge our handlers onto the next promise. + $value->handlers = \array_merge($value->handlers, $handlers); + } else { + // Resolve the handlers when the forwarded promise is resolved. + $value->then(static function ($value) use($handlers) { + foreach ($handlers as $handler) { + self::callHandler(1, $value, $handler); + } + }, static function ($reason) use($handlers) { + foreach ($handlers as $handler) { + self::callHandler(2, $reason, $handler); + } + }); + } + } + /** + * Call a stack of handlers using a specific callback index and value. + * + * @param int $index 1 (resolve) or 2 (reject). + * @param mixed $value Value to pass to the callback. + * @param array $handler Array of handler data (promise and callbacks). + * + * @return array Returns the next group to resolve. + */ + private static function callHandler($index, $value, array $handler) + { + /** @var PromiseInterface $promise */ + $promise = $handler[0]; + // The promise may have been cancelled or resolved before placing + // this thunk in the queue. + if ($promise->getState() !== self::PENDING) { + return; + } + try { + if (isset($handler[$index])) { + $promise->resolve($handler[$index]($value)); + } elseif ($index === 1) { + // Forward resolution values as-is. + $promise->resolve($value); + } else { + // Forward rejections down the chain. + $promise->reject($value); + } + } catch (\Throwable $reason) { + $promise->reject($reason); + } catch (\Exception $reason) { + $promise->reject($reason); + } + } + private function waitIfPending() + { + if ($this->state !== self::PENDING) { + return; + } elseif ($this->waitFn) { + $this->invokeWaitFn(); + } elseif ($this->waitList) { + $this->invokeWaitList(); + } else { + // If there's not wait function, then reject the promise. + $this->reject('Cannot wait on a promise that has ' . 'no internal wait function. You must provide a wait ' . 'function when constructing the promise to be able to ' . 'wait on a promise.'); + } + queue()->run(); + if ($this->state === self::PENDING) { + $this->reject('Invoking the wait callback did not resolve the promise'); + } + } + private function invokeWaitFn() + { + try { + $wfn = $this->waitFn; + $this->waitFn = null; + $wfn(\true); + } catch (\Exception $reason) { + if ($this->state === self::PENDING) { + // The promise has not been resolved yet, so reject the promise + // with the exception. + $this->reject($reason); + } else { + // The promise was already resolved, so there's a problem in + // the application. + throw $reason; + } + } + } + private function invokeWaitList() + { + $waitList = $this->waitList; + $this->waitList = null; + foreach ($waitList as $result) { + while (\true) { + $result->waitIfPending(); + if ($result->result instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise) { + $result = $result->result; + } else { + if ($result->result instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface) { + $result->result->wait(\false); + } + break; + } + } + } + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/PromiseInterface.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/PromiseInterface.php new file mode 100644 index 00000000..3a2af089 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/PromiseInterface.php @@ -0,0 +1,84 @@ +reason = $reason; + } + public function then(callable $onFulfilled = null, callable $onRejected = null) + { + // If there's no onRejected callback then just return self. + if (!$onRejected) { + return $this; + } + $queue = queue(); + $reason = $this->reason; + $p = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise([$queue, 'run']); + $queue->add(static function () use($p, $reason, $onRejected) { + if ($p->getState() === self::PENDING) { + try { + // Return a resolved promise if onRejected does not throw. + $p->resolve($onRejected($reason)); + } catch (\Throwable $e) { + // onRejected threw, so return a rejected promise. + $p->reject($e); + } catch (\Exception $e) { + // onRejected threw, so return a rejected promise. + $p->reject($e); + } + } + }); + return $p; + } + public function otherwise(callable $onRejected) + { + return $this->then(null, $onRejected); + } + public function wait($unwrap = \true, $defaultDelivery = null) + { + if ($unwrap) { + throw exception_for($this->reason); + } + } + public function getState() + { + return self::REJECTED; + } + public function resolve($value) + { + throw new \LogicException("Cannot resolve a rejected promise"); + } + public function reject($reason) + { + if ($reason !== $this->reason) { + throw new \LogicException("Cannot reject a rejected promise"); + } + } + public function cancel() + { + // pass + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/RejectionException.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/RejectionException.php new file mode 100644 index 00000000..f03dfe1b --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/RejectionException.php @@ -0,0 +1,40 @@ +reason = $reason; + $message = 'The promise was rejected'; + if ($description) { + $message .= ' with reason: ' . $description; + } elseif (\is_string($reason) || \is_object($reason) && \method_exists($reason, '__toString')) { + $message .= ' with reason: ' . $this->reason; + } elseif ($reason instanceof \JsonSerializable) { + $message .= ' with reason: ' . \json_encode($this->reason, \JSON_PRETTY_PRINT); + } + parent::__construct($message); + } + /** + * Returns the rejection reason. + * + * @return mixed + */ + public function getReason() + { + return $this->reason; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueue.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueue.php new file mode 100644 index 00000000..bd277ba7 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueue.php @@ -0,0 +1,62 @@ +run(); + */ +class TaskQueue implements \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\TaskQueueInterface +{ + private $enableShutdown = \true; + private $queue = []; + public function __construct($withShutdown = \true) + { + if ($withShutdown) { + \register_shutdown_function(function () { + if ($this->enableShutdown) { + // Only run the tasks if an E_ERROR didn't occur. + $err = \error_get_last(); + if (!$err || $err['type'] ^ \E_ERROR) { + $this->run(); + } + } + }); + } + } + public function isEmpty() + { + return !$this->queue; + } + public function add(callable $task) + { + $this->queue[] = $task; + } + public function run() + { + /** @var callable $task */ + while ($task = \array_shift($this->queue)) { + $task(); + } + } + /** + * The task queue will be run and exhausted by default when the process + * exits IFF the exit is not the result of a PHP E_ERROR error. + * + * You can disable running the automatic shutdown of the queue by calling + * this function. If you disable the task queue shutdown process, then you + * MUST either run the task queue (as a result of running your event loop + * or manually using the run() method) or wait on each outstanding promise. + * + * Note: This shutdown will occur before any destructors are triggered. + */ + public function disableShutdown() + { + $this->enableShutdown = \false; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueueInterface.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueueInterface.php new file mode 100644 index 00000000..35727718 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueueInterface.php @@ -0,0 +1,24 @@ + + * while ($eventLoop->isRunning()) { + * GuzzleHttp\Promise\queue()->run(); + * } + *
+ * + * @param TaskQueueInterface $assign Optionally specify a new queue instance. + * + * @return TaskQueueInterface + */ +function queue(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\TaskQueueInterface $assign = null) +{ + static $queue; + if ($assign) { + $queue = $assign; + } elseif (!$queue) { + $queue = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\TaskQueue(); + } + return $queue; +} +/** + * Adds a function to run in the task queue when it is next `run()` and returns + * a promise that is fulfilled or rejected with the result. + * + * @param callable $task Task function to run. + * + * @return PromiseInterface + */ +function task(callable $task) +{ + $queue = queue(); + $promise = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise([$queue, 'run']); + $queue->add(function () use($task, $promise) { + try { + $promise->resolve($task()); + } catch (\Throwable $e) { + $promise->reject($e); + } catch (\Exception $e) { + $promise->reject($e); + } + }); + return $promise; +} +/** + * Creates a promise for a value if the value is not a promise. + * + * @param mixed $value Promise or value. + * + * @return PromiseInterface + */ +function promise_for($value) +{ + if ($value instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface) { + return $value; + } + // Return a Guzzle promise that shadows the given promise. + if (\method_exists($value, 'then')) { + $wfn = \method_exists($value, 'wait') ? [$value, 'wait'] : null; + $cfn = \method_exists($value, 'cancel') ? [$value, 'cancel'] : null; + $promise = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise($wfn, $cfn); + $value->then([$promise, 'resolve'], [$promise, 'reject']); + return $promise; + } + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\FulfilledPromise($value); +} +/** + * Creates a rejected promise for a reason if the reason is not a promise. If + * the provided reason is a promise, then it is returned as-is. + * + * @param mixed $reason Promise or reason. + * + * @return PromiseInterface + */ +function rejection_for($reason) +{ + if ($reason instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface) { + return $reason; + } + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\RejectedPromise($reason); +} +/** + * Create an exception for a rejected promise value. + * + * @param mixed $reason + * + * @return \Exception|\Throwable + */ +function exception_for($reason) +{ + return $reason instanceof \Exception || $reason instanceof \Throwable ? $reason : new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\RejectionException($reason); +} +/** + * Returns an iterator for the given value. + * + * @param mixed $value + * + * @return \Iterator + */ +function iter_for($value) +{ + if ($value instanceof \Iterator) { + return $value; + } elseif (\is_array($value)) { + return new \ArrayIterator($value); + } else { + return new \ArrayIterator([$value]); + } +} +/** + * Synchronously waits on a promise to resolve and returns an inspection state + * array. + * + * Returns a state associative array containing a "state" key mapping to a + * valid promise state. If the state of the promise is "fulfilled", the array + * will contain a "value" key mapping to the fulfilled value of the promise. If + * the promise is rejected, the array will contain a "reason" key mapping to + * the rejection reason of the promise. + * + * @param PromiseInterface $promise Promise or value. + * + * @return array + */ +function inspect(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $promise) +{ + try { + return ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::FULFILLED, 'value' => $promise->wait()]; + } catch (\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\RejectionException $e) { + return ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $e->getReason()]; + } catch (\Throwable $e) { + return ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $e]; + } catch (\Exception $e) { + return ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $e]; + } +} +/** + * Waits on all of the provided promises, but does not unwrap rejected promises + * as thrown exception. + * + * Returns an array of inspection state arrays. + * + * @param PromiseInterface[] $promises Traversable of promises to wait upon. + * + * @return array + * @see GuzzleHttp\Promise\inspect for the inspection state array format. + */ +function inspect_all($promises) +{ + $results = []; + foreach ($promises as $key => $promise) { + $results[$key] = inspect($promise); + } + return $results; +} +/** + * Waits on all of the provided promises and returns the fulfilled values. + * + * Returns an array that contains the value of each promise (in the same order + * the promises were provided). An exception is thrown if any of the promises + * are rejected. + * + * @param mixed $promises Iterable of PromiseInterface objects to wait on. + * + * @return array + * @throws \Exception on error + * @throws \Throwable on error in PHP >=7 + */ +function unwrap($promises) +{ + $results = []; + foreach ($promises as $key => $promise) { + $results[$key] = $promise->wait(); + } + return $results; +} +/** + * Given an array of promises, return a promise that is fulfilled when all the + * items in the array are fulfilled. + * + * The promise's fulfillment value is an array with fulfillment values at + * respective positions to the original array. If any promise in the array + * rejects, the returned promise is rejected with the rejection reason. + * + * @param mixed $promises Promises or values. + * + * @return PromiseInterface + */ +function all($promises) +{ + $results = []; + return \each($promises, function ($value, $idx) use(&$results) { + $results[$idx] = $value; + }, function ($reason, $idx, \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise $aggregate) { + $aggregate->reject($reason); + })->then(function () use(&$results) { + \ksort($results); + return $results; + }); +} +/** + * Initiate a competitive race between multiple promises or values (values will + * become immediately fulfilled promises). + * + * When count amount of promises have been fulfilled, the returned promise is + * fulfilled with an array that contains the fulfillment values of the winners + * in order of resolution. + * + * This prommise is rejected with a {@see GuzzleHttp\Promise\AggregateException} + * if the number of fulfilled promises is less than the desired $count. + * + * @param int $count Total number of promises. + * @param mixed $promises Promises or values. + * + * @return PromiseInterface + */ +function some($count, $promises) +{ + $results = []; + $rejections = []; + return \each($promises, function ($value, $idx, \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $p) use(&$results, $count) { + if ($p->getState() !== \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::PENDING) { + return; + } + $results[$idx] = $value; + if (\count($results) >= $count) { + $p->resolve(null); + } + }, function ($reason) use(&$rejections) { + $rejections[] = $reason; + })->then(function () use(&$results, &$rejections, $count) { + if (\count($results) !== $count) { + throw new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\AggregateException('Not enough promises to fulfill count', $rejections); + } + \ksort($results); + return \array_values($results); + }); +} +/** + * Like some(), with 1 as count. However, if the promise fulfills, the + * fulfillment value is not an array of 1 but the value directly. + * + * @param mixed $promises Promises or values. + * + * @return PromiseInterface + */ +function any($promises) +{ + return some(1, $promises)->then(function ($values) { + return $values[0]; + }); +} +/** + * Returns a promise that is fulfilled when all of the provided promises have + * been fulfilled or rejected. + * + * The returned promise is fulfilled with an array of inspection state arrays. + * + * @param mixed $promises Promises or values. + * + * @return PromiseInterface + * @see GuzzleHttp\Promise\inspect for the inspection state array format. + */ +function settle($promises) +{ + $results = []; + return \each($promises, function ($value, $idx) use(&$results) { + $results[$idx] = ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::FULFILLED, 'value' => $value]; + }, function ($reason, $idx) use(&$results) { + $results[$idx] = ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $reason]; + })->then(function () use(&$results) { + \ksort($results); + return $results; + }); +} +/** + * Given an iterator that yields promises or values, returns a promise that is + * fulfilled with a null value when the iterator has been consumed or the + * aggregate promise has been fulfilled or rejected. + * + * $onFulfilled is a function that accepts the fulfilled value, iterator + * index, and the aggregate promise. The callback can invoke any necessary side + * effects and choose to resolve or reject the aggregate promise if needed. + * + * $onRejected is a function that accepts the rejection reason, iterator + * index, and the aggregate promise. The callback can invoke any necessary side + * effects and choose to resolve or reject the aggregate promise if needed. + * + * @param mixed $iterable Iterator or array to iterate over. + * @param callable $onFulfilled + * @param callable $onRejected + * + * @return PromiseInterface + */ +function each($iterable, callable $onFulfilled = null, callable $onRejected = null) +{ + return (new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\EachPromise($iterable, ['fulfilled' => $onFulfilled, 'rejected' => $onRejected]))->promise(); +} +/** + * Like each, but only allows a certain number of outstanding promises at any + * given time. + * + * $concurrency may be an integer or a function that accepts the number of + * pending promises and returns a numeric concurrency limit value to allow for + * dynamic a concurrency size. + * + * @param mixed $iterable + * @param int|callable $concurrency + * @param callable $onFulfilled + * @param callable $onRejected + * + * @return PromiseInterface + */ +function each_limit($iterable, $concurrency, callable $onFulfilled = null, callable $onRejected = null) +{ + return (new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\EachPromise($iterable, ['fulfilled' => $onFulfilled, 'rejected' => $onRejected, 'concurrency' => $concurrency]))->promise(); +} +/** + * Like each_limit, but ensures that no promise in the given $iterable argument + * is rejected. If any promise is rejected, then the aggregate promise is + * rejected with the encountered rejection. + * + * @param mixed $iterable + * @param int|callable $concurrency + * @param callable $onFulfilled + * + * @return PromiseInterface + */ +function each_limit_all($iterable, $concurrency, callable $onFulfilled = null) +{ + return each_limit($iterable, $concurrency, $onFulfilled, function ($reason, $idx, \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $aggregate) { + $aggregate->reject($reason); + }); +} +/** + * Returns true if a promise is fulfilled. + * + * @param PromiseInterface $promise + * + * @return bool + */ +function is_fulfilled(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $promise) +{ + return $promise->getState() === \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::FULFILLED; +} +/** + * Returns true if a promise is rejected. + * + * @param PromiseInterface $promise + * + * @return bool + */ +function is_rejected(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $promise) +{ + return $promise->getState() === \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::REJECTED; +} +/** + * Returns true if a promise is fulfilled or rejected. + * + * @param PromiseInterface $promise + * + * @return bool + */ +function is_settled(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $promise) +{ + return $promise->getState() !== \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::PENDING; +} +/** + * @see Coroutine + * + * @param callable $generatorFn + * + * @return PromiseInterface + */ +function coroutine(callable $generatorFn) +{ + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Coroutine($generatorFn); +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/functions_include.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/functions_include.php new file mode 100644 index 00000000..d3aaf8fe --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/functions_include.php @@ -0,0 +1,8 @@ +withPath('foo')->withHost('example.com')` will throw an exception + because the path of a URI with an authority must start with a slash "/" or be empty + - `(new Uri())->withScheme('http')` will return `'http://localhost'` +* Fix compatibility of URIs with `file` scheme and empty host. +* Added common URI utility methods based on RFC 3986 (see documentation in the readme): + - `Uri::isDefaultPort` + - `Uri::isAbsolute` + - `Uri::isNetworkPathReference` + - `Uri::isAbsolutePathReference` + - `Uri::isRelativePathReference` + - `Uri::isSameDocumentReference` + - `Uri::composeComponents` + - `UriNormalizer::normalize` + - `UriNormalizer::isEquivalent` + - `UriResolver::relativize` +* Deprecated `Uri::resolve` in favor of `UriResolver::resolve` +* Deprecated `Uri::removeDotSegments` in favor of `UriResolver::removeDotSegments` + +## 1.3.1 - 2016-06-25 + +* Fix `Uri::__toString` for network path references, e.g. `//example.org`. +* Fix missing lowercase normalization for host. +* Fix handling of URI components in case they are `'0'` in a lot of places, + e.g. as a user info password. +* Fix `Uri::withAddedHeader` to correctly merge headers with different case. +* Fix trimming of header values in `Uri::withAddedHeader`. Header values may + be surrounded by whitespace which should be ignored according to RFC 7230 + Section 3.2.4. This does not apply to header names. +* Fix `Uri::withAddedHeader` with an array of header values. +* Fix `Uri::resolve` when base path has no slash and handling of fragment. +* Fix handling of encoding in `Uri::with(out)QueryValue` so one can pass the + key/value both in encoded as well as decoded form to those methods. This is + consistent with withPath, withQuery etc. +* Fix `ServerRequest::withoutAttribute` when attribute value is null. + +## 1.3.0 - 2016-04-13 + +* Added remaining interfaces needed for full PSR7 compatibility + (ServerRequestInterface, UploadedFileInterface, etc.). +* Added support for stream_for from scalars. +* Can now extend Uri. +* Fixed a bug in validating request methods by making it more permissive. + +## 1.2.3 - 2016-02-18 + +* Fixed support in `GuzzleHttp\Psr7\CachingStream` for seeking forward on remote + streams, which can sometimes return fewer bytes than requested with `fread`. +* Fixed handling of gzipped responses with FNAME headers. + +## 1.2.2 - 2016-01-22 + +* Added support for URIs without any authority. +* Added support for HTTP 451 'Unavailable For Legal Reasons.' +* Added support for using '0' as a filename. +* Added support for including non-standard ports in Host headers. + +## 1.2.1 - 2015-11-02 + +* Now supporting negative offsets when seeking to SEEK_END. + +## 1.2.0 - 2015-08-15 + +* Body as `"0"` is now properly added to a response. +* Now allowing forward seeking in CachingStream. +* Now properly parsing HTTP requests that contain proxy targets in + `parse_request`. +* functions.php is now conditionally required. +* user-info is no longer dropped when resolving URIs. + +## 1.1.0 - 2015-06-24 + +* URIs can now be relative. +* `multipart/form-data` headers are now overridden case-insensitively. +* URI paths no longer encode the following characters because they are allowed + in URIs: "(", ")", "*", "!", "'" +* A port is no longer added to a URI when the scheme is missing and no port is + present. + +## 1.0.0 - 2015-05-19 + +Initial release. + +Currently unsupported: + +- `Psr\Http\Message\ServerRequestInterface` +- `Psr\Http\Message\UploadedFileInterface` diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/LICENSE b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/LICENSE new file mode 100644 index 00000000..581d95f9 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015 Michael Dowling, https://github.com/mtdowling + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/README.md b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/README.md new file mode 100644 index 00000000..16499358 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/README.md @@ -0,0 +1,739 @@ +# PSR-7 Message Implementation + +This repository contains a full [PSR-7](http://www.php-fig.org/psr/psr-7/) +message implementation, several stream decorators, and some helpful +functionality like query string parsing. + + +[![Build Status](https://travis-ci.org/guzzle/psr7.svg?branch=master)](https://travis-ci.org/guzzle/psr7) + + +# Stream implementation + +This package comes with a number of stream implementations and stream +decorators. + + +## AppendStream + +`GuzzleHttp\Psr7\AppendStream` + +Reads from multiple streams, one after the other. + +```php +use GuzzleHttp\Psr7; + +$a = Psr7\stream_for('abc, '); +$b = Psr7\stream_for('123.'); +$composed = new Psr7\AppendStream([$a, $b]); + +$composed->addStream(Psr7\stream_for(' Above all listen to me')); + +echo $composed; // abc, 123. Above all listen to me. +``` + + +## BufferStream + +`GuzzleHttp\Psr7\BufferStream` + +Provides a buffer stream that can be written to fill a buffer, and read +from to remove bytes from the buffer. + +This stream returns a "hwm" metadata value that tells upstream consumers +what the configured high water mark of the stream is, or the maximum +preferred size of the buffer. + +```php +use GuzzleHttp\Psr7; + +// When more than 1024 bytes are in the buffer, it will begin returning +// false to writes. This is an indication that writers should slow down. +$buffer = new Psr7\BufferStream(1024); +``` + + +## CachingStream + +The CachingStream is used to allow seeking over previously read bytes on +non-seekable streams. This can be useful when transferring a non-seekable +entity body fails due to needing to rewind the stream (for example, resulting +from a redirect). Data that is read from the remote stream will be buffered in +a PHP temp stream so that previously read bytes are cached first in memory, +then on disk. + +```php +use GuzzleHttp\Psr7; + +$original = Psr7\stream_for(fopen('http://www.google.com', 'r')); +$stream = new Psr7\CachingStream($original); + +$stream->read(1024); +echo $stream->tell(); +// 1024 + +$stream->seek(0); +echo $stream->tell(); +// 0 +``` + + +## DroppingStream + +`GuzzleHttp\Psr7\DroppingStream` + +Stream decorator that begins dropping data once the size of the underlying +stream becomes too full. + +```php +use GuzzleHttp\Psr7; + +// Create an empty stream +$stream = Psr7\stream_for(); + +// Start dropping data when the stream has more than 10 bytes +$dropping = new Psr7\DroppingStream($stream, 10); + +$dropping->write('01234567890123456789'); +echo $stream; // 0123456789 +``` + + +## FnStream + +`GuzzleHttp\Psr7\FnStream` + +Compose stream implementations based on a hash of functions. + +Allows for easy testing and extension of a provided stream without needing +to create a concrete class for a simple extension point. + +```php + +use GuzzleHttp\Psr7; + +$stream = Psr7\stream_for('hi'); +$fnStream = Psr7\FnStream::decorate($stream, [ + 'rewind' => function () use ($stream) { + echo 'About to rewind - '; + $stream->rewind(); + echo 'rewound!'; + } +]); + +$fnStream->rewind(); +// Outputs: About to rewind - rewound! +``` + + +## InflateStream + +`GuzzleHttp\Psr7\InflateStream` + +Uses PHP's zlib.inflate filter to inflate deflate or gzipped content. + +This stream decorator skips the first 10 bytes of the given stream to remove +the gzip header, converts the provided stream to a PHP stream resource, +then appends the zlib.inflate filter. The stream is then converted back +to a Guzzle stream resource to be used as a Guzzle stream. + + +## LazyOpenStream + +`GuzzleHttp\Psr7\LazyOpenStream` + +Lazily reads or writes to a file that is opened only after an IO operation +take place on the stream. + +```php +use GuzzleHttp\Psr7; + +$stream = new Psr7\LazyOpenStream('/path/to/file', 'r'); +// The file has not yet been opened... + +echo $stream->read(10); +// The file is opened and read from only when needed. +``` + + +## LimitStream + +`GuzzleHttp\Psr7\LimitStream` + +LimitStream can be used to read a subset or slice of an existing stream object. +This can be useful for breaking a large file into smaller pieces to be sent in +chunks (e.g. Amazon S3's multipart upload API). + +```php +use GuzzleHttp\Psr7; + +$original = Psr7\stream_for(fopen('/tmp/test.txt', 'r+')); +echo $original->getSize(); +// >>> 1048576 + +// Limit the size of the body to 1024 bytes and start reading from byte 2048 +$stream = new Psr7\LimitStream($original, 1024, 2048); +echo $stream->getSize(); +// >>> 1024 +echo $stream->tell(); +// >>> 0 +``` + + +## MultipartStream + +`GuzzleHttp\Psr7\MultipartStream` + +Stream that when read returns bytes for a streaming multipart or +multipart/form-data stream. + + +## NoSeekStream + +`GuzzleHttp\Psr7\NoSeekStream` + +NoSeekStream wraps a stream and does not allow seeking. + +```php +use GuzzleHttp\Psr7; + +$original = Psr7\stream_for('foo'); +$noSeek = new Psr7\NoSeekStream($original); + +echo $noSeek->read(3); +// foo +var_export($noSeek->isSeekable()); +// false +$noSeek->seek(0); +var_export($noSeek->read(3)); +// NULL +``` + + +## PumpStream + +`GuzzleHttp\Psr7\PumpStream` + +Provides a read only stream that pumps data from a PHP callable. + +When invoking the provided callable, the PumpStream will pass the amount of +data requested to read to the callable. The callable can choose to ignore +this value and return fewer or more bytes than requested. Any extra data +returned by the provided callable is buffered internally until drained using +the read() function of the PumpStream. The provided callable MUST return +false when there is no more data to read. + + +## Implementing stream decorators + +Creating a stream decorator is very easy thanks to the +`GuzzleHttp\Psr7\StreamDecoratorTrait`. This trait provides methods that +implement `Psr\Http\Message\StreamInterface` by proxying to an underlying +stream. Just `use` the `StreamDecoratorTrait` and implement your custom +methods. + +For example, let's say we wanted to call a specific function each time the last +byte is read from a stream. This could be implemented by overriding the +`read()` method. + +```php +use Psr\Http\Message\StreamInterface; +use GuzzleHttp\Psr7\StreamDecoratorTrait; + +class EofCallbackStream implements StreamInterface +{ + use StreamDecoratorTrait; + + private $callback; + + public function __construct(StreamInterface $stream, callable $cb) + { + $this->stream = $stream; + $this->callback = $cb; + } + + public function read($length) + { + $result = $this->stream->read($length); + + // Invoke the callback when EOF is hit. + if ($this->eof()) { + call_user_func($this->callback); + } + + return $result; + } +} +``` + +This decorator could be added to any existing stream and used like so: + +```php +use GuzzleHttp\Psr7; + +$original = Psr7\stream_for('foo'); + +$eofStream = new EofCallbackStream($original, function () { + echo 'EOF!'; +}); + +$eofStream->read(2); +$eofStream->read(1); +// echoes "EOF!" +$eofStream->seek(0); +$eofStream->read(3); +// echoes "EOF!" +``` + + +## PHP StreamWrapper + +You can use the `GuzzleHttp\Psr7\StreamWrapper` class if you need to use a +PSR-7 stream as a PHP stream resource. + +Use the `GuzzleHttp\Psr7\StreamWrapper::getResource()` method to create a PHP +stream from a PSR-7 stream. + +```php +use GuzzleHttp\Psr7\StreamWrapper; + +$stream = GuzzleHttp\Psr7\stream_for('hello!'); +$resource = StreamWrapper::getResource($stream); +echo fread($resource, 6); // outputs hello! +``` + + +# Function API + +There are various functions available under the `GuzzleHttp\Psr7` namespace. + + +## `function str` + +`function str(MessageInterface $message)` + +Returns the string representation of an HTTP message. + +```php +$request = new GuzzleHttp\Psr7\Request('GET', 'http://example.com'); +echo GuzzleHttp\Psr7\str($request); +``` + + +## `function uri_for` + +`function uri_for($uri)` + +This function accepts a string or `Psr\Http\Message\UriInterface` and returns a +UriInterface for the given value. If the value is already a `UriInterface`, it +is returned as-is. + +```php +$uri = GuzzleHttp\Psr7\uri_for('http://example.com'); +assert($uri === GuzzleHttp\Psr7\uri_for($uri)); +``` + + +## `function stream_for` + +`function stream_for($resource = '', array $options = [])` + +Create a new stream based on the input type. + +Options is an associative array that can contain the following keys: + +* - metadata: Array of custom metadata. +* - size: Size of the stream. + +This method accepts the following `$resource` types: + +- `Psr\Http\Message\StreamInterface`: Returns the value as-is. +- `string`: Creates a stream object that uses the given string as the contents. +- `resource`: Creates a stream object that wraps the given PHP stream resource. +- `Iterator`: If the provided value implements `Iterator`, then a read-only + stream object will be created that wraps the given iterable. Each time the + stream is read from, data from the iterator will fill a buffer and will be + continuously called until the buffer is equal to the requested read size. + Subsequent read calls will first read from the buffer and then call `next` + on the underlying iterator until it is exhausted. +- `object` with `__toString()`: If the object has the `__toString()` method, + the object will be cast to a string and then a stream will be returned that + uses the string value. +- `NULL`: When `null` is passed, an empty stream object is returned. +- `callable` When a callable is passed, a read-only stream object will be + created that invokes the given callable. The callable is invoked with the + number of suggested bytes to read. The callable can return any number of + bytes, but MUST return `false` when there is no more data to return. The + stream object that wraps the callable will invoke the callable until the + number of requested bytes are available. Any additional bytes will be + buffered and used in subsequent reads. + +```php +$stream = GuzzleHttp\Psr7\stream_for('foo'); +$stream = GuzzleHttp\Psr7\stream_for(fopen('/path/to/file', 'r')); + +$generator function ($bytes) { + for ($i = 0; $i < $bytes; $i++) { + yield ' '; + } +} + +$stream = GuzzleHttp\Psr7\stream_for($generator(100)); +``` + + +## `function parse_header` + +`function parse_header($header)` + +Parse an array of header values containing ";" separated data into an array of +associative arrays representing the header key value pair data of the header. +When a parameter does not contain a value, but just contains a key, this +function will inject a key with a '' string value. + + +## `function normalize_header` + +`function normalize_header($header)` + +Converts an array of header values that may contain comma separated headers +into an array of headers with no comma separated values. + + +## `function modify_request` + +`function modify_request(RequestInterface $request, array $changes)` + +Clone and modify a request with the given changes. This method is useful for +reducing the number of clones needed to mutate a message. + +The changes can be one of: + +- method: (string) Changes the HTTP method. +- set_headers: (array) Sets the given headers. +- remove_headers: (array) Remove the given headers. +- body: (mixed) Sets the given body. +- uri: (UriInterface) Set the URI. +- query: (string) Set the query string value of the URI. +- version: (string) Set the protocol version. + + +## `function rewind_body` + +`function rewind_body(MessageInterface $message)` + +Attempts to rewind a message body and throws an exception on failure. The body +of the message will only be rewound if a call to `tell()` returns a value other +than `0`. + + +## `function try_fopen` + +`function try_fopen($filename, $mode)` + +Safely opens a PHP stream resource using a filename. + +When fopen fails, PHP normally raises a warning. This function adds an error +handler that checks for errors and throws an exception instead. + + +## `function copy_to_string` + +`function copy_to_string(StreamInterface $stream, $maxLen = -1)` + +Copy the contents of a stream into a string until the given number of bytes +have been read. + + +## `function copy_to_stream` + +`function copy_to_stream(StreamInterface $source, StreamInterface $dest, $maxLen = -1)` + +Copy the contents of a stream into another stream until the given number of +bytes have been read. + + +## `function hash` + +`function hash(StreamInterface $stream, $algo, $rawOutput = false)` + +Calculate a hash of a Stream. This method reads the entire stream to calculate +a rolling hash (based on PHP's hash_init functions). + + +## `function readline` + +`function readline(StreamInterface $stream, $maxLength = null)` + +Read a line from the stream up to the maximum allowed buffer length. + + +## `function parse_request` + +`function parse_request($message)` + +Parses a request message string into a request object. + + +## `function parse_response` + +`function parse_response($message)` + +Parses a response message string into a response object. + + +## `function parse_query` + +`function parse_query($str, $urlEncoding = true)` + +Parse a query string into an associative array. + +If multiple values are found for the same key, the value of that key value pair +will become an array. This function does not parse nested PHP style arrays into +an associative array (e.g., `foo[a]=1&foo[b]=2` will be parsed into +`['foo[a]' => '1', 'foo[b]' => '2']`). + + +## `function build_query` + +`function build_query(array $params, $encoding = PHP_QUERY_RFC3986)` + +Build a query string from an array of key value pairs. + +This function can use the return value of parse_query() to build a query string. +This function does not modify the provided keys when an array is encountered +(like http_build_query would). + + +## `function mimetype_from_filename` + +`function mimetype_from_filename($filename)` + +Determines the mimetype of a file by looking at its extension. + + +## `function mimetype_from_extension` + +`function mimetype_from_extension($extension)` + +Maps a file extensions to a mimetype. + + +# Additional URI Methods + +Aside from the standard `Psr\Http\Message\UriInterface` implementation in form of the `GuzzleHttp\Psr7\Uri` class, +this library also provides additional functionality when working with URIs as static methods. + +## URI Types + +An instance of `Psr\Http\Message\UriInterface` can either be an absolute URI or a relative reference. +An absolute URI has a scheme. A relative reference is used to express a URI relative to another URI, +the base URI. Relative references can be divided into several forms according to +[RFC 3986 Section 4.2](https://tools.ietf.org/html/rfc3986#section-4.2): + +- network-path references, e.g. `//example.com/path` +- absolute-path references, e.g. `/path` +- relative-path references, e.g. `subpath` + +The following methods can be used to identify the type of the URI. + +### `GuzzleHttp\Psr7\Uri::isAbsolute` + +`public static function isAbsolute(UriInterface $uri): bool` + +Whether the URI is absolute, i.e. it has a scheme. + +### `GuzzleHttp\Psr7\Uri::isNetworkPathReference` + +`public static function isNetworkPathReference(UriInterface $uri): bool` + +Whether the URI is a network-path reference. A relative reference that begins with two slash characters is +termed an network-path reference. + +### `GuzzleHttp\Psr7\Uri::isAbsolutePathReference` + +`public static function isAbsolutePathReference(UriInterface $uri): bool` + +Whether the URI is a absolute-path reference. A relative reference that begins with a single slash character is +termed an absolute-path reference. + +### `GuzzleHttp\Psr7\Uri::isRelativePathReference` + +`public static function isRelativePathReference(UriInterface $uri): bool` + +Whether the URI is a relative-path reference. A relative reference that does not begin with a slash character is +termed a relative-path reference. + +### `GuzzleHttp\Psr7\Uri::isSameDocumentReference` + +`public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null): bool` + +Whether the URI is a same-document reference. A same-document reference refers to a URI that is, aside from its +fragment component, identical to the base URI. When no base URI is given, only an empty URI reference +(apart from its fragment) is considered a same-document reference. + +## URI Components + +Additional methods to work with URI components. + +### `GuzzleHttp\Psr7\Uri::isDefaultPort` + +`public static function isDefaultPort(UriInterface $uri): bool` + +Whether the URI has the default port of the current scheme. `Psr\Http\Message\UriInterface::getPort` may return null +or the standard port. This method can be used independently of the implementation. + +### `GuzzleHttp\Psr7\Uri::composeComponents` + +`public static function composeComponents($scheme, $authority, $path, $query, $fragment): string` + +Composes a URI reference string from its various components according to +[RFC 3986 Section 5.3](https://tools.ietf.org/html/rfc3986#section-5.3). Usually this method does not need to be called +manually but instead is used indirectly via `Psr\Http\Message\UriInterface::__toString`. + +### `GuzzleHttp\Psr7\Uri::fromParts` + +`public static function fromParts(array $parts): UriInterface` + +Creates a URI from a hash of [`parse_url`](http://php.net/manual/en/function.parse-url.php) components. + + +### `GuzzleHttp\Psr7\Uri::withQueryValue` + +`public static function withQueryValue(UriInterface $uri, $key, $value): UriInterface` + +Creates a new URI with a specific query string value. Any existing query string values that exactly match the +provided key are removed and replaced with the given key value pair. A value of null will set the query string +key without a value, e.g. "key" instead of "key=value". + + +### `GuzzleHttp\Psr7\Uri::withoutQueryValue` + +`public static function withoutQueryValue(UriInterface $uri, $key): UriInterface` + +Creates a new URI with a specific query string value removed. Any existing query string values that exactly match the +provided key are removed. + +## Reference Resolution + +`GuzzleHttp\Psr7\UriResolver` provides methods to resolve a URI reference in the context of a base URI according +to [RFC 3986 Section 5](https://tools.ietf.org/html/rfc3986#section-5). This is for example also what web browsers +do when resolving a link in a website based on the current request URI. + +### `GuzzleHttp\Psr7\UriResolver::resolve` + +`public static function resolve(UriInterface $base, UriInterface $rel): UriInterface` + +Converts the relative URI into a new URI that is resolved against the base URI. + +### `GuzzleHttp\Psr7\UriResolver::removeDotSegments` + +`public static function removeDotSegments(string $path): string` + +Removes dot segments from a path and returns the new path according to +[RFC 3986 Section 5.2.4](https://tools.ietf.org/html/rfc3986#section-5.2.4). + +### `GuzzleHttp\Psr7\UriResolver::relativize` + +`public static function relativize(UriInterface $base, UriInterface $target): UriInterface` + +Returns the target URI as a relative reference from the base URI. This method is the counterpart to resolve(): + +```php +(string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target)) +``` + +One use-case is to use the current request URI as base URI and then generate relative links in your documents +to reduce the document size or offer self-contained downloadable document archives. + +```php +$base = new Uri('http://example.com/a/b/'); +echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'. +echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'. +echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'. +echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'. +``` + +## Normalization and Comparison + +`GuzzleHttp\Psr7\UriNormalizer` provides methods to normalize and compare URIs according to +[RFC 3986 Section 6](https://tools.ietf.org/html/rfc3986#section-6). + +### `GuzzleHttp\Psr7\UriNormalizer::normalize` + +`public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NORMALIZATIONS): UriInterface` + +Returns a normalized URI. The scheme and host component are already normalized to lowercase per PSR-7 UriInterface. +This methods adds additional normalizations that can be configured with the `$flags` parameter which is a bitmask +of normalizations to apply. The following normalizations are available: + +- `UriNormalizer::PRESERVING_NORMALIZATIONS` + + Default normalizations which only include the ones that preserve semantics. + +- `UriNormalizer::CAPITALIZE_PERCENT_ENCODING` + + All letters within a percent-encoding triplet (e.g., "%3A") are case-insensitive, and should be capitalized. + + Example: `http://example.org/a%c2%b1b` → `http://example.org/a%C2%B1b` + +- `UriNormalizer::DECODE_UNRESERVED_CHARACTERS` + + Decodes percent-encoded octets of unreserved characters. For consistency, percent-encoded octets in the ranges of + ALPHA (%41–%5A and %61–%7A), DIGIT (%30–%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should + not be created by URI producers and, when found in a URI, should be decoded to their corresponding unreserved + characters by URI normalizers. + + Example: `http://example.org/%7Eusern%61me/` → `http://example.org/~username/` + +- `UriNormalizer::CONVERT_EMPTY_PATH` + + Converts the empty path to "/" for http and https URIs. + + Example: `http://example.org` → `http://example.org/` + +- `UriNormalizer::REMOVE_DEFAULT_HOST` + + Removes the default host of the given URI scheme from the URI. Only the "file" scheme defines the default host + "localhost". All of `file:/myfile`, `file:///myfile`, and `file://localhost/myfile` are equivalent according to + RFC 3986. + + Example: `file://localhost/myfile` → `file:///myfile` + +- `UriNormalizer::REMOVE_DEFAULT_PORT` + + Removes the default port of the given URI scheme from the URI. + + Example: `http://example.org:80/` → `http://example.org/` + +- `UriNormalizer::REMOVE_DOT_SEGMENTS` + + Removes unnecessary dot-segments. Dot-segments in relative-path references are not removed as it would + change the semantics of the URI reference. + + Example: `http://example.org/../a/b/../c/./d.html` → `http://example.org/a/c/d.html` + +- `UriNormalizer::REMOVE_DUPLICATE_SLASHES` + + Paths which include two or more adjacent slashes are converted to one. Webservers usually ignore duplicate slashes + and treat those URIs equivalent. But in theory those URIs do not need to be equivalent. So this normalization + may change the semantics. Encoded slashes (%2F) are not removed. + + Example: `http://example.org//foo///bar.html` → `http://example.org/foo/bar.html` + +- `UriNormalizer::SORT_QUERY_PARAMETERS` + + Sort query parameters with their values in alphabetical order. However, the order of parameters in a URI may be + significant (this is not defined by the standard). So this normalization is not safe and may change the semantics + of the URI. + + Example: `?lang=en&article=fred` → `?article=fred&lang=en` + +### `GuzzleHttp\Psr7\UriNormalizer::isEquivalent` + +`public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS): bool` + +Whether two URIs can be considered equivalent. Both URIs are normalized automatically before comparison with the given +`$normalizations` bitmask. The method also accepts relative URI references and returns true when they are equivalent. +This of course assumes they will be resolved against the same base URI. If this is not the case, determination of +equivalence or difference of relative references does not mean anything. diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/composer.json b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/composer.json new file mode 100644 index 00000000..bbf32b59 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/composer.json @@ -0,0 +1,49 @@ +{ + "name": "guzzlehttp\/psr7", + "type": "library", + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "request", + "response", + "message", + "stream", + "http", + "uri", + "url" + ], + "license": "MIT", + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https:\/\/github.com\/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https:\/\/github.com\/Tobion" + } + ], + "require": { + "php": ">=5.4.0", + "psr\/http-message": "~1.0" + }, + "require-dev": { + "phpunit\/phpunit": "~4.0" + }, + "provide": { + "psr\/http-message-implementation": "1.0" + }, + "autoload": { + "psr-4": { + "_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\": "src\/" + }, + "files": [ + "src\/functions_include.php" + ] + }, + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + } +} \ No newline at end of file diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/AppendStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/AppendStream.php new file mode 100644 index 00000000..d08833ec --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/AppendStream.php @@ -0,0 +1,196 @@ +addStream($stream); + } + } + public function __toString() + { + try { + $this->rewind(); + return $this->getContents(); + } catch (\Exception $e) { + return ''; + } + } + /** + * Add a stream to the AppendStream + * + * @param StreamInterface $stream Stream to append. Must be readable. + * + * @throws \InvalidArgumentException if the stream is not readable + */ + public function addStream(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream) + { + if (!$stream->isReadable()) { + throw new \InvalidArgumentException('Each stream must be readable'); + } + // The stream is only seekable if all streams are seekable + if (!$stream->isSeekable()) { + $this->seekable = \false; + } + $this->streams[] = $stream; + } + public function getContents() + { + return copy_to_string($this); + } + /** + * Closes each attached stream. + * + * {@inheritdoc} + */ + public function close() + { + $this->pos = $this->current = 0; + foreach ($this->streams as $stream) { + $stream->close(); + } + $this->streams = []; + } + /** + * Detaches each attached stream + * + * {@inheritdoc} + */ + public function detach() + { + $this->close(); + $this->detached = \true; + } + public function tell() + { + return $this->pos; + } + /** + * Tries to calculate the size by adding the size of each stream. + * + * If any of the streams do not return a valid number, then the size of the + * append stream cannot be determined and null is returned. + * + * {@inheritdoc} + */ + public function getSize() + { + $size = 0; + foreach ($this->streams as $stream) { + $s = $stream->getSize(); + if ($s === null) { + return null; + } + $size += $s; + } + return $size; + } + public function eof() + { + return !$this->streams || $this->current >= \count($this->streams) - 1 && $this->streams[$this->current]->eof(); + } + public function rewind() + { + $this->seek(0); + } + /** + * Attempts to seek to the given position. Only supports SEEK_SET. + * + * {@inheritdoc} + */ + public function seek($offset, $whence = \SEEK_SET) + { + if (!$this->seekable) { + throw new \RuntimeException('This AppendStream is not seekable'); + } elseif ($whence !== \SEEK_SET) { + throw new \RuntimeException('The AppendStream can only seek with SEEK_SET'); + } + $this->pos = $this->current = 0; + // Rewind each stream + foreach ($this->streams as $i => $stream) { + try { + $stream->rewind(); + } catch (\Exception $e) { + throw new \RuntimeException('Unable to seek stream ' . $i . ' of the AppendStream', 0, $e); + } + } + // Seek to the actual position by reading from each stream + while ($this->pos < $offset && !$this->eof()) { + $result = $this->read(\min(8096, $offset - $this->pos)); + if ($result === '') { + break; + } + } + } + /** + * Reads from all of the appended streams until the length is met or EOF. + * + * {@inheritdoc} + */ + public function read($length) + { + $buffer = ''; + $total = \count($this->streams) - 1; + $remaining = $length; + $progressToNext = \false; + while ($remaining > 0) { + // Progress to the next stream if needed. + if ($progressToNext || $this->streams[$this->current]->eof()) { + $progressToNext = \false; + if ($this->current === $total) { + break; + } + $this->current++; + } + $result = $this->streams[$this->current]->read($remaining); + // Using a loose comparison here to match on '', false, and null + if ($result == null) { + $progressToNext = \true; + continue; + } + $buffer .= $result; + $remaining = $length - \strlen($buffer); + } + $this->pos += \strlen($buffer); + return $buffer; + } + public function isReadable() + { + return \true; + } + public function isWritable() + { + return \false; + } + public function isSeekable() + { + return $this->seekable; + } + public function write($string) + { + throw new \RuntimeException('Cannot write to an AppendStream'); + } + public function getMetadata($key = null) + { + return $key ? null : []; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/BufferStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/BufferStream.php new file mode 100644 index 00000000..d782e09b --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/BufferStream.php @@ -0,0 +1,115 @@ +hwm = $hwm; + } + public function __toString() + { + return $this->getContents(); + } + public function getContents() + { + $buffer = $this->buffer; + $this->buffer = ''; + return $buffer; + } + public function close() + { + $this->buffer = ''; + } + public function detach() + { + $this->close(); + } + public function getSize() + { + return \strlen($this->buffer); + } + public function isReadable() + { + return \true; + } + public function isWritable() + { + return \true; + } + public function isSeekable() + { + return \false; + } + public function rewind() + { + $this->seek(0); + } + public function seek($offset, $whence = \SEEK_SET) + { + throw new \RuntimeException('Cannot seek a BufferStream'); + } + public function eof() + { + return \strlen($this->buffer) === 0; + } + public function tell() + { + throw new \RuntimeException('Cannot determine the position of a BufferStream'); + } + /** + * Reads data from the buffer. + */ + public function read($length) + { + $currentLength = \strlen($this->buffer); + if ($length >= $currentLength) { + // No need to slice the buffer because we don't have enough data. + $result = $this->buffer; + $this->buffer = ''; + } else { + // Slice up the result to provide a subset of the buffer. + $result = \substr($this->buffer, 0, $length); + $this->buffer = \substr($this->buffer, $length); + } + return $result; + } + /** + * Writes data to the buffer. + */ + public function write($string) + { + $this->buffer .= $string; + // TODO: What should happen here? + if (\strlen($this->buffer) >= $this->hwm) { + return \false; + } + return \strlen($string); + } + public function getMetadata($key = null) + { + if ($key == 'hwm') { + return $this->hwm; + } + return $key ? null : []; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/CachingStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/CachingStream.php new file mode 100644 index 00000000..cf831132 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/CachingStream.php @@ -0,0 +1,115 @@ +remoteStream = $stream; + $this->stream = $target ?: new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream(\fopen('php://temp', 'r+')); + } + public function getSize() + { + return \max($this->stream->getSize(), $this->remoteStream->getSize()); + } + public function rewind() + { + $this->seek(0); + } + public function seek($offset, $whence = \SEEK_SET) + { + if ($whence == \SEEK_SET) { + $byte = $offset; + } elseif ($whence == \SEEK_CUR) { + $byte = $offset + $this->tell(); + } elseif ($whence == \SEEK_END) { + $size = $this->remoteStream->getSize(); + if ($size === null) { + $size = $this->cacheEntireStream(); + } + $byte = $size + $offset; + } else { + throw new \InvalidArgumentException('Invalid whence'); + } + $diff = $byte - $this->stream->getSize(); + if ($diff > 0) { + // Read the remoteStream until we have read in at least the amount + // of bytes requested, or we reach the end of the file. + while ($diff > 0 && !$this->remoteStream->eof()) { + $this->read($diff); + $diff = $byte - $this->stream->getSize(); + } + } else { + // We can just do a normal seek since we've already seen this byte. + $this->stream->seek($byte); + } + } + public function read($length) + { + // Perform a regular read on any previously read data from the buffer + $data = $this->stream->read($length); + $remaining = $length - \strlen($data); + // More data was requested so read from the remote stream + if ($remaining) { + // If data was written to the buffer in a position that would have + // been filled from the remote stream, then we must skip bytes on + // the remote stream to emulate overwriting bytes from that + // position. This mimics the behavior of other PHP stream wrappers. + $remoteData = $this->remoteStream->read($remaining + $this->skipReadBytes); + if ($this->skipReadBytes) { + $len = \strlen($remoteData); + $remoteData = \substr($remoteData, $this->skipReadBytes); + $this->skipReadBytes = \max(0, $this->skipReadBytes - $len); + } + $data .= $remoteData; + $this->stream->write($remoteData); + } + return $data; + } + public function write($string) + { + // When appending to the end of the currently read stream, you'll want + // to skip bytes from being read from the remote stream to emulate + // other stream wrappers. Basically replacing bytes of data of a fixed + // length. + $overflow = \strlen($string) + $this->tell() - $this->remoteStream->tell(); + if ($overflow > 0) { + $this->skipReadBytes += $overflow; + } + return $this->stream->write($string); + } + public function eof() + { + return $this->stream->eof() && $this->remoteStream->eof(); + } + /** + * Close both the remote stream and buffer stream + */ + public function close() + { + $this->remoteStream->close() && $this->stream->close(); + } + private function cacheEntireStream() + { + $target = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\FnStream(['write' => 'strlen']); + copy_to_stream($this, $target); + return $this->tell(); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/DroppingStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/DroppingStream.php new file mode 100644 index 00000000..c12c2a96 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/DroppingStream.php @@ -0,0 +1,36 @@ +stream = $stream; + $this->maxLength = $maxLength; + } + public function write($string) + { + $diff = $this->maxLength - $this->stream->getSize(); + // Begin returning 0 when the underlying stream is too large. + if ($diff <= 0) { + return 0; + } + // Write the stream or a subset of the stream if needed. + if (\strlen($string) < $diff) { + return $this->stream->write($string); + } + return $this->stream->write(\substr($string, 0, $diff)); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/FnStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/FnStream.php new file mode 100644 index 00000000..f0fe4dcb --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/FnStream.php @@ -0,0 +1,124 @@ +methods = $methods; + // Create the functions on the class + foreach ($methods as $name => $fn) { + $this->{'_fn_' . $name} = $fn; + } + } + /** + * Lazily determine which methods are not implemented. + * @throws \BadMethodCallException + */ + public function __get($name) + { + throw new \BadMethodCallException(\str_replace('_fn_', '', $name) . '() is not implemented in the FnStream'); + } + /** + * The close method is called on the underlying stream only if possible. + */ + public function __destruct() + { + if (isset($this->_fn_close)) { + \call_user_func($this->_fn_close); + } + } + /** + * Adds custom functionality to an underlying stream by intercepting + * specific method calls. + * + * @param StreamInterface $stream Stream to decorate + * @param array $methods Hash of method name to a closure + * + * @return FnStream + */ + public static function decorate(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, array $methods) + { + // If any of the required methods were not provided, then simply + // proxy to the decorated stream. + foreach (\array_diff(self::$slots, \array_keys($methods)) as $diff) { + $methods[$diff] = [$stream, $diff]; + } + return new self($methods); + } + public function __toString() + { + return \call_user_func($this->_fn___toString); + } + public function close() + { + return \call_user_func($this->_fn_close); + } + public function detach() + { + return \call_user_func($this->_fn_detach); + } + public function getSize() + { + return \call_user_func($this->_fn_getSize); + } + public function tell() + { + return \call_user_func($this->_fn_tell); + } + public function eof() + { + return \call_user_func($this->_fn_eof); + } + public function isSeekable() + { + return \call_user_func($this->_fn_isSeekable); + } + public function rewind() + { + \call_user_func($this->_fn_rewind); + } + public function seek($offset, $whence = \SEEK_SET) + { + \call_user_func($this->_fn_seek, $offset, $whence); + } + public function isWritable() + { + return \call_user_func($this->_fn_isWritable); + } + public function write($string) + { + return \call_user_func($this->_fn_write, $string); + } + public function isReadable() + { + return \call_user_func($this->_fn_isReadable); + } + public function read($length) + { + return \call_user_func($this->_fn_read, $length); + } + public function getContents() + { + return \call_user_func($this->_fn_getContents); + } + public function getMetadata($key = null) + { + return \call_user_func($this->_fn_getMetadata, $key); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/InflateStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/InflateStream.php new file mode 100644 index 00000000..d8a86d61 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/InflateStream.php @@ -0,0 +1,48 @@ +read(10); + $filenameHeaderLength = $this->getLengthOfPossibleFilenameHeader($stream, $header); + // Skip the header, that is 10 + length of filename + 1 (nil) bytes + $stream = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LimitStream($stream, -1, 10 + $filenameHeaderLength); + $resource = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\StreamWrapper::getResource($stream); + \stream_filter_append($resource, 'zlib.inflate', \STREAM_FILTER_READ); + $this->stream = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream($resource); + } + /** + * @param StreamInterface $stream + * @param $header + * @return int + */ + private function getLengthOfPossibleFilenameHeader(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, $header) + { + $filename_header_length = 0; + if (\substr(\bin2hex($header), 6, 2) === '08') { + // we have a filename, read until nil + $filename_header_length = 1; + while ($stream->read(1) !== \chr(0)) { + $filename_header_length++; + } + } + return $filename_header_length; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LazyOpenStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LazyOpenStream.php new file mode 100644 index 00000000..5eef2dfb --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LazyOpenStream.php @@ -0,0 +1,35 @@ +filename = $filename; + $this->mode = $mode; + } + /** + * Creates the underlying stream lazily when required. + * + * @return StreamInterface + */ + protected function createStream() + { + return stream_for(try_fopen($this->filename, $this->mode)); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LimitStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LimitStream.php new file mode 100644 index 00000000..0665e9f5 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LimitStream.php @@ -0,0 +1,128 @@ +stream = $stream; + $this->setLimit($limit); + $this->setOffset($offset); + } + public function eof() + { + // Always return true if the underlying stream is EOF + if ($this->stream->eof()) { + return \true; + } + // No limit and the underlying stream is not at EOF + if ($this->limit == -1) { + return \false; + } + return $this->stream->tell() >= $this->offset + $this->limit; + } + /** + * Returns the size of the limited subset of data + * {@inheritdoc} + */ + public function getSize() + { + if (null === ($length = $this->stream->getSize())) { + return null; + } elseif ($this->limit == -1) { + return $length - $this->offset; + } else { + return \min($this->limit, $length - $this->offset); + } + } + /** + * Allow for a bounded seek on the read limited stream + * {@inheritdoc} + */ + public function seek($offset, $whence = \SEEK_SET) + { + if ($whence !== \SEEK_SET || $offset < 0) { + throw new \RuntimeException(\sprintf('Cannot seek to offset % with whence %s', $offset, $whence)); + } + $offset += $this->offset; + if ($this->limit !== -1) { + if ($offset > $this->offset + $this->limit) { + $offset = $this->offset + $this->limit; + } + } + $this->stream->seek($offset); + } + /** + * Give a relative tell() + * {@inheritdoc} + */ + public function tell() + { + return $this->stream->tell() - $this->offset; + } + /** + * Set the offset to start limiting from + * + * @param int $offset Offset to seek to and begin byte limiting from + * + * @throws \RuntimeException if the stream cannot be seeked. + */ + public function setOffset($offset) + { + $current = $this->stream->tell(); + if ($current !== $offset) { + // If the stream cannot seek to the offset position, then read to it + if ($this->stream->isSeekable()) { + $this->stream->seek($offset); + } elseif ($current > $offset) { + throw new \RuntimeException("Could not seek to stream offset {$offset}"); + } else { + $this->stream->read($offset - $current); + } + } + $this->offset = $offset; + } + /** + * Set the limit of bytes that the decorator allows to be read from the + * stream. + * + * @param int $limit Number of bytes to allow to be read from the stream. + * Use -1 for no limit. + */ + public function setLimit($limit) + { + $this->limit = $limit; + } + public function read($length) + { + if ($this->limit == -1) { + return $this->stream->read($length); + } + // Check if the current position is less than the total allowed + // bytes + original offset + $remaining = $this->offset + $this->limit - $this->stream->tell(); + if ($remaining > 0) { + // Only return the amount of requested data, ensuring that the byte + // limit is not exceeded + return $this->stream->read(\min($remaining, $length)); + } + return ''; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MessageTrait.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MessageTrait.php new file mode 100644 index 00000000..fe9fbe4d --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MessageTrait.php @@ -0,0 +1,150 @@ + array of values */ + private $headers = []; + /** @var array Map of lowercase header name => original name at registration */ + private $headerNames = []; + /** @var string */ + private $protocol = '1.1'; + /** @var StreamInterface */ + private $stream; + public function getProtocolVersion() + { + return $this->protocol; + } + public function withProtocolVersion($version) + { + if ($this->protocol === $version) { + return $this; + } + $new = clone $this; + $new->protocol = $version; + return $new; + } + public function getHeaders() + { + return $this->headers; + } + public function hasHeader($header) + { + return isset($this->headerNames[\strtolower($header)]); + } + public function getHeader($header) + { + $header = \strtolower($header); + if (!isset($this->headerNames[$header])) { + return []; + } + $header = $this->headerNames[$header]; + return $this->headers[$header]; + } + public function getHeaderLine($header) + { + return \implode(', ', $this->getHeader($header)); + } + public function withHeader($header, $value) + { + if (!\is_array($value)) { + $value = [$value]; + } + $value = $this->trimHeaderValues($value); + $normalized = \strtolower($header); + $new = clone $this; + if (isset($new->headerNames[$normalized])) { + unset($new->headers[$new->headerNames[$normalized]]); + } + $new->headerNames[$normalized] = $header; + $new->headers[$header] = $value; + return $new; + } + public function withAddedHeader($header, $value) + { + if (!\is_array($value)) { + $value = [$value]; + } + $value = $this->trimHeaderValues($value); + $normalized = \strtolower($header); + $new = clone $this; + if (isset($new->headerNames[$normalized])) { + $header = $this->headerNames[$normalized]; + $new->headers[$header] = \array_merge($this->headers[$header], $value); + } else { + $new->headerNames[$normalized] = $header; + $new->headers[$header] = $value; + } + return $new; + } + public function withoutHeader($header) + { + $normalized = \strtolower($header); + if (!isset($this->headerNames[$normalized])) { + return $this; + } + $header = $this->headerNames[$normalized]; + $new = clone $this; + unset($new->headers[$header], $new->headerNames[$normalized]); + return $new; + } + public function getBody() + { + if (!$this->stream) { + $this->stream = stream_for(''); + } + return $this->stream; + } + public function withBody(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $body) + { + if ($body === $this->stream) { + return $this; + } + $new = clone $this; + $new->stream = $body; + return $new; + } + private function setHeaders(array $headers) + { + $this->headerNames = $this->headers = []; + foreach ($headers as $header => $value) { + if (!\is_array($value)) { + $value = [$value]; + } + $value = $this->trimHeaderValues($value); + $normalized = \strtolower($header); + if (isset($this->headerNames[$normalized])) { + $header = $this->headerNames[$normalized]; + $this->headers[$header] = \array_merge($this->headers[$header], $value); + } else { + $this->headerNames[$normalized] = $header; + $this->headers[$header] = $value; + } + } + } + /** + * Trims whitespace from the header values. + * + * Spaces and tabs ought to be excluded by parsers when extracting the field value from a header field. + * + * header-field = field-name ":" OWS field-value OWS + * OWS = *( SP / HTAB ) + * + * @param string[] $values Header values + * + * @return string[] Trimmed header values + * + * @see https://tools.ietf.org/html/rfc7230#section-3.2.4 + */ + private function trimHeaderValues(array $values) + { + return \array_map(function ($value) { + return \trim($value, " \t"); + }, $values); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MultipartStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MultipartStream.php new file mode 100644 index 00000000..e6ac81bf --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MultipartStream.php @@ -0,0 +1,123 @@ +boundary = $boundary ?: \sha1(\uniqid('', \true)); + $this->stream = $this->createStream($elements); + } + /** + * Get the boundary + * + * @return string + */ + public function getBoundary() + { + return $this->boundary; + } + public function isWritable() + { + return \false; + } + /** + * Get the headers needed before transferring the content of a POST file + */ + private function getHeaders(array $headers) + { + $str = ''; + foreach ($headers as $key => $value) { + $str .= "{$key}: {$value}\r\n"; + } + return "--{$this->boundary}\r\n" . \trim($str) . "\r\n\r\n"; + } + /** + * Create the aggregate stream that will be used to upload the POST data + */ + protected function createStream(array $elements) + { + $stream = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\AppendStream(); + foreach ($elements as $element) { + $this->addElement($stream, $element); + } + // Add the trailing boundary with CRLF + $stream->addStream(stream_for("--{$this->boundary}--\r\n")); + return $stream; + } + private function addElement(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\AppendStream $stream, array $element) + { + foreach (['contents', 'name'] as $key) { + if (!\array_key_exists($key, $element)) { + throw new \InvalidArgumentException("A '{$key}' key is required"); + } + } + $element['contents'] = stream_for($element['contents']); + if (empty($element['filename'])) { + $uri = $element['contents']->getMetadata('uri'); + if (\substr($uri, 0, 6) !== 'php://') { + $element['filename'] = $uri; + } + } + list($body, $headers) = $this->createElement($element['name'], $element['contents'], isset($element['filename']) ? $element['filename'] : null, isset($element['headers']) ? $element['headers'] : []); + $stream->addStream(stream_for($this->getHeaders($headers))); + $stream->addStream($body); + $stream->addStream(stream_for("\r\n")); + } + /** + * @return array + */ + private function createElement($name, \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, $filename, array $headers) + { + // Set a default content-disposition header if one was no provided + $disposition = $this->getHeader($headers, 'content-disposition'); + if (!$disposition) { + $headers['Content-Disposition'] = $filename === '0' || $filename ? \sprintf('form-data; name="%s"; filename="%s"', $name, \basename($filename)) : "form-data; name=\"{$name}\""; + } + // Set a default content-length header if one was no provided + $length = $this->getHeader($headers, 'content-length'); + if (!$length) { + if ($length = $stream->getSize()) { + $headers['Content-Length'] = (string) $length; + } + } + // Set a default Content-Type if one was not supplied + $type = $this->getHeader($headers, 'content-type'); + if (!$type && ($filename === '0' || $filename)) { + if ($type = mimetype_from_filename($filename)) { + $headers['Content-Type'] = $type; + } + } + return [$stream, $headers]; + } + private function getHeader(array $headers, $key) + { + $lowercaseHeader = \strtolower($key); + foreach ($headers as $k => $v) { + if (\strtolower($k) === $lowercaseHeader) { + return $v; + } + } + return null; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/NoSeekStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/NoSeekStream.php new file mode 100644 index 00000000..c20dced9 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/NoSeekStream.php @@ -0,0 +1,20 @@ +source = $source; + $this->size = isset($options['size']) ? $options['size'] : null; + $this->metadata = isset($options['metadata']) ? $options['metadata'] : []; + $this->buffer = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\BufferStream(); + } + public function __toString() + { + try { + return copy_to_string($this); + } catch (\Exception $e) { + return ''; + } + } + public function close() + { + $this->detach(); + } + public function detach() + { + $this->tellPos = \false; + $this->source = null; + } + public function getSize() + { + return $this->size; + } + public function tell() + { + return $this->tellPos; + } + public function eof() + { + return !$this->source; + } + public function isSeekable() + { + return \false; + } + public function rewind() + { + $this->seek(0); + } + public function seek($offset, $whence = \SEEK_SET) + { + throw new \RuntimeException('Cannot seek a PumpStream'); + } + public function isWritable() + { + return \false; + } + public function write($string) + { + throw new \RuntimeException('Cannot write to a PumpStream'); + } + public function isReadable() + { + return \true; + } + public function read($length) + { + $data = $this->buffer->read($length); + $readLen = \strlen($data); + $this->tellPos += $readLen; + $remaining = $length - $readLen; + if ($remaining) { + $this->pump($remaining); + $data .= $this->buffer->read($remaining); + $this->tellPos += \strlen($data) - $readLen; + } + return $data; + } + public function getContents() + { + $result = ''; + while (!$this->eof()) { + $result .= $this->read(1000000); + } + return $result; + } + public function getMetadata($key = null) + { + if (!$key) { + return $this->metadata; + } + return isset($this->metadata[$key]) ? $this->metadata[$key] : null; + } + private function pump($length) + { + if ($this->source) { + do { + $data = \call_user_func($this->source, $length); + if ($data === \false || $data === null) { + $this->source = null; + return; + } + $this->buffer->write($data); + $length -= \strlen($data); + } while ($length > 0); + } + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Request.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Request.php new file mode 100644 index 00000000..51f1b9ab --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Request.php @@ -0,0 +1,112 @@ +method = \strtoupper($method); + $this->uri = $uri; + $this->setHeaders($headers); + $this->protocol = $version; + if (!$this->hasHeader('Host')) { + $this->updateHostFromUri(); + } + if ($body !== '' && $body !== null) { + $this->stream = stream_for($body); + } + } + public function getRequestTarget() + { + if ($this->requestTarget !== null) { + return $this->requestTarget; + } + $target = $this->uri->getPath(); + if ($target == '') { + $target = '/'; + } + if ($this->uri->getQuery() != '') { + $target .= '?' . $this->uri->getQuery(); + } + return $target; + } + public function withRequestTarget($requestTarget) + { + if (\preg_match('#\\s#', $requestTarget)) { + throw new \InvalidArgumentException('Invalid request target provided; cannot contain whitespace'); + } + $new = clone $this; + $new->requestTarget = $requestTarget; + return $new; + } + public function getMethod() + { + return $this->method; + } + public function withMethod($method) + { + $new = clone $this; + $new->method = \strtoupper($method); + return $new; + } + public function getUri() + { + return $this->uri; + } + public function withUri(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri, $preserveHost = \false) + { + if ($uri === $this->uri) { + return $this; + } + $new = clone $this; + $new->uri = $uri; + if (!$preserveHost) { + $new->updateHostFromUri(); + } + return $new; + } + private function updateHostFromUri() + { + $host = $this->uri->getHost(); + if ($host == '') { + return; + } + if (($port = $this->uri->getPort()) !== null) { + $host .= ':' . $port; + } + if (isset($this->headerNames['host'])) { + $header = $this->headerNames['host']; + } else { + $header = 'Host'; + $this->headerNames['host'] = 'Host'; + } + // Ensure Host is the first header. + // See: http://tools.ietf.org/html/rfc7230#section-5.4 + $this->headers = [$header => [$host]] + $this->headers; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Response.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Response.php new file mode 100644 index 00000000..359b6425 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Response.php @@ -0,0 +1,58 @@ + 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-status', 208 => 'Already Reported', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 306 => 'Switch Proxy', 307 => 'Temporary Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Time-out', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Large', 415 => 'Unsupported Media Type', 416 => 'Requested range not satisfiable', 417 => 'Expectation Failed', 418 => 'I\'m a teapot', 422 => 'Unprocessable Entity', 423 => 'Locked', 424 => 'Failed Dependency', 425 => 'Unordered Collection', 426 => 'Upgrade Required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 451 => 'Unavailable For Legal Reasons', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Time-out', 505 => 'HTTP Version not supported', 506 => 'Variant Also Negotiates', 507 => 'Insufficient Storage', 508 => 'Loop Detected', 511 => 'Network Authentication Required']; + /** @var string */ + private $reasonPhrase = ''; + /** @var int */ + private $statusCode = 200; + /** + * @param int $status Status code + * @param array $headers Response headers + * @param string|null|resource|StreamInterface $body Response body + * @param string $version Protocol version + * @param string|null $reason Reason phrase (when empty a default will be used based on the status code) + */ + public function __construct($status = 200, array $headers = [], $body = null, $version = '1.1', $reason = null) + { + $this->statusCode = (int) $status; + if ($body !== '' && $body !== null) { + $this->stream = stream_for($body); + } + $this->setHeaders($headers); + if ($reason == '' && isset(self::$phrases[$this->statusCode])) { + $this->reasonPhrase = self::$phrases[$this->statusCode]; + } else { + $this->reasonPhrase = (string) $reason; + } + $this->protocol = $version; + } + public function getStatusCode() + { + return $this->statusCode; + } + public function getReasonPhrase() + { + return $this->reasonPhrase; + } + public function withStatus($code, $reasonPhrase = '') + { + $new = clone $this; + $new->statusCode = (int) $code; + if ($reasonPhrase == '' && isset(self::$phrases[$new->statusCode])) { + $reasonPhrase = self::$phrases[$new->statusCode]; + } + $new->reasonPhrase = $reasonPhrase; + return $new; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/ServerRequest.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/ServerRequest.php new file mode 100644 index 00000000..82b02fb8 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/ServerRequest.php @@ -0,0 +1,289 @@ +serverParams = $serverParams; + parent::__construct($method, $uri, $headers, $body, $version); + } + /** + * Return an UploadedFile instance array. + * + * @param array $files A array which respect $_FILES structure + * @throws InvalidArgumentException for unrecognized values + * @return array + */ + public static function normalizeFiles(array $files) + { + $normalized = []; + foreach ($files as $key => $value) { + if ($value instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\UploadedFileInterface) { + $normalized[$key] = $value; + } elseif (\is_array($value) && isset($value['tmp_name'])) { + $normalized[$key] = self::createUploadedFileFromSpec($value); + } elseif (\is_array($value)) { + $normalized[$key] = self::normalizeFiles($value); + continue; + } else { + throw new \InvalidArgumentException('Invalid value in files specification'); + } + } + return $normalized; + } + /** + * Create and return an UploadedFile instance from a $_FILES specification. + * + * If the specification represents an array of values, this method will + * delegate to normalizeNestedFileSpec() and return that return value. + * + * @param array $value $_FILES struct + * @return array|UploadedFileInterface + */ + private static function createUploadedFileFromSpec(array $value) + { + if (\is_array($value['tmp_name'])) { + return self::normalizeNestedFileSpec($value); + } + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UploadedFile($value['tmp_name'], (int) $value['size'], (int) $value['error'], $value['name'], $value['type']); + } + /** + * Normalize an array of file specifications. + * + * Loops through all nested files and returns a normalized array of + * UploadedFileInterface instances. + * + * @param array $files + * @return UploadedFileInterface[] + */ + private static function normalizeNestedFileSpec(array $files = []) + { + $normalizedFiles = []; + foreach (\array_keys($files['tmp_name']) as $key) { + $spec = ['tmp_name' => $files['tmp_name'][$key], 'size' => $files['size'][$key], 'error' => $files['error'][$key], 'name' => $files['name'][$key], 'type' => $files['type'][$key]]; + $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec); + } + return $normalizedFiles; + } + /** + * Return a ServerRequest populated with superglobals: + * $_GET + * $_POST + * $_COOKIE + * $_FILES + * $_SERVER + * + * @return ServerRequestInterface + */ + public static function fromGlobals() + { + $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET'; + $headers = \function_exists('_PhpScoper5b87e821469bb\\getallheaders') ? getallheaders() : []; + $uri = self::getUriFromGlobals(); + $body = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LazyOpenStream('php://input', 'r+'); + $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? \str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1'; + $serverRequest = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER); + return $serverRequest->withCookieParams($_COOKIE)->withQueryParams($_GET)->withParsedBody($_POST)->withUploadedFiles(self::normalizeFiles($_FILES)); + } + /** + * Get a Uri populated with values from $_SERVER. + * + * @return UriInterface + */ + public static function getUriFromGlobals() + { + $uri = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri(''); + $uri = $uri->withScheme(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http'); + $hasPort = \false; + if (isset($_SERVER['HTTP_HOST'])) { + $hostHeaderParts = \explode(':', $_SERVER['HTTP_HOST']); + $uri = $uri->withHost($hostHeaderParts[0]); + if (isset($hostHeaderParts[1])) { + $hasPort = \true; + $uri = $uri->withPort($hostHeaderParts[1]); + } + } elseif (isset($_SERVER['SERVER_NAME'])) { + $uri = $uri->withHost($_SERVER['SERVER_NAME']); + } elseif (isset($_SERVER['SERVER_ADDR'])) { + $uri = $uri->withHost($_SERVER['SERVER_ADDR']); + } + if (!$hasPort && isset($_SERVER['SERVER_PORT'])) { + $uri = $uri->withPort($_SERVER['SERVER_PORT']); + } + $hasQuery = \false; + if (isset($_SERVER['REQUEST_URI'])) { + $requestUriParts = \explode('?', $_SERVER['REQUEST_URI']); + $uri = $uri->withPath($requestUriParts[0]); + if (isset($requestUriParts[1])) { + $hasQuery = \true; + $uri = $uri->withQuery($requestUriParts[1]); + } + } + if (!$hasQuery && isset($_SERVER['QUERY_STRING'])) { + $uri = $uri->withQuery($_SERVER['QUERY_STRING']); + } + return $uri; + } + /** + * {@inheritdoc} + */ + public function getServerParams() + { + return $this->serverParams; + } + /** + * {@inheritdoc} + */ + public function getUploadedFiles() + { + return $this->uploadedFiles; + } + /** + * {@inheritdoc} + */ + public function withUploadedFiles(array $uploadedFiles) + { + $new = clone $this; + $new->uploadedFiles = $uploadedFiles; + return $new; + } + /** + * {@inheritdoc} + */ + public function getCookieParams() + { + return $this->cookieParams; + } + /** + * {@inheritdoc} + */ + public function withCookieParams(array $cookies) + { + $new = clone $this; + $new->cookieParams = $cookies; + return $new; + } + /** + * {@inheritdoc} + */ + public function getQueryParams() + { + return $this->queryParams; + } + /** + * {@inheritdoc} + */ + public function withQueryParams(array $query) + { + $new = clone $this; + $new->queryParams = $query; + return $new; + } + /** + * {@inheritdoc} + */ + public function getParsedBody() + { + return $this->parsedBody; + } + /** + * {@inheritdoc} + */ + public function withParsedBody($data) + { + $new = clone $this; + $new->parsedBody = $data; + return $new; + } + /** + * {@inheritdoc} + */ + public function getAttributes() + { + return $this->attributes; + } + /** + * {@inheritdoc} + */ + public function getAttribute($attribute, $default = null) + { + if (\false === \array_key_exists($attribute, $this->attributes)) { + return $default; + } + return $this->attributes[$attribute]; + } + /** + * {@inheritdoc} + */ + public function withAttribute($attribute, $value) + { + $new = clone $this; + $new->attributes[$attribute] = $value; + return $new; + } + /** + * {@inheritdoc} + */ + public function withoutAttribute($attribute) + { + if (\false === \array_key_exists($attribute, $this->attributes)) { + return $this; + } + $new = clone $this; + unset($new->attributes[$attribute]); + return $new; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Stream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Stream.php new file mode 100644 index 00000000..8c275b50 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Stream.php @@ -0,0 +1,200 @@ + ['r' => \true, 'w+' => \true, 'r+' => \true, 'x+' => \true, 'c+' => \true, 'rb' => \true, 'w+b' => \true, 'r+b' => \true, 'x+b' => \true, 'c+b' => \true, 'rt' => \true, 'w+t' => \true, 'r+t' => \true, 'x+t' => \true, 'c+t' => \true, 'a+' => \true], 'write' => ['w' => \true, 'w+' => \true, 'rw' => \true, 'r+' => \true, 'x+' => \true, 'c+' => \true, 'wb' => \true, 'w+b' => \true, 'r+b' => \true, 'x+b' => \true, 'c+b' => \true, 'w+t' => \true, 'r+t' => \true, 'x+t' => \true, 'c+t' => \true, 'a' => \true, 'a+' => \true]]; + /** + * This constructor accepts an associative array of options. + * + * - size: (int) If a read stream would otherwise have an indeterminate + * size, but the size is known due to foreknowledge, then you can + * provide that size, in bytes. + * - metadata: (array) Any additional metadata to return when the metadata + * of the stream is accessed. + * + * @param resource $stream Stream resource to wrap. + * @param array $options Associative array of options. + * + * @throws \InvalidArgumentException if the stream is not a stream resource + */ + public function __construct($stream, $options = []) + { + if (!\is_resource($stream)) { + throw new \InvalidArgumentException('Stream must be a resource'); + } + if (isset($options['size'])) { + $this->size = $options['size']; + } + $this->customMetadata = isset($options['metadata']) ? $options['metadata'] : []; + $this->stream = $stream; + $meta = \stream_get_meta_data($this->stream); + $this->seekable = $meta['seekable']; + $this->readable = isset(self::$readWriteHash['read'][$meta['mode']]); + $this->writable = isset(self::$readWriteHash['write'][$meta['mode']]); + $this->uri = $this->getMetadata('uri'); + } + public function __get($name) + { + if ($name == 'stream') { + throw new \RuntimeException('The stream is detached'); + } + throw new \BadMethodCallException('No value for ' . $name); + } + /** + * Closes the stream when the destructed + */ + public function __destruct() + { + $this->close(); + } + public function __toString() + { + try { + $this->seek(0); + return (string) \stream_get_contents($this->stream); + } catch (\Exception $e) { + return ''; + } + } + public function getContents() + { + $contents = \stream_get_contents($this->stream); + if ($contents === \false) { + throw new \RuntimeException('Unable to read stream contents'); + } + return $contents; + } + public function close() + { + if (isset($this->stream)) { + if (\is_resource($this->stream)) { + \fclose($this->stream); + } + $this->detach(); + } + } + public function detach() + { + if (!isset($this->stream)) { + return null; + } + $result = $this->stream; + unset($this->stream); + $this->size = $this->uri = null; + $this->readable = $this->writable = $this->seekable = \false; + return $result; + } + public function getSize() + { + if ($this->size !== null) { + return $this->size; + } + if (!isset($this->stream)) { + return null; + } + // Clear the stat cache if the stream has a URI + if ($this->uri) { + \clearstatcache(\true, $this->uri); + } + $stats = \fstat($this->stream); + if (isset($stats['size'])) { + $this->size = $stats['size']; + return $this->size; + } + return null; + } + public function isReadable() + { + return $this->readable; + } + public function isWritable() + { + return $this->writable; + } + public function isSeekable() + { + return $this->seekable; + } + public function eof() + { + return !$this->stream || \feof($this->stream); + } + public function tell() + { + $result = \ftell($this->stream); + if ($result === \false) { + throw new \RuntimeException('Unable to determine stream position'); + } + return $result; + } + public function rewind() + { + $this->seek(0); + } + public function seek($offset, $whence = \SEEK_SET) + { + if (!$this->seekable) { + throw new \RuntimeException('Stream is not seekable'); + } elseif (\fseek($this->stream, $offset, $whence) === -1) { + throw new \RuntimeException('Unable to seek to stream position ' . $offset . ' with whence ' . \var_export($whence, \true)); + } + } + public function read($length) + { + if (!$this->readable) { + throw new \RuntimeException('Cannot read from non-readable stream'); + } + if ($length < 0) { + throw new \RuntimeException('Length parameter cannot be negative'); + } + if (0 === $length) { + return ''; + } + $string = \fread($this->stream, $length); + if (\false === $string) { + throw new \RuntimeException('Unable to read from stream'); + } + return $string; + } + public function write($string) + { + if (!$this->writable) { + throw new \RuntimeException('Cannot write to a non-writable stream'); + } + // We can't know the size after writing anything + $this->size = null; + $result = \fwrite($this->stream, $string); + if ($result === \false) { + throw new \RuntimeException('Unable to write to stream'); + } + return $result; + } + public function getMetadata($key = null) + { + if (!isset($this->stream)) { + return $key ? null : []; + } elseif (!$key) { + return $this->customMetadata + \stream_get_meta_data($this->stream); + } elseif (isset($this->customMetadata[$key])) { + return $this->customMetadata[$key]; + } + $meta = \stream_get_meta_data($this->stream); + return isset($meta[$key]) ? $meta[$key] : null; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php new file mode 100644 index 00000000..2217f430 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php @@ -0,0 +1,128 @@ +stream = $stream; + } + /** + * Magic method used to create a new stream if streams are not added in + * the constructor of a decorator (e.g., LazyOpenStream). + * + * @param string $name Name of the property (allows "stream" only). + * + * @return StreamInterface + */ + public function __get($name) + { + if ($name == 'stream') { + $this->stream = $this->createStream(); + return $this->stream; + } + throw new \UnexpectedValueException("{$name} not found on class"); + } + public function __toString() + { + try { + if ($this->isSeekable()) { + $this->seek(0); + } + return $this->getContents(); + } catch (\Exception $e) { + // Really, PHP? https://bugs.php.net/bug.php?id=53648 + \trigger_error('StreamDecorator::__toString exception: ' . (string) $e, \E_USER_ERROR); + return ''; + } + } + public function getContents() + { + return copy_to_string($this); + } + /** + * Allow decorators to implement custom methods + * + * @param string $method Missing method name + * @param array $args Method arguments + * + * @return mixed + */ + public function __call($method, array $args) + { + $result = \call_user_func_array([$this->stream, $method], $args); + // Always return the wrapped object if the result is a return $this + return $result === $this->stream ? $this : $result; + } + public function close() + { + $this->stream->close(); + } + public function getMetadata($key = null) + { + return $this->stream->getMetadata($key); + } + public function detach() + { + return $this->stream->detach(); + } + public function getSize() + { + return $this->stream->getSize(); + } + public function eof() + { + return $this->stream->eof(); + } + public function tell() + { + return $this->stream->tell(); + } + public function isReadable() + { + return $this->stream->isReadable(); + } + public function isWritable() + { + return $this->stream->isWritable(); + } + public function isSeekable() + { + return $this->stream->isSeekable(); + } + public function rewind() + { + $this->seek(0); + } + public function seek($offset, $whence = \SEEK_SET) + { + $this->stream->seek($offset, $whence); + } + public function read($length) + { + return $this->stream->read($length); + } + public function write($string) + { + return $this->stream->write($string); + } + /** + * Implement in subclasses to dynamically create streams when requested. + * + * @return StreamInterface + * @throws \BadMethodCallException + */ + protected function createStream() + { + throw new \BadMethodCallException('Not implemented'); + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamWrapper.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamWrapper.php new file mode 100644 index 00000000..04867de0 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamWrapper.php @@ -0,0 +1,82 @@ +isReadable()) { + $mode = $stream->isWritable() ? 'r+' : 'r'; + } elseif ($stream->isWritable()) { + $mode = 'w'; + } else { + throw new \InvalidArgumentException('The stream must be readable, ' . 'writable, or both.'); + } + return \fopen('guzzle://stream', $mode, null, \stream_context_create(['guzzle' => ['stream' => $stream]])); + } + /** + * Registers the stream wrapper if needed + */ + public static function register() + { + if (!\in_array('guzzle', \stream_get_wrappers())) { + \stream_wrapper_register('guzzle', __CLASS__); + } + } + public function stream_open($path, $mode, $options, &$opened_path) + { + $options = \stream_context_get_options($this->context); + if (!isset($options['guzzle']['stream'])) { + return \false; + } + $this->mode = $mode; + $this->stream = $options['guzzle']['stream']; + return \true; + } + public function stream_read($count) + { + return $this->stream->read($count); + } + public function stream_write($data) + { + return (int) $this->stream->write($data); + } + public function stream_tell() + { + return $this->stream->tell(); + } + public function stream_eof() + { + return $this->stream->eof(); + } + public function stream_seek($offset, $whence) + { + $this->stream->seek($offset, $whence); + return \true; + } + public function stream_stat() + { + static $modeMap = ['r' => 33060, 'r+' => 33206, 'w' => 33188]; + return ['dev' => 0, 'ino' => 0, 'mode' => $modeMap[$this->mode], 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => $this->stream->getSize() ?: 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0]; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UploadedFile.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UploadedFile.php new file mode 100644 index 00000000..e552b825 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UploadedFile.php @@ -0,0 +1,244 @@ +setError($errorStatus); + $this->setSize($size); + $this->setClientFilename($clientFilename); + $this->setClientMediaType($clientMediaType); + if ($this->isOk()) { + $this->setStreamOrFile($streamOrFile); + } + } + /** + * Depending on the value set file or stream variable + * + * @param mixed $streamOrFile + * @throws InvalidArgumentException + */ + private function setStreamOrFile($streamOrFile) + { + if (\is_string($streamOrFile)) { + $this->file = $streamOrFile; + } elseif (\is_resource($streamOrFile)) { + $this->stream = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream($streamOrFile); + } elseif ($streamOrFile instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface) { + $this->stream = $streamOrFile; + } else { + throw new \InvalidArgumentException('Invalid stream or file provided for UploadedFile'); + } + } + /** + * @param int $error + * @throws InvalidArgumentException + */ + private function setError($error) + { + if (\false === \is_int($error)) { + throw new \InvalidArgumentException('Upload file error status must be an integer'); + } + if (\false === \in_array($error, \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UploadedFile::$errors)) { + throw new \InvalidArgumentException('Invalid error status for UploadedFile'); + } + $this->error = $error; + } + /** + * @param int $size + * @throws InvalidArgumentException + */ + private function setSize($size) + { + if (\false === \is_int($size)) { + throw new \InvalidArgumentException('Upload file size must be an integer'); + } + $this->size = $size; + } + /** + * @param mixed $param + * @return boolean + */ + private function isStringOrNull($param) + { + return \in_array(\gettype($param), ['string', 'NULL']); + } + /** + * @param mixed $param + * @return boolean + */ + private function isStringNotEmpty($param) + { + return \is_string($param) && \false === empty($param); + } + /** + * @param string|null $clientFilename + * @throws InvalidArgumentException + */ + private function setClientFilename($clientFilename) + { + if (\false === $this->isStringOrNull($clientFilename)) { + throw new \InvalidArgumentException('Upload file client filename must be a string or null'); + } + $this->clientFilename = $clientFilename; + } + /** + * @param string|null $clientMediaType + * @throws InvalidArgumentException + */ + private function setClientMediaType($clientMediaType) + { + if (\false === $this->isStringOrNull($clientMediaType)) { + throw new \InvalidArgumentException('Upload file client media type must be a string or null'); + } + $this->clientMediaType = $clientMediaType; + } + /** + * Return true if there is no upload error + * + * @return boolean + */ + private function isOk() + { + return $this->error === \UPLOAD_ERR_OK; + } + /** + * @return boolean + */ + public function isMoved() + { + return $this->moved; + } + /** + * @throws RuntimeException if is moved or not ok + */ + private function validateActive() + { + if (\false === $this->isOk()) { + throw new \RuntimeException('Cannot retrieve stream due to upload error'); + } + if ($this->isMoved()) { + throw new \RuntimeException('Cannot retrieve stream after it has already been moved'); + } + } + /** + * {@inheritdoc} + * @throws RuntimeException if the upload was not successful. + */ + public function getStream() + { + $this->validateActive(); + if ($this->stream instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface) { + return $this->stream; + } + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LazyOpenStream($this->file, 'r+'); + } + /** + * {@inheritdoc} + * + * @see http://php.net/is_uploaded_file + * @see http://php.net/move_uploaded_file + * @param string $targetPath Path to which to move the uploaded file. + * @throws RuntimeException if the upload was not successful. + * @throws InvalidArgumentException if the $path specified is invalid. + * @throws RuntimeException on any error during the move operation, or on + * the second or subsequent call to the method. + */ + public function moveTo($targetPath) + { + $this->validateActive(); + if (\false === $this->isStringNotEmpty($targetPath)) { + throw new \InvalidArgumentException('Invalid path provided for move operation; must be a non-empty string'); + } + if ($this->file) { + $this->moved = \php_sapi_name() == 'cli' ? \rename($this->file, $targetPath) : \move_uploaded_file($this->file, $targetPath); + } else { + copy_to_stream($this->getStream(), new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LazyOpenStream($targetPath, 'w')); + $this->moved = \true; + } + if (\false === $this->moved) { + throw new \RuntimeException(\sprintf('Uploaded file could not be moved to %s', $targetPath)); + } + } + /** + * {@inheritdoc} + * + * @return int|null The file size in bytes or null if unknown. + */ + public function getSize() + { + return $this->size; + } + /** + * {@inheritdoc} + * + * @see http://php.net/manual/en/features.file-upload.errors.php + * @return int One of PHP's UPLOAD_ERR_XXX constants. + */ + public function getError() + { + return $this->error; + } + /** + * {@inheritdoc} + * + * @return string|null The filename sent by the client or null if none + * was provided. + */ + public function getClientFilename() + { + return $this->clientFilename; + } + /** + * {@inheritdoc} + */ + public function getClientMediaType() + { + return $this->clientMediaType; + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Uri.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Uri.php new file mode 100644 index 00000000..52890934 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Uri.php @@ -0,0 +1,555 @@ + 80, 'https' => 443, 'ftp' => 21, 'gopher' => 70, 'nntp' => 119, 'news' => 119, 'telnet' => 23, 'tn3270' => 23, 'imap' => 143, 'pop' => 110, 'ldap' => 389]; + private static $charUnreserved = 'a-zA-Z0-9_\\-\\.~'; + private static $charSubDelims = '!\\$&\'\\(\\)\\*\\+,;='; + private static $replaceQuery = ['=' => '%3D', '&' => '%26']; + /** @var string Uri scheme. */ + private $scheme = ''; + /** @var string Uri user info. */ + private $userInfo = ''; + /** @var string Uri host. */ + private $host = ''; + /** @var int|null Uri port. */ + private $port; + /** @var string Uri path. */ + private $path = ''; + /** @var string Uri query string. */ + private $query = ''; + /** @var string Uri fragment. */ + private $fragment = ''; + /** + * @param string $uri URI to parse + */ + public function __construct($uri = '') + { + // weak type check to also accept null until we can add scalar type hints + if ($uri != '') { + $parts = \parse_url($uri); + if ($parts === \false) { + throw new \InvalidArgumentException("Unable to parse URI: {$uri}"); + } + $this->applyParts($parts); + } + } + public function __toString() + { + return self::composeComponents($this->scheme, $this->getAuthority(), $this->path, $this->query, $this->fragment); + } + /** + * Composes a URI reference string from its various components. + * + * Usually this method does not need to be called manually but instead is used indirectly via + * `Psr\Http\Message\UriInterface::__toString`. + * + * PSR-7 UriInterface treats an empty component the same as a missing component as + * getQuery(), getFragment() etc. always return a string. This explains the slight + * difference to RFC 3986 Section 5.3. + * + * Another adjustment is that the authority separator is added even when the authority is missing/empty + * for the "file" scheme. This is because PHP stream functions like `file_get_contents` only work with + * `file:///myfile` but not with `file:/myfile` although they are equivalent according to RFC 3986. But + * `file:///` is the more common syntax for the file scheme anyway (Chrome for example redirects to + * that format). + * + * @param string $scheme + * @param string $authority + * @param string $path + * @param string $query + * @param string $fragment + * + * @return string + * + * @link https://tools.ietf.org/html/rfc3986#section-5.3 + */ + public static function composeComponents($scheme, $authority, $path, $query, $fragment) + { + $uri = ''; + // weak type checks to also accept null until we can add scalar type hints + if ($scheme != '') { + $uri .= $scheme . ':'; + } + if ($authority != '' || $scheme === 'file') { + $uri .= '//' . $authority; + } + $uri .= $path; + if ($query != '') { + $uri .= '?' . $query; + } + if ($fragment != '') { + $uri .= '#' . $fragment; + } + return $uri; + } + /** + * Whether the URI has the default port of the current scheme. + * + * `Psr\Http\Message\UriInterface::getPort` may return null or the standard port. This method can be used + * independently of the implementation. + * + * @param UriInterface $uri + * + * @return bool + */ + public static function isDefaultPort(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + { + return $uri->getPort() === null || isset(self::$defaultPorts[$uri->getScheme()]) && $uri->getPort() === self::$defaultPorts[$uri->getScheme()]; + } + /** + * Whether the URI is absolute, i.e. it has a scheme. + * + * An instance of UriInterface can either be an absolute URI or a relative reference. This method returns true + * if it is the former. An absolute URI has a scheme. A relative reference is used to express a URI relative + * to another URI, the base URI. Relative references can be divided into several forms: + * - network-path references, e.g. '//example.com/path' + * - absolute-path references, e.g. '/path' + * - relative-path references, e.g. 'subpath' + * + * @param UriInterface $uri + * + * @return bool + * @see Uri::isNetworkPathReference + * @see Uri::isAbsolutePathReference + * @see Uri::isRelativePathReference + * @link https://tools.ietf.org/html/rfc3986#section-4 + */ + public static function isAbsolute(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + { + return $uri->getScheme() !== ''; + } + /** + * Whether the URI is a network-path reference. + * + * A relative reference that begins with two slash characters is termed an network-path reference. + * + * @param UriInterface $uri + * + * @return bool + * @link https://tools.ietf.org/html/rfc3986#section-4.2 + */ + public static function isNetworkPathReference(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + { + return $uri->getScheme() === '' && $uri->getAuthority() !== ''; + } + /** + * Whether the URI is a absolute-path reference. + * + * A relative reference that begins with a single slash character is termed an absolute-path reference. + * + * @param UriInterface $uri + * + * @return bool + * @link https://tools.ietf.org/html/rfc3986#section-4.2 + */ + public static function isAbsolutePathReference(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + { + return $uri->getScheme() === '' && $uri->getAuthority() === '' && isset($uri->getPath()[0]) && $uri->getPath()[0] === '/'; + } + /** + * Whether the URI is a relative-path reference. + * + * A relative reference that does not begin with a slash character is termed a relative-path reference. + * + * @param UriInterface $uri + * + * @return bool + * @link https://tools.ietf.org/html/rfc3986#section-4.2 + */ + public static function isRelativePathReference(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + { + return $uri->getScheme() === '' && $uri->getAuthority() === '' && (!isset($uri->getPath()[0]) || $uri->getPath()[0] !== '/'); + } + /** + * Whether the URI is a same-document reference. + * + * A same-document reference refers to a URI that is, aside from its fragment + * component, identical to the base URI. When no base URI is given, only an empty + * URI reference (apart from its fragment) is considered a same-document reference. + * + * @param UriInterface $uri The URI to check + * @param UriInterface|null $base An optional base URI to compare against + * + * @return bool + * @link https://tools.ietf.org/html/rfc3986#section-4.4 + */ + public static function isSameDocumentReference(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri, \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $base = null) + { + if ($base !== null) { + $uri = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::resolve($base, $uri); + return $uri->getScheme() === $base->getScheme() && $uri->getAuthority() === $base->getAuthority() && $uri->getPath() === $base->getPath() && $uri->getQuery() === $base->getQuery(); + } + return $uri->getScheme() === '' && $uri->getAuthority() === '' && $uri->getPath() === '' && $uri->getQuery() === ''; + } + /** + * Removes dot segments from a path and returns the new path. + * + * @param string $path + * + * @return string + * + * @deprecated since version 1.4. Use UriResolver::removeDotSegments instead. + * @see UriResolver::removeDotSegments + */ + public static function removeDotSegments($path) + { + return \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::removeDotSegments($path); + } + /** + * Converts the relative URI into a new URI that is resolved against the base URI. + * + * @param UriInterface $base Base URI + * @param string|UriInterface $rel Relative URI + * + * @return UriInterface + * + * @deprecated since version 1.4. Use UriResolver::resolve instead. + * @see UriResolver::resolve + */ + public static function resolve(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $base, $rel) + { + if (!$rel instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface) { + $rel = new self($rel); + } + return \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::resolve($base, $rel); + } + /** + * Creates a new URI with a specific query string value removed. + * + * Any existing query string values that exactly match the provided key are + * removed. + * + * @param UriInterface $uri URI to use as a base. + * @param string $key Query string key to remove. + * + * @return UriInterface + */ + public static function withoutQueryValue(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri, $key) + { + $current = $uri->getQuery(); + if ($current === '') { + return $uri; + } + $decodedKey = \rawurldecode($key); + $result = \array_filter(\explode('&', $current), function ($part) use($decodedKey) { + return \rawurldecode(\explode('=', $part)[0]) !== $decodedKey; + }); + return $uri->withQuery(\implode('&', $result)); + } + /** + * Creates a new URI with a specific query string value. + * + * Any existing query string values that exactly match the provided key are + * removed and replaced with the given key value pair. + * + * A value of null will set the query string key without a value, e.g. "key" + * instead of "key=value". + * + * @param UriInterface $uri URI to use as a base. + * @param string $key Key to set. + * @param string|null $value Value to set + * + * @return UriInterface + */ + public static function withQueryValue(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri, $key, $value) + { + $current = $uri->getQuery(); + if ($current === '') { + $result = []; + } else { + $decodedKey = \rawurldecode($key); + $result = \array_filter(\explode('&', $current), function ($part) use($decodedKey) { + return \rawurldecode(\explode('=', $part)[0]) !== $decodedKey; + }); + } + // Query string separators ("=", "&") within the key or value need to be encoded + // (while preventing double-encoding) before setting the query string. All other + // chars that need percent-encoding will be encoded by withQuery(). + $key = \strtr($key, self::$replaceQuery); + if ($value !== null) { + $result[] = $key . '=' . \strtr($value, self::$replaceQuery); + } else { + $result[] = $key; + } + return $uri->withQuery(\implode('&', $result)); + } + /** + * Creates a URI from a hash of `parse_url` components. + * + * @param array $parts + * + * @return UriInterface + * @link http://php.net/manual/en/function.parse-url.php + * + * @throws \InvalidArgumentException If the components do not form a valid URI. + */ + public static function fromParts(array $parts) + { + $uri = new self(); + $uri->applyParts($parts); + $uri->validateState(); + return $uri; + } + public function getScheme() + { + return $this->scheme; + } + public function getAuthority() + { + $authority = $this->host; + if ($this->userInfo !== '') { + $authority = $this->userInfo . '@' . $authority; + } + if ($this->port !== null) { + $authority .= ':' . $this->port; + } + return $authority; + } + public function getUserInfo() + { + return $this->userInfo; + } + public function getHost() + { + return $this->host; + } + public function getPort() + { + return $this->port; + } + public function getPath() + { + return $this->path; + } + public function getQuery() + { + return $this->query; + } + public function getFragment() + { + return $this->fragment; + } + public function withScheme($scheme) + { + $scheme = $this->filterScheme($scheme); + if ($this->scheme === $scheme) { + return $this; + } + $new = clone $this; + $new->scheme = $scheme; + $new->removeDefaultPort(); + $new->validateState(); + return $new; + } + public function withUserInfo($user, $password = null) + { + $info = $user; + if ($password != '') { + $info .= ':' . $password; + } + if ($this->userInfo === $info) { + return $this; + } + $new = clone $this; + $new->userInfo = $info; + $new->validateState(); + return $new; + } + public function withHost($host) + { + $host = $this->filterHost($host); + if ($this->host === $host) { + return $this; + } + $new = clone $this; + $new->host = $host; + $new->validateState(); + return $new; + } + public function withPort($port) + { + $port = $this->filterPort($port); + if ($this->port === $port) { + return $this; + } + $new = clone $this; + $new->port = $port; + $new->removeDefaultPort(); + $new->validateState(); + return $new; + } + public function withPath($path) + { + $path = $this->filterPath($path); + if ($this->path === $path) { + return $this; + } + $new = clone $this; + $new->path = $path; + $new->validateState(); + return $new; + } + public function withQuery($query) + { + $query = $this->filterQueryAndFragment($query); + if ($this->query === $query) { + return $this; + } + $new = clone $this; + $new->query = $query; + return $new; + } + public function withFragment($fragment) + { + $fragment = $this->filterQueryAndFragment($fragment); + if ($this->fragment === $fragment) { + return $this; + } + $new = clone $this; + $new->fragment = $fragment; + return $new; + } + /** + * Apply parse_url parts to a URI. + * + * @param array $parts Array of parse_url parts to apply. + */ + private function applyParts(array $parts) + { + $this->scheme = isset($parts['scheme']) ? $this->filterScheme($parts['scheme']) : ''; + $this->userInfo = isset($parts['user']) ? $parts['user'] : ''; + $this->host = isset($parts['host']) ? $this->filterHost($parts['host']) : ''; + $this->port = isset($parts['port']) ? $this->filterPort($parts['port']) : null; + $this->path = isset($parts['path']) ? $this->filterPath($parts['path']) : ''; + $this->query = isset($parts['query']) ? $this->filterQueryAndFragment($parts['query']) : ''; + $this->fragment = isset($parts['fragment']) ? $this->filterQueryAndFragment($parts['fragment']) : ''; + if (isset($parts['pass'])) { + $this->userInfo .= ':' . $parts['pass']; + } + $this->removeDefaultPort(); + } + /** + * @param string $scheme + * + * @return string + * + * @throws \InvalidArgumentException If the scheme is invalid. + */ + private function filterScheme($scheme) + { + if (!\is_string($scheme)) { + throw new \InvalidArgumentException('Scheme must be a string'); + } + return \strtolower($scheme); + } + /** + * @param string $host + * + * @return string + * + * @throws \InvalidArgumentException If the host is invalid. + */ + private function filterHost($host) + { + if (!\is_string($host)) { + throw new \InvalidArgumentException('Host must be a string'); + } + return \strtolower($host); + } + /** + * @param int|null $port + * + * @return int|null + * + * @throws \InvalidArgumentException If the port is invalid. + */ + private function filterPort($port) + { + if ($port === null) { + return null; + } + $port = (int) $port; + if (1 > $port || 0xffff < $port) { + throw new \InvalidArgumentException(\sprintf('Invalid port: %d. Must be between 1 and 65535', $port)); + } + return $port; + } + private function removeDefaultPort() + { + if ($this->port !== null && self::isDefaultPort($this)) { + $this->port = null; + } + } + /** + * Filters the path of a URI + * + * @param string $path + * + * @return string + * + * @throws \InvalidArgumentException If the path is invalid. + */ + private function filterPath($path) + { + if (!\is_string($path)) { + throw new \InvalidArgumentException('Path must be a string'); + } + return \preg_replace_callback('/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\\/]++|%(?![A-Fa-f0-9]{2}))/', [$this, 'rawurlencodeMatchZero'], $path); + } + /** + * Filters the query string or fragment of a URI. + * + * @param string $str + * + * @return string + * + * @throws \InvalidArgumentException If the query or fragment is invalid. + */ + private function filterQueryAndFragment($str) + { + if (!\is_string($str)) { + throw new \InvalidArgumentException('Query and fragment must be a string'); + } + return \preg_replace_callback('/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\\/\\?]++|%(?![A-Fa-f0-9]{2}))/', [$this, 'rawurlencodeMatchZero'], $str); + } + private function rawurlencodeMatchZero(array $match) + { + return \rawurlencode($match[0]); + } + private function validateState() + { + if ($this->host === '' && ($this->scheme === 'http' || $this->scheme === 'https')) { + $this->host = self::HTTP_DEFAULT_HOST; + } + if ($this->getAuthority() === '') { + if (0 === \strpos($this->path, '//')) { + throw new \InvalidArgumentException('The path of a URI without an authority must not start with two slashes "//"'); + } + if ($this->scheme === '' && \false !== \strpos(\explode('/', $this->path, 2)[0], ':')) { + throw new \InvalidArgumentException('A relative URI must not have a path beginning with a segment containing a colon'); + } + } elseif (isset($this->path[0]) && $this->path[0] !== '/') { + @\trigger_error('The path of a URI with an authority must start with a slash "/" or be empty. Automagically fixing the URI ' . 'by adding a leading slash to the path is deprecated since version 1.4 and will throw an exception instead.', \E_USER_DEPRECATED); + $this->path = '/' . $this->path; + //throw new \InvalidArgumentException('The path of a URI with an authority must start with a slash "/" or be empty'); + } + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriNormalizer.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriNormalizer.php new file mode 100644 index 00000000..51a52537 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriNormalizer.php @@ -0,0 +1,179 @@ +getPath() === '' && ($uri->getScheme() === 'http' || $uri->getScheme() === 'https')) { + $uri = $uri->withPath('/'); + } + if ($flags & self::REMOVE_DEFAULT_HOST && $uri->getScheme() === 'file' && $uri->getHost() === 'localhost') { + $uri = $uri->withHost(''); + } + if ($flags & self::REMOVE_DEFAULT_PORT && $uri->getPort() !== null && \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri::isDefaultPort($uri)) { + $uri = $uri->withPort(null); + } + if ($flags & self::REMOVE_DOT_SEGMENTS && !\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri::isRelativePathReference($uri)) { + $uri = $uri->withPath(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::removeDotSegments($uri->getPath())); + } + if ($flags & self::REMOVE_DUPLICATE_SLASHES) { + $uri = $uri->withPath(\preg_replace('#//++#', '/', $uri->getPath())); + } + if ($flags & self::SORT_QUERY_PARAMETERS && $uri->getQuery() !== '') { + $queryKeyValues = \explode('&', $uri->getQuery()); + \sort($queryKeyValues); + $uri = $uri->withQuery(\implode('&', $queryKeyValues)); + } + return $uri; + } + /** + * Whether two URIs can be considered equivalent. + * + * Both URIs are normalized automatically before comparison with the given $normalizations bitmask. The method also + * accepts relative URI references and returns true when they are equivalent. This of course assumes they will be + * resolved against the same base URI. If this is not the case, determination of equivalence or difference of + * relative references does not mean anything. + * + * @param UriInterface $uri1 An URI to compare + * @param UriInterface $uri2 An URI to compare + * @param int $normalizations A bitmask of normalizations to apply, see constants + * + * @return bool + * @link https://tools.ietf.org/html/rfc3986#section-6.1 + */ + public static function isEquivalent(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri1, \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS) + { + return (string) self::normalize($uri1, $normalizations) === (string) self::normalize($uri2, $normalizations); + } + private static function capitalizePercentEncoding(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + { + $regex = '/(?:%[A-Fa-f0-9]{2})++/'; + $callback = function (array $match) { + return \strtoupper($match[0]); + }; + return $uri->withPath(\preg_replace_callback($regex, $callback, $uri->getPath()))->withQuery(\preg_replace_callback($regex, $callback, $uri->getQuery())); + } + private static function decodeUnreservedCharacters(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + { + $regex = '/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i'; + $callback = function (array $match) { + return \rawurldecode($match[0]); + }; + return $uri->withPath(\preg_replace_callback($regex, $callback, $uri->getPath()))->withQuery(\preg_replace_callback($regex, $callback, $uri->getQuery())); + } + private function __construct() + { + // cannot be instantiated + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriResolver.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriResolver.php new file mode 100644 index 00000000..4883c7e8 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriResolver.php @@ -0,0 +1,190 @@ +getScheme() != '') { + return $rel->withPath(self::removeDotSegments($rel->getPath())); + } + if ($rel->getAuthority() != '') { + $targetAuthority = $rel->getAuthority(); + $targetPath = self::removeDotSegments($rel->getPath()); + $targetQuery = $rel->getQuery(); + } else { + $targetAuthority = $base->getAuthority(); + if ($rel->getPath() === '') { + $targetPath = $base->getPath(); + $targetQuery = $rel->getQuery() != '' ? $rel->getQuery() : $base->getQuery(); + } else { + if ($rel->getPath()[0] === '/') { + $targetPath = $rel->getPath(); + } else { + if ($targetAuthority != '' && $base->getPath() === '') { + $targetPath = '/' . $rel->getPath(); + } else { + $lastSlashPos = \strrpos($base->getPath(), '/'); + if ($lastSlashPos === \false) { + $targetPath = $rel->getPath(); + } else { + $targetPath = \substr($base->getPath(), 0, $lastSlashPos + 1) . $rel->getPath(); + } + } + } + $targetPath = self::removeDotSegments($targetPath); + $targetQuery = $rel->getQuery(); + } + } + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri::composeComponents($base->getScheme(), $targetAuthority, $targetPath, $targetQuery, $rel->getFragment())); + } + /** + * Returns the target URI as a relative reference from the base URI. + * + * This method is the counterpart to resolve(): + * + * (string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target)) + * + * One use-case is to use the current request URI as base URI and then generate relative links in your documents + * to reduce the document size or offer self-contained downloadable document archives. + * + * $base = new Uri('http://example.com/a/b/'); + * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'. + * echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'. + * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'. + * echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'. + * + * This method also accepts a target that is already relative and will try to relativize it further. Only a + * relative-path reference will be returned as-is. + * + * echo UriResolver::relativize($base, new Uri('/a/b/c')); // prints 'c' as well + * + * @param UriInterface $base Base URI + * @param UriInterface $target Target URI + * + * @return UriInterface The relative URI reference + */ + public static function relativize(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $base, \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $target) + { + if ($target->getScheme() !== '' && ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '')) { + return $target; + } + if (\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri::isRelativePathReference($target)) { + // As the target is already highly relative we return it as-is. It would be possible to resolve + // the target with `$target = self::resolve($base, $target);` and then try make it more relative + // by removing a duplicate query. But let's not do that automatically. + return $target; + } + if ($target->getAuthority() !== '' && $base->getAuthority() !== $target->getAuthority()) { + return $target->withScheme(''); + } + // We must remove the path before removing the authority because if the path starts with two slashes, the URI + // would turn invalid. And we also cannot set a relative path before removing the authority, as that is also + // invalid. + $emptyPathUri = $target->withScheme('')->withPath('')->withUserInfo('')->withPort(null)->withHost(''); + if ($base->getPath() !== $target->getPath()) { + return $emptyPathUri->withPath(self::getRelativePath($base, $target)); + } + if ($base->getQuery() === $target->getQuery()) { + // Only the target fragment is left. And it must be returned even if base and target fragment are the same. + return $emptyPathUri->withQuery(''); + } + // If the base URI has a query but the target has none, we cannot return an empty path reference as it would + // inherit the base query component when resolving. + if ($target->getQuery() === '') { + $segments = \explode('/', $target->getPath()); + $lastSegment = \end($segments); + return $emptyPathUri->withPath($lastSegment === '' ? './' : $lastSegment); + } + return $emptyPathUri; + } + private static function getRelativePath(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $base, \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $target) + { + $sourceSegments = \explode('/', $base->getPath()); + $targetSegments = \explode('/', $target->getPath()); + \array_pop($sourceSegments); + $targetLastSegment = \array_pop($targetSegments); + foreach ($sourceSegments as $i => $segment) { + if (isset($targetSegments[$i]) && $segment === $targetSegments[$i]) { + unset($sourceSegments[$i], $targetSegments[$i]); + } else { + break; + } + } + $targetSegments[] = $targetLastSegment; + $relativePath = \str_repeat('../', \count($sourceSegments)) . \implode('/', $targetSegments); + // A reference to am empty last segment or an empty first sub-segment must be prefixed with "./". + // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used + // as the first segment of a relative-path reference, as it would be mistaken for a scheme name. + if ('' === $relativePath || \false !== \strpos(\explode('/', $relativePath, 2)[0], ':')) { + $relativePath = "./{$relativePath}"; + } elseif ('/' === $relativePath[0]) { + if ($base->getAuthority() != '' && $base->getPath() === '') { + // In this case an extra slash is added by resolve() automatically. So we must not add one here. + $relativePath = ".{$relativePath}"; + } else { + $relativePath = "./{$relativePath}"; + } + } + return $relativePath; + } + private function __construct() + { + // cannot be instantiated + } +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions.php new file mode 100644 index 00000000..b970edea --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions.php @@ -0,0 +1,614 @@ +getMethod() . ' ' . $message->getRequestTarget()) . ' HTTP/' . $message->getProtocolVersion(); + if (!$message->hasHeader('host')) { + $msg .= "\r\nHost: " . $message->getUri()->getHost(); + } + } elseif ($message instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface) { + $msg = 'HTTP/' . $message->getProtocolVersion() . ' ' . $message->getStatusCode() . ' ' . $message->getReasonPhrase(); + } else { + throw new \InvalidArgumentException('Unknown message type'); + } + foreach ($message->getHeaders() as $name => $values) { + $msg .= "\r\n{$name}: " . \implode(', ', $values); + } + return "{$msg}\r\n\r\n" . $message->getBody(); +} +/** + * Returns a UriInterface for the given value. + * + * This function accepts a string or {@see Psr\Http\Message\UriInterface} and + * returns a UriInterface for the given value. If the value is already a + * `UriInterface`, it is returned as-is. + * + * @param string|UriInterface $uri + * + * @return UriInterface + * @throws \InvalidArgumentException + */ +function uri_for($uri) +{ + if ($uri instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface) { + return $uri; + } elseif (\is_string($uri)) { + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri($uri); + } + throw new \InvalidArgumentException('URI must be a string or UriInterface'); +} +/** + * Create a new stream based on the input type. + * + * Options is an associative array that can contain the following keys: + * - metadata: Array of custom metadata. + * - size: Size of the stream. + * + * @param resource|string|null|int|float|bool|StreamInterface|callable $resource Entity body data + * @param array $options Additional options + * + * @return Stream + * @throws \InvalidArgumentException if the $resource arg is not valid. + */ +function stream_for($resource = '', array $options = []) +{ + if (\is_scalar($resource)) { + $stream = \fopen('php://temp', 'r+'); + if ($resource !== '') { + \fwrite($stream, $resource); + \fseek($stream, 0); + } + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream($stream, $options); + } + switch (\gettype($resource)) { + case 'resource': + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream($resource, $options); + case 'object': + if ($resource instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface) { + return $resource; + } elseif ($resource instanceof \Iterator) { + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\PumpStream(function () use($resource) { + if (!$resource->valid()) { + return \false; + } + $result = $resource->current(); + $resource->next(); + return $result; + }, $options); + } elseif (\method_exists($resource, '__toString')) { + return stream_for((string) $resource, $options); + } + break; + case 'NULL': + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream(\fopen('php://temp', 'r+'), $options); + } + if (\is_callable($resource)) { + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\PumpStream($resource, $options); + } + throw new \InvalidArgumentException('Invalid resource type: ' . \gettype($resource)); +} +/** + * Parse an array of header values containing ";" separated data into an + * array of associative arrays representing the header key value pair + * data of the header. When a parameter does not contain a value, but just + * contains a key, this function will inject a key with a '' string value. + * + * @param string|array $header Header to parse into components. + * + * @return array Returns the parsed header values. + */ +function parse_header($header) +{ + static $trimmed = "\"' \n\t\r"; + $params = $matches = []; + foreach (normalize_header($header) as $val) { + $part = []; + foreach (\preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) { + if (\preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) { + $m = $matches[0]; + if (isset($m[1])) { + $part[\trim($m[0], $trimmed)] = \trim($m[1], $trimmed); + } else { + $part[] = \trim($m[0], $trimmed); + } + } + } + if ($part) { + $params[] = $part; + } + } + return $params; +} +/** + * Converts an array of header values that may contain comma separated + * headers into an array of headers with no comma separated values. + * + * @param string|array $header Header to normalize. + * + * @return array Returns the normalized header field values. + */ +function normalize_header($header) +{ + if (!\is_array($header)) { + return \array_map('trim', \explode(',', $header)); + } + $result = []; + foreach ($header as $value) { + foreach ((array) $value as $v) { + if (\strpos($v, ',') === \false) { + $result[] = $v; + continue; + } + foreach (\preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) { + $result[] = \trim($vv); + } + } + } + return $result; +} +/** + * Clone and modify a request with the given changes. + * + * The changes can be one of: + * - method: (string) Changes the HTTP method. + * - set_headers: (array) Sets the given headers. + * - remove_headers: (array) Remove the given headers. + * - body: (mixed) Sets the given body. + * - uri: (UriInterface) Set the URI. + * - query: (string) Set the query string value of the URI. + * - version: (string) Set the protocol version. + * + * @param RequestInterface $request Request to clone and modify. + * @param array $changes Changes to apply. + * + * @return RequestInterface + */ +function modify_request(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $changes) +{ + if (!$changes) { + return $request; + } + $headers = $request->getHeaders(); + if (!isset($changes['uri'])) { + $uri = $request->getUri(); + } else { + // Remove the host header if one is on the URI + if ($host = $changes['uri']->getHost()) { + $changes['set_headers']['Host'] = $host; + if ($port = $changes['uri']->getPort()) { + $standardPorts = ['http' => 80, 'https' => 443]; + $scheme = $changes['uri']->getScheme(); + if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) { + $changes['set_headers']['Host'] .= ':' . $port; + } + } + } + $uri = $changes['uri']; + } + if (!empty($changes['remove_headers'])) { + $headers = _caseless_remove($changes['remove_headers'], $headers); + } + if (!empty($changes['set_headers'])) { + $headers = _caseless_remove(\array_keys($changes['set_headers']), $headers); + $headers = $changes['set_headers'] + $headers; + } + if (isset($changes['query'])) { + $uri = $uri->withQuery($changes['query']); + } + if ($request instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\ServerRequestInterface) { + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\ServerRequest(isset($changes['method']) ? $changes['method'] : $request->getMethod(), $uri, $headers, isset($changes['body']) ? $changes['body'] : $request->getBody(), isset($changes['version']) ? $changes['version'] : $request->getProtocolVersion(), $request->getServerParams()); + } + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Request(isset($changes['method']) ? $changes['method'] : $request->getMethod(), $uri, $headers, isset($changes['body']) ? $changes['body'] : $request->getBody(), isset($changes['version']) ? $changes['version'] : $request->getProtocolVersion()); +} +/** + * Attempts to rewind a message body and throws an exception on failure. + * + * The body of the message will only be rewound if a call to `tell()` returns a + * value other than `0`. + * + * @param MessageInterface $message Message to rewind + * + * @throws \RuntimeException + */ +function rewind_body(\_PhpScoper5b87e821469bb\Psr\Http\Message\MessageInterface $message) +{ + $body = $message->getBody(); + if ($body->tell()) { + $body->rewind(); + } +} +/** + * Safely opens a PHP stream resource using a filename. + * + * When fopen fails, PHP normally raises a warning. This function adds an + * error handler that checks for errors and throws an exception instead. + * + * @param string $filename File to open + * @param string $mode Mode used to open the file + * + * @return resource + * @throws \RuntimeException if the file cannot be opened + */ +function try_fopen($filename, $mode) +{ + $ex = null; + \set_error_handler(function () use($filename, $mode, &$ex) { + $ex = new \RuntimeException(\sprintf('Unable to open %s using mode %s: %s', $filename, $mode, \func_get_args()[1])); + }); + $handle = \fopen($filename, $mode); + \restore_error_handler(); + if ($ex) { + /** @var $ex \RuntimeException */ + throw $ex; + } + return $handle; +} +/** + * Copy the contents of a stream into a string until the given number of + * bytes have been read. + * + * @param StreamInterface $stream Stream to read + * @param int $maxLen Maximum number of bytes to read. Pass -1 + * to read the entire stream. + * @return string + * @throws \RuntimeException on error. + */ +function copy_to_string(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, $maxLen = -1) +{ + $buffer = ''; + if ($maxLen === -1) { + while (!$stream->eof()) { + $buf = $stream->read(1048576); + // Using a loose equality here to match on '' and false. + if ($buf == null) { + break; + } + $buffer .= $buf; + } + return $buffer; + } + $len = 0; + while (!$stream->eof() && $len < $maxLen) { + $buf = $stream->read($maxLen - $len); + // Using a loose equality here to match on '' and false. + if ($buf == null) { + break; + } + $buffer .= $buf; + $len = \strlen($buffer); + } + return $buffer; +} +/** + * Copy the contents of a stream into another stream until the given number + * of bytes have been read. + * + * @param StreamInterface $source Stream to read from + * @param StreamInterface $dest Stream to write to + * @param int $maxLen Maximum number of bytes to read. Pass -1 + * to read the entire stream. + * + * @throws \RuntimeException on error. + */ +function copy_to_stream(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $source, \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $dest, $maxLen = -1) +{ + $bufferSize = 8192; + if ($maxLen === -1) { + while (!$source->eof()) { + if (!$dest->write($source->read($bufferSize))) { + break; + } + } + } else { + $remaining = $maxLen; + while ($remaining > 0 && !$source->eof()) { + $buf = $source->read(\min($bufferSize, $remaining)); + $len = \strlen($buf); + if (!$len) { + break; + } + $remaining -= $len; + $dest->write($buf); + } + } +} +/** + * Calculate a hash of a Stream + * + * @param StreamInterface $stream Stream to calculate the hash for + * @param string $algo Hash algorithm (e.g. md5, crc32, etc) + * @param bool $rawOutput Whether or not to use raw output + * + * @return string Returns the hash of the stream + * @throws \RuntimeException on error. + */ +function hash(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, $algo, $rawOutput = \false) +{ + $pos = $stream->tell(); + if ($pos > 0) { + $stream->rewind(); + } + $ctx = \hash_init($algo); + while (!$stream->eof()) { + \hash_update($ctx, $stream->read(1048576)); + } + $out = \hash_final($ctx, (bool) $rawOutput); + $stream->seek($pos); + return $out; +} +/** + * Read a line from the stream up to the maximum allowed buffer length + * + * @param StreamInterface $stream Stream to read from + * @param int $maxLength Maximum buffer length + * + * @return string|bool + */ +function readline(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, $maxLength = null) +{ + $buffer = ''; + $size = 0; + while (!$stream->eof()) { + // Using a loose equality here to match on '' and false. + if (null == ($byte = $stream->read(1))) { + return $buffer; + } + $buffer .= $byte; + // Break when a new line is found or the max length - 1 is reached + if ($byte === "\n" || ++$size === $maxLength - 1) { + break; + } + } + return $buffer; +} +/** + * Parses a request message string into a request object. + * + * @param string $message Request message string. + * + * @return Request + */ +function parse_request($message) +{ + $data = _parse_message($message); + $matches = []; + if (!\preg_match('/^[\\S]+\\s+([a-zA-Z]+:\\/\\/|\\/).*/', $data['start-line'], $matches)) { + throw new \InvalidArgumentException('Invalid request string'); + } + $parts = \explode(' ', $data['start-line'], 3); + $version = isset($parts[2]) ? \explode('/', $parts[2])[1] : '1.1'; + $request = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Request($parts[0], $matches[1] === '/' ? _parse_request_uri($parts[1], $data['headers']) : $parts[1], $data['headers'], $data['body'], $version); + return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]); +} +/** + * Parses a response message string into a response object. + * + * @param string $message Response message string. + * + * @return Response + */ +function parse_response($message) +{ + $data = _parse_message($message); + // According to https://tools.ietf.org/html/rfc7230#section-3.1.2 the space + // between status-code and reason-phrase is required. But browsers accept + // responses without space and reason as well. + if (!\preg_match('/^HTTP\\/.* [0-9]{3}( .*|$)/', $data['start-line'])) { + throw new \InvalidArgumentException('Invalid response string'); + } + $parts = \explode(' ', $data['start-line'], 3); + return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Response($parts[1], $data['headers'], $data['body'], \explode('/', $parts[0])[1], isset($parts[2]) ? $parts[2] : null); +} +/** + * Parse a query string into an associative array. + * + * If multiple values are found for the same key, the value of that key + * value pair will become an array. This function does not parse nested + * PHP style arrays into an associative array (e.g., foo[a]=1&foo[b]=2 will + * be parsed into ['foo[a]' => '1', 'foo[b]' => '2']). + * + * @param string $str Query string to parse + * @param bool|string $urlEncoding How the query string is encoded + * + * @return array + */ +function parse_query($str, $urlEncoding = \true) +{ + $result = []; + if ($str === '') { + return $result; + } + if ($urlEncoding === \true) { + $decoder = function ($value) { + return \rawurldecode(\str_replace('+', ' ', $value)); + }; + } elseif ($urlEncoding == \PHP_QUERY_RFC3986) { + $decoder = 'rawurldecode'; + } elseif ($urlEncoding == \PHP_QUERY_RFC1738) { + $decoder = 'urldecode'; + } else { + $decoder = function ($str) { + return $str; + }; + } + foreach (\explode('&', $str) as $kvp) { + $parts = \explode('=', $kvp, 2); + $key = $decoder($parts[0]); + $value = isset($parts[1]) ? $decoder($parts[1]) : null; + if (!isset($result[$key])) { + $result[$key] = $value; + } else { + if (!\is_array($result[$key])) { + $result[$key] = [$result[$key]]; + } + $result[$key][] = $value; + } + } + return $result; +} +/** + * Build a query string from an array of key value pairs. + * + * This function can use the return value of parse_query() to build a query + * string. This function does not modify the provided keys when an array is + * encountered (like http_build_query would). + * + * @param array $params Query string parameters. + * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 + * to encode using RFC3986, or PHP_QUERY_RFC1738 + * to encode using RFC1738. + * @return string + */ +function build_query(array $params, $encoding = \PHP_QUERY_RFC3986) +{ + if (!$params) { + return ''; + } + if ($encoding === \false) { + $encoder = function ($str) { + return $str; + }; + } elseif ($encoding === \PHP_QUERY_RFC3986) { + $encoder = 'rawurlencode'; + } elseif ($encoding === \PHP_QUERY_RFC1738) { + $encoder = 'urlencode'; + } else { + throw new \InvalidArgumentException('Invalid type'); + } + $qs = ''; + foreach ($params as $k => $v) { + $k = $encoder($k); + if (!\is_array($v)) { + $qs .= $k; + if ($v !== null) { + $qs .= '=' . $encoder($v); + } + $qs .= '&'; + } else { + foreach ($v as $vv) { + $qs .= $k; + if ($vv !== null) { + $qs .= '=' . $encoder($vv); + } + $qs .= '&'; + } + } + } + return $qs ? (string) \substr($qs, 0, -1) : ''; +} +/** + * Determines the mimetype of a file by looking at its extension. + * + * @param $filename + * + * @return null|string + */ +function mimetype_from_filename($filename) +{ + return mimetype_from_extension(\pathinfo($filename, \PATHINFO_EXTENSION)); +} +/** + * Maps a file extensions to a mimetype. + * + * @param $extension string The file extension. + * + * @return string|null + * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types + */ +function mimetype_from_extension($extension) +{ + static $mimetypes = ['7z' => 'application/x-7z-compressed', 'aac' => 'audio/x-aac', 'ai' => 'application/postscript', 'aif' => 'audio/x-aiff', 'asc' => 'text/plain', 'asf' => 'video/x-ms-asf', 'atom' => 'application/atom+xml', 'avi' => 'video/x-msvideo', 'bmp' => 'image/bmp', 'bz2' => 'application/x-bzip2', 'cer' => 'application/pkix-cert', 'crl' => 'application/pkix-crl', 'crt' => 'application/x-x509-ca-cert', 'css' => 'text/css', 'csv' => 'text/csv', 'cu' => 'application/cu-seeme', 'deb' => 'application/x-debian-package', 'doc' => 'application/msword', 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'dvi' => 'application/x-dvi', 'eot' => 'application/vnd.ms-fontobject', 'eps' => 'application/postscript', 'epub' => 'application/epub+zip', 'etx' => 'text/x-setext', 'flac' => 'audio/flac', 'flv' => 'video/x-flv', 'gif' => 'image/gif', 'gz' => 'application/gzip', 'htm' => 'text/html', 'html' => 'text/html', 'ico' => 'image/x-icon', 'ics' => 'text/calendar', 'ini' => 'text/plain', 'iso' => 'application/x-iso9660-image', 'jar' => 'application/java-archive', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'js' => 'text/javascript', 'json' => 'application/json', 'latex' => 'application/x-latex', 'log' => 'text/plain', 'm4a' => 'audio/mp4', 'm4v' => 'video/mp4', 'mid' => 'audio/midi', 'midi' => 'audio/midi', 'mov' => 'video/quicktime', 'mp3' => 'audio/mpeg', 'mp4' => 'video/mp4', 'mp4a' => 'audio/mp4', 'mp4v' => 'video/mp4', 'mpe' => 'video/mpeg', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', 'mpg4' => 'video/mp4', 'oga' => 'audio/ogg', 'ogg' => 'audio/ogg', 'ogv' => 'video/ogg', 'ogx' => 'application/ogg', 'pbm' => 'image/x-portable-bitmap', 'pdf' => 'application/pdf', 'pgm' => 'image/x-portable-graymap', 'png' => 'image/png', 'pnm' => 'image/x-portable-anymap', 'ppm' => 'image/x-portable-pixmap', 'ppt' => 'application/vnd.ms-powerpoint', 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'ps' => 'application/postscript', 'qt' => 'video/quicktime', 'rar' => 'application/x-rar-compressed', 'ras' => 'image/x-cmu-raster', 'rss' => 'application/rss+xml', 'rtf' => 'application/rtf', 'sgm' => 'text/sgml', 'sgml' => 'text/sgml', 'svg' => 'image/svg+xml', 'swf' => 'application/x-shockwave-flash', 'tar' => 'application/x-tar', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'torrent' => 'application/x-bittorrent', 'ttf' => 'application/x-font-ttf', 'txt' => 'text/plain', 'wav' => 'audio/x-wav', 'webm' => 'video/webm', 'wma' => 'audio/x-ms-wma', 'wmv' => 'video/x-ms-wmv', 'woff' => 'application/x-font-woff', 'wsdl' => 'application/wsdl+xml', 'xbm' => 'image/x-xbitmap', 'xls' => 'application/vnd.ms-excel', 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xml' => 'application/xml', 'xpm' => 'image/x-xpixmap', 'xwd' => 'image/x-xwindowdump', 'yaml' => 'text/yaml', 'yml' => 'text/yaml', 'zip' => 'application/zip']; + $extension = \strtolower($extension); + return isset($mimetypes[$extension]) ? $mimetypes[$extension] : null; +} +/** + * Parses an HTTP message into an associative array. + * + * The array contains the "start-line" key containing the start line of + * the message, "headers" key containing an associative array of header + * array values, and a "body" key containing the body of the message. + * + * @param string $message HTTP request or response to parse. + * + * @return array + * @internal + */ +function _parse_message($message) +{ + if (!$message) { + throw new \InvalidArgumentException('Invalid message'); + } + // Iterate over each line in the message, accounting for line endings + $lines = \preg_split('/(\\r?\\n)/', $message, -1, \PREG_SPLIT_DELIM_CAPTURE); + $result = ['start-line' => \array_shift($lines), 'headers' => [], 'body' => '']; + \array_shift($lines); + for ($i = 0, $totalLines = \count($lines); $i < $totalLines; $i += 2) { + $line = $lines[$i]; + // If two line breaks were encountered, then this is the end of body + if (empty($line)) { + if ($i < $totalLines - 1) { + $result['body'] = \implode('', \array_slice($lines, $i + 2)); + } + break; + } + if (\strpos($line, ':')) { + $parts = \explode(':', $line, 2); + $key = \trim($parts[0]); + $value = isset($parts[1]) ? \trim($parts[1]) : ''; + $result['headers'][$key][] = $value; + } + } + return $result; +} +/** + * Constructs a URI for an HTTP request message. + * + * @param string $path Path from the start-line + * @param array $headers Array of headers (each value an array). + * + * @return string + * @internal + */ +function _parse_request_uri($path, array $headers) +{ + $hostKey = \array_filter(\array_keys($headers), function ($k) { + return \strtolower($k) === 'host'; + }); + // If no host is found, then a full URI cannot be constructed. + if (!$hostKey) { + return $path; + } + $host = $headers[\reset($hostKey)][0]; + $scheme = \substr($host, -4) === ':443' ? 'https' : 'http'; + return $scheme . '://' . $host . '/' . \ltrim($path, '/'); +} +/** @internal */ +function _caseless_remove($keys, array $data) +{ + $result = []; + foreach ($keys as &$key) { + $key = \strtolower($key); + } + foreach ($data as $k => $v) { + if (!\in_array(\strtolower($k), $keys)) { + $result[$k] = $v; + } + } + return $result; +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions_include.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions_include.php new file mode 100644 index 00000000..8003b008 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions_include.php @@ -0,0 +1,8 @@ +=5.3.0" + }, + "autoload": { + "psr-4": { + "_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\": "src\/" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + } +} \ No newline at end of file diff --git a/catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/MessageInterface.php b/catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/MessageInterface.php new file mode 100644 index 00000000..4d97eb5f --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/MessageInterface.php @@ -0,0 +1,177 @@ +getHeaders() as $name => $values) { + * echo $name . ": " . implode(", ", $values); + * } + * + * // Emit headers iteratively: + * foreach ($message->getHeaders() as $name => $values) { + * foreach ($values as $value) { + * header(sprintf('%s: %s', $name, $value), false); + * } + * } + * + * While header names are not case-sensitive, getHeaders() will preserve the + * exact case in which headers were originally specified. + * + * @return string[][] Returns an associative array of the message's headers. Each + * key MUST be a header name, and each value MUST be an array of strings + * for that header. + */ + public function getHeaders(); + /** + * Checks if a header exists by the given case-insensitive name. + * + * @param string $name Case-insensitive header field name. + * @return bool Returns true if any header names match the given header + * name using a case-insensitive string comparison. Returns false if + * no matching header name is found in the message. + */ + public function hasHeader($name); + /** + * Retrieves a message header value by the given case-insensitive name. + * + * This method returns an array of all the header values of the given + * case-insensitive header name. + * + * If the header does not appear in the message, this method MUST return an + * empty array. + * + * @param string $name Case-insensitive header field name. + * @return string[] An array of string values as provided for the given + * header. If the header does not appear in the message, this method MUST + * return an empty array. + */ + public function getHeader($name); + /** + * Retrieves a comma-separated string of the values for a single header. + * + * This method returns all of the header values of the given + * case-insensitive header name as a string concatenated together using + * a comma. + * + * NOTE: Not all header values may be appropriately represented using + * comma concatenation. For such headers, use getHeader() instead + * and supply your own delimiter when concatenating. + * + * If the header does not appear in the message, this method MUST return + * an empty string. + * + * @param string $name Case-insensitive header field name. + * @return string A string of values as provided for the given header + * concatenated together using a comma. If the header does not appear in + * the message, this method MUST return an empty string. + */ + public function getHeaderLine($name); + /** + * Return an instance with the provided value replacing the specified header. + * + * While header names are case-insensitive, the casing of the header will + * be preserved by this function, and returned from getHeaders(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new and/or updated header and value. + * + * @param string $name Case-insensitive header field name. + * @param string|string[] $value Header value(s). + * @return static + * @throws \InvalidArgumentException for invalid header names or values. + */ + public function withHeader($name, $value); + /** + * Return an instance with the specified header appended with the given value. + * + * Existing values for the specified header will be maintained. The new + * value(s) will be appended to the existing list. If the header did not + * exist previously, it will be added. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new header and/or value. + * + * @param string $name Case-insensitive header field name to add. + * @param string|string[] $value Header value(s). + * @return static + * @throws \InvalidArgumentException for invalid header names or values. + */ + public function withAddedHeader($name, $value); + /** + * Return an instance without the specified header. + * + * Header resolution MUST be done without case-sensitivity. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that removes + * the named header. + * + * @param string $name Case-insensitive header field name to remove. + * @return static + */ + public function withoutHeader($name); + /** + * Gets the body of the message. + * + * @return StreamInterface Returns the body as a stream. + */ + public function getBody(); + /** + * Return an instance with the specified message body. + * + * The body MUST be a StreamInterface object. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return a new instance that has the + * new body stream. + * + * @param StreamInterface $body Body. + * @return static + * @throws \InvalidArgumentException When the body is not valid. + */ + public function withBody(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $body); +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/RequestInterface.php b/catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/RequestInterface.php new file mode 100644 index 00000000..a69209a4 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/RequestInterface.php @@ -0,0 +1,124 @@ +getQuery()` + * or from the `QUERY_STRING` server param. + * + * @return array + */ + public function getQueryParams(); + /** + * Return an instance with the specified query string arguments. + * + * These values SHOULD remain immutable over the course of the incoming + * request. They MAY be injected during instantiation, such as from PHP's + * $_GET superglobal, or MAY be derived from some other value such as the + * URI. In cases where the arguments are parsed from the URI, the data + * MUST be compatible with what PHP's parse_str() would return for + * purposes of how duplicate query parameters are handled, and how nested + * sets are handled. + * + * Setting query string arguments MUST NOT change the URI stored by the + * request, nor the values in the server params. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated query string arguments. + * + * @param array $query Array of query string arguments, typically from + * $_GET. + * @return static + */ + public function withQueryParams(array $query); + /** + * Retrieve normalized file upload data. + * + * This method returns upload metadata in a normalized tree, with each leaf + * an instance of Psr\Http\Message\UploadedFileInterface. + * + * These values MAY be prepared from $_FILES or the message body during + * instantiation, or MAY be injected via withUploadedFiles(). + * + * @return array An array tree of UploadedFileInterface instances; an empty + * array MUST be returned if no data is present. + */ + public function getUploadedFiles(); + /** + * Create a new instance with the specified uploaded files. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated body parameters. + * + * @param array $uploadedFiles An array tree of UploadedFileInterface instances. + * @return static + * @throws \InvalidArgumentException if an invalid structure is provided. + */ + public function withUploadedFiles(array $uploadedFiles); + /** + * Retrieve any parameters provided in the request body. + * + * If the request Content-Type is either application/x-www-form-urlencoded + * or multipart/form-data, and the request method is POST, this method MUST + * return the contents of $_POST. + * + * Otherwise, this method may return any results of deserializing + * the request body content; as parsing returns structured content, the + * potential types MUST be arrays or objects only. A null value indicates + * the absence of body content. + * + * @return null|array|object The deserialized body parameters, if any. + * These will typically be an array or object. + */ + public function getParsedBody(); + /** + * Return an instance with the specified body parameters. + * + * These MAY be injected during instantiation. + * + * If the request Content-Type is either application/x-www-form-urlencoded + * or multipart/form-data, and the request method is POST, use this method + * ONLY to inject the contents of $_POST. + * + * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of + * deserializing the request body content. Deserialization/parsing returns + * structured data, and, as such, this method ONLY accepts arrays or objects, + * or a null value if nothing was available to parse. + * + * As an example, if content negotiation determines that the request data + * is a JSON payload, this method could be used to create a request + * instance with the deserialized parameters. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated body parameters. + * + * @param null|array|object $data The deserialized body data. This will + * typically be in an array or object. + * @return static + * @throws \InvalidArgumentException if an unsupported argument type is + * provided. + */ + public function withParsedBody($data); + /** + * Retrieve attributes derived from the request. + * + * The request "attributes" may be used to allow injection of any + * parameters derived from the request: e.g., the results of path + * match operations; the results of decrypting cookies; the results of + * deserializing non-form-encoded message bodies; etc. Attributes + * will be application and request specific, and CAN be mutable. + * + * @return array Attributes derived from the request. + */ + public function getAttributes(); + /** + * Retrieve a single derived request attribute. + * + * Retrieves a single derived request attribute as described in + * getAttributes(). If the attribute has not been previously set, returns + * the default value as provided. + * + * This method obviates the need for a hasAttribute() method, as it allows + * specifying a default value to return if the attribute is not found. + * + * @see getAttributes() + * @param string $name The attribute name. + * @param mixed $default Default value to return if the attribute does not exist. + * @return mixed + */ + public function getAttribute($name, $default = null); + /** + * Return an instance with the specified derived request attribute. + * + * This method allows setting a single derived request attribute as + * described in getAttributes(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated attribute. + * + * @see getAttributes() + * @param string $name The attribute name. + * @param mixed $value The value of the attribute. + * @return static + */ + public function withAttribute($name, $value); + /** + * Return an instance that removes the specified derived request attribute. + * + * This method allows removing a single derived request attribute as + * described in getAttributes(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that removes + * the attribute. + * + * @see getAttributes() + * @param string $name The attribute name. + * @return static + */ + public function withoutAttribute($name); +} diff --git a/catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/StreamInterface.php b/catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/StreamInterface.php new file mode 100644 index 00000000..9f6968a1 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/vendor/psr/http-message/src/StreamInterface.php @@ -0,0 +1,144 @@ + + * [user-info@]host[:port] + * + * + * If the port component is not set or is the standard port for the current + * scheme, it SHOULD NOT be included. + * + * @see https://tools.ietf.org/html/rfc3986#section-3.2 + * @return string The URI authority, in "[user-info@]host[:port]" format. + */ + public function getAuthority(); + /** + * Retrieve the user information component of the URI. + * + * If no user information is present, this method MUST return an empty + * string. + * + * If a user is present in the URI, this will return that value; + * additionally, if the password is also present, it will be appended to the + * user value, with a colon (":") separating the values. + * + * The trailing "@" character is not part of the user information and MUST + * NOT be added. + * + * @return string The URI user information, in "username[:password]" format. + */ + public function getUserInfo(); + /** + * Retrieve the host component of the URI. + * + * If no host is present, this method MUST return an empty string. + * + * The value returned MUST be normalized to lowercase, per RFC 3986 + * Section 3.2.2. + * + * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 + * @return string The URI host. + */ + public function getHost(); + /** + * Retrieve the port component of the URI. + * + * If a port is present, and it is non-standard for the current scheme, + * this method MUST return it as an integer. If the port is the standard port + * used with the current scheme, this method SHOULD return null. + * + * If no port is present, and no scheme is present, this method MUST return + * a null value. + * + * If no port is present, but a scheme is present, this method MAY return + * the standard port for that scheme, but SHOULD return null. + * + * @return null|int The URI port. + */ + public function getPort(); + /** + * Retrieve the path component of the URI. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * Normally, the empty path "" and absolute path "/" are considered equal as + * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically + * do this normalization because in contexts with a trimmed base path, e.g. + * the front controller, this difference becomes significant. It's the task + * of the user to handle both "" and "/". + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.3. + * + * As an example, if the value should include a slash ("/") not intended as + * delimiter between path segments, that value MUST be passed in encoded + * form (e.g., "%2F") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.3 + * @return string The URI path. + */ + public function getPath(); + /** + * Retrieve the query string of the URI. + * + * If no query string is present, this method MUST return an empty string. + * + * The leading "?" character is not part of the query and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.4. + * + * As an example, if a value in a key/value pair of the query string should + * include an ampersand ("&") not intended as a delimiter between values, + * that value MUST be passed in encoded form (e.g., "%26") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.4 + * @return string The URI query string. + */ + public function getQuery(); + /** + * Retrieve the fragment component of the URI. + * + * If no fragment is present, this method MUST return an empty string. + * + * The leading "#" character is not part of the fragment and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.5. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.5 + * @return string The URI fragment. + */ + public function getFragment(); + /** + * Return an instance with the specified scheme. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified scheme. + * + * Implementations MUST support the schemes "http" and "https" case + * insensitively, and MAY accommodate other schemes if required. + * + * An empty scheme is equivalent to removing the scheme. + * + * @param string $scheme The scheme to use with the new instance. + * @return static A new instance with the specified scheme. + * @throws \InvalidArgumentException for invalid or unsupported schemes. + */ + public function withScheme($scheme); + /** + * Return an instance with the specified user information. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified user information. + * + * Password is optional, but the user information MUST include the + * user; an empty string for the user is equivalent to removing user + * information. + * + * @param string $user The user name to use for authority. + * @param null|string $password The password associated with $user. + * @return static A new instance with the specified user information. + */ + public function withUserInfo($user, $password = null); + /** + * Return an instance with the specified host. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified host. + * + * An empty host value is equivalent to removing the host. + * + * @param string $host The hostname to use with the new instance. + * @return static A new instance with the specified host. + * @throws \InvalidArgumentException for invalid hostnames. + */ + public function withHost($host); + /** + * Return an instance with the specified port. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified port. + * + * Implementations MUST raise an exception for ports outside the + * established TCP and UDP port ranges. + * + * A null value provided for the port is equivalent to removing the port + * information. + * + * @param null|int $port The port to use with the new instance; a null value + * removes the port information. + * @return static A new instance with the specified port. + * @throws \InvalidArgumentException for invalid ports. + */ + public function withPort($port); + /** + * Return an instance with the specified path. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified path. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * If the path is intended to be domain-relative rather than path relative then + * it must begin with a slash ("/"). Paths not starting with a slash ("/") + * are assumed to be relative to some base path known to the application or + * consumer. + * + * Users can provide both encoded and decoded path characters. + * Implementations ensure the correct encoding as outlined in getPath(). + * + * @param string $path The path to use with the new instance. + * @return static A new instance with the specified path. + * @throws \InvalidArgumentException for invalid paths. + */ + public function withPath($path); + /** + * Return an instance with the specified query string. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified query string. + * + * Users can provide both encoded and decoded query characters. + * Implementations ensure the correct encoding as outlined in getQuery(). + * + * An empty query string value is equivalent to removing the query string. + * + * @param string $query The query string to use with the new instance. + * @return static A new instance with the specified query string. + * @throws \InvalidArgumentException for invalid query strings. + */ + public function withQuery($query); + /** + * Return an instance with the specified URI fragment. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified URI fragment. + * + * Users can provide both encoded and decoded fragment characters. + * Implementations ensure the correct encoding as outlined in getFragment(). + * + * An empty fragment value is equivalent to removing the fragment. + * + * @param string $fragment The fragment to use with the new instance. + * @return static A new instance with the specified fragment. + */ + public function withFragment($fragment); + /** + * Return the string representation as a URI reference. + * + * Depending on which components of the URI are present, the resulting + * string is either a full URI or relative reference according to RFC 3986, + * Section 4.1. The method concatenates the various components of the URI, + * using the appropriate delimiters: + * + * - If a scheme is present, it MUST be suffixed by ":". + * - If an authority is present, it MUST be prefixed by "//". + * - The path can be concatenated without delimiters. But there are two + * cases where the path has to be adjusted to make the URI reference + * valid as PHP does not allow to throw an exception in __toString(): + * - If the path is rootless and an authority is present, the path MUST + * be prefixed by "/". + * - If the path is starting with more than one "/" and no authority is + * present, the starting slashes MUST be reduced to one. + * - If a query is present, it MUST be prefixed by "?". + * - If a fragment is present, it MUST be prefixed by "#". + * + * @see http://tools.ietf.org/html/rfc3986#section-4.1 + * @return string + */ + public function __toString(); +} diff --git a/catalog/controller/extension/payment/mollie/base.php b/catalog/controller/payment/mollie/base.php similarity index 93% rename from catalog/controller/extension/payment/mollie/base.php rename to catalog/controller/payment/mollie/base.php index 03b019e9..f1278f07 100644 --- a/catalog/controller/extension/payment/mollie/base.php +++ b/catalog/controller/payment/mollie/base.php @@ -48,9 +48,12 @@ use Mollie\Api\MollieApiClient; use Mollie\Api\Types\PaymentStatus; -require_once(dirname(DIR_SYSTEM) . "/catalog/controller/extension/payment/mollie/helper.php"); +require_once(dirname(DIR_SYSTEM) . "/catalog/controller/payment/mollie/helper.php"); +require_once(DIR_SYSTEM . "comercia/util.php"); -class ControllerExtensionPaymentMollieBase extends Controller +use comercia\Util; + +class ControllerPaymentMollieBase extends Controller { // Current module name - should be overwritten by subclass using one of the values below. const MODULE_NAME = null; @@ -82,10 +85,10 @@ protected function writeToMollieLog($line, $alsoEcho = false) */ protected function getModuleModel() { - $model_name = "model_extension_payment_mollie_" . static::MODULE_NAME; + $model_name = "model_payment_mollie_" . static::MODULE_NAME; if (!isset($this->$model_name)) { - $this->load->model("extension/payment/mollie_" . static::MODULE_NAME); + Util::load()->model("payment/mollie_" . static::MODULE_NAME); } return $this->$model_name; @@ -112,9 +115,9 @@ protected function getOrderID() */ protected function getOpenCartOrder($order_id) { - $this->load->model("checkout/order"); + $orderModel = Util::load()->model("checkout/order"); // Load last order from session - return $this->model_checkout_order->getOrder($order_id); + return $orderModel->getOrder($order_id); } /** @@ -123,17 +126,17 @@ protected function getOpenCartOrder($order_id) */ public function index() { - $this->load->language("extension/payment/mollie"); + Util::load()->language("payment/mollie"); $payment_method = $this->getAPIClient()->methods->get(static::MODULE_NAME, array('include' => 'issuers')); // Set template data. - $data['action'] = $this->url->link("extension/payment/mollie_" . static::MODULE_NAME . "/payment", "", "SSL"); + $data['action'] = $this->url->link("payment/mollie_" . static::MODULE_NAME . "/payment", "", "SSL"); $data['image'] = $payment_method->image->size1x; $data['message'] = $this->language; $data['issuers'] = isset($payment_method->issuers) ? $payment_method->issuers : array(); $data['text_issuer'] = $this->language->get("text_issuer_" . static::MODULE_NAME); - $data['set_issuer_url'] = $this->url->link("extension/payment/mollie_" . static::MODULE_NAME . "/set_issuer", "", "SSL"); + $data['set_issuer_url'] = $this->url->link("payment/mollie_" . static::MODULE_NAME . "/set_issuer", "", "SSL"); // Return HTML output - it will get appended to confirm.tpl. return $this->renderTemplate('mollie_checkout_form', $data, array(), false); @@ -158,7 +161,7 @@ public function payment() } // Load essentials - $this->load->language("extension/payment/mollie"); + Util::load()->language("payment/mollie"); $model = $this->getModuleModel(); $order_id = $this->getOrderID(); @@ -167,7 +170,7 @@ public function payment() $currency = $this->session->data['currency']; $amount = $this->currency->convert($order['total'], $this->config->get("config_currency"), $currency); $description = str_replace("%", $order['order_id'], html_entity_decode($this->config->get(MollieHelper::getModuleCode() . "_ideal_description"), ENT_QUOTES, "UTF-8")); - $return_url = $this->url->link("extension/payment/mollie_" . static::MODULE_NAME . "/callback&order_id=" . $order['order_id'], "", "SSL"); + $return_url = $this->url->link("payment/mollie_" . static::MODULE_NAME . "/callback&order_id=" . $order['order_id'], "", "SSL"); $issuer = $this->getIssuer(); try { @@ -276,9 +279,9 @@ public function webhook() $payment = $this->getAPIClient()->payments->get($payment_id); // Load essentials - $this->load->model("checkout/order"); + Util::load()->model("checkout/order"); $this->getModuleModel(); - $this->load->language("extension/payment/mollie"); + Util::load()->language("payment/mollie"); //Get order_id of this transaction from db $order = $this->model_checkout_order->getOrder($payment->metadata->order_id); @@ -372,8 +375,8 @@ public function set_issuer() */ protected function getIssuer() { - if (!empty($this->request->post['mollie_issuer'])) { - return $this->request->post['mollie_issuer']; + if (!empty(Util::request()->post()->mollie_issuer)) { + return Util::request()->post()->mollie_issuer; } if (!empty($this->session->data['mollie_issuer'])) { @@ -417,7 +420,7 @@ public function callback() $this->writeToMollieLog("Received callback for order " . $order_id); // Load required translations. - $this->load->language("extension/payment/mollie"); + Util::load()->language("payment/mollie"); // Double-check whether or not the status of the order is correct. $model = $this->getModuleModel(); @@ -521,7 +524,7 @@ protected function setBreadcrumbs(&$data) */ protected function showErrorPage($message) { - $this->load->language("extension/payment/mollie"); + Util::load()->language("payment/mollie"); $this->log->write("Error setting up transaction with Mollie: {$message}."); @@ -544,7 +547,7 @@ protected function showErrorPage($message) */ protected function showReturnPage($title, $body, $api_error = null, $show_retry_button = true) { - $this->load->language("extension/payment/mollie"); + Util::load()->language("payment/mollie"); $data['message_title'] = $title; $data['message_text'] = $body; @@ -579,7 +582,7 @@ protected function showReturnPage($title, $body, $api_error = null, $show_retry_ */ public function getWebhookUrl() { - $system_webhook_url = $this->url->link("extension/payment/mollie_" . static::MODULE_NAME . "/webhook", "", "SSL"); + $system_webhook_url = $this->url->link("payment/mollie_" . static::MODULE_NAME . "/webhook", "", "SSL"); if (strpos($system_webhook_url, $this->getAdminDirectory()) !== false) { return str_replace($this->getAdminDirectory(), "", $system_webhook_url); @@ -642,17 +645,18 @@ protected function renderTemplate($template, $data, $common_children = array(), if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/' . $template)) { $template = $this->config->get('config_template') . '/template/payment/' . $template; } else if (file_exists(DIR_TEMPLATE . 'default/template/payment/' . $template)) { - $template = 'default/template/payment/' . $template; + $template = 'payment/' . $template; } else { $template = 'extension/payment/' . $template; } if (MollieHelper::isOpenCart2x()) { foreach ($common_children as $child) { - $data[$child] = $this->load->controller("common/" . $child); + $data[$child] = Util::load()->controller("common/" . $child); } + + $html = Util::load()->view($template, $data); - $html = $this->load->view($template, $data); } else { $this->template = $template; $this->children = array(); diff --git a/catalog/controller/extension/payment/mollie/helper.php b/catalog/controller/payment/mollie/helper.php similarity index 93% rename from catalog/controller/extension/payment/mollie/helper.php rename to catalog/controller/payment/mollie/helper.php index f36b900b..f348917e 100644 --- a/catalog/controller/extension/payment/mollie/helper.php +++ b/catalog/controller/payment/mollie/helper.php @@ -49,7 +49,7 @@ class MollieHelper */ public static function apiClientFound () { - return file_exists(realpath(DIR_SYSTEM . "/..") . "/catalog/controller/extension/payment/mollie-api-client/"); + return file_exists(realpath(DIR_SYSTEM . "/..") . "/catalog/controller/payment/mollie-api-client/"); } /** @@ -63,7 +63,7 @@ public static function getAPIClient ($config) { if (!self::$api_client && self::apiClientFound()) { - require_once(realpath(DIR_SYSTEM . "/..") . "/catalog/controller/extension/payment/mollie-api-client/vendor/autoload.php"); + require_once(realpath(DIR_SYSTEM . "/..") . "/catalog/controller/payment/mollie-api-client/vendor/autoload.php"); $mollie = new MollieApiClient; $mollie->setApiKey($config->get(self::getModuleCode() . '_api_key')); @@ -86,7 +86,7 @@ public static function getAPIClient ($config) */ public static function getAPIClientAdmin ($config) { - require_once(realpath(DIR_SYSTEM . "/..") . "/catalog/controller/extension/payment/mollie-api-client/vendor/autoload.php"); + require_once(realpath(DIR_SYSTEM . "/..") . "/catalog/controller/payment/mollie-api-client/vendor/autoload.php"); $mollie = new MollieApiClient; $mollie->setApiKey(isset($config[self::getModuleCode() . '_api_key']) ? $config[self::getModuleCode() . '_api_key'] : null); @@ -99,7 +99,7 @@ public static function getAPIClientAdmin ($config) public static function getAPIClientForKey($key = null) { - require_once(realpath(DIR_SYSTEM . "/..") . "/catalog/controller/extension/payment/mollie-api-client/vendor/autoload.php"); + require_once(realpath(DIR_SYSTEM . "/..") . "/catalog/controller/payment/mollie-api-client/vendor/autoload.php"); $mollie = new MollieApiClient; $mollie->setApiKey(!empty($key) ? $key : null); diff --git a/catalog/controller/payment/mollie_bancontact.php b/catalog/controller/payment/mollie_bancontact.php new file mode 100644 index 00000000..98fc8a70 --- /dev/null +++ b/catalog/controller/payment/mollie_bancontact.php @@ -0,0 +1,7 @@ + - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -/** - * German language file for iDEAL by Mollie - */ - -// Text -$_['heading_title'] = 'Zahlung via Mollie'; -$_['ideal_title'] = 'Ihre Zahlung'; -$_['text_title'] = 'Online bezahlen'; -$_['text_redirected'] = 'Der Kunde wurde auf den Zahlungs-Bildschirm umgeleitet'; -$_['text_issuer_ideal'] = 'Wählen Sie Ihre Bank'; -$_['text_issuer_giftcard'] = 'Wählen Sie Ihre Giftcard'; -$_['text_issuer_kbc'] = 'Wählen Sie Ihren Bezahl-Button'; -$_['button_retry'] = 'Erneut versuchen, abzurechnen'; - -// Status page: payment failed (e.g. cancelled). -$_['heading_failed'] = 'Ihre Zahlung ist nicht abgeschlossen'; -$_['msg_failed'] = 'Leider ist die Zahlung fehlgeschlagen. Klicken Sie auf die folgende Schaltfläche, um zum Abrechnungs-Bildschirm zurückzukehren.'; - -// Status page: payment pending. -$_['heading_unknown'] = 'Wir warten noch auf Ihre Zahlung'; -$_['msg_unknown'] = 'Wir haben Ihre Zahlung noch nicht erhalten. Wir werden eine Bestätigungsmail verschicken, sobald die Zahlung eingegangen ist.'; - -// Status page: API failure. -$_['heading_error'] = 'Beim Erstellen der Zahlung ist ein Fehler aufgetreten'; -$_['text_error'] = 'Beim Erstellen der Zahlung bei Mollie ist ein Fehler aufgetreten. Klicken Sie auf die folgende Schaltfläche, um zum Abrechnungs-Bildschirm zurückzukehren.'; - -// Response -$_['response_success'] = 'Die Zahlung wurde erhalten'; -$_['response_none'] = 'Wir warten noch auf die Zahlung. Sie erhalten eine E-Mail, sobald uns der Status Ihrer Zahlung bekannt ist.'; -$_['response_cancelled'] = 'Der Kunde hat die Zahlung annulliert'; -$_['response_failed'] = 'Die Zahlung ist leider fehlgeschlagen. Versuchen Sie es bitte erneut.'; -$_['response_expired'] = 'Die Zahlung ist verstrichen'; -$_['response_unknown'] = 'Es ist ein unbekannter Fehler aufgetreten'; - -// Methods -$_['method_ideal'] = 'iDEAL'; -$_['method_creditcard'] = 'Creditcard'; -$_['method_mistercash'] = 'Bancontact'; -$_['method_banktransfer'] = 'Übertragung'; -$_['method_directdebit'] = 'Einmaliges Inkasso'; -$_['method_belfius'] = 'Belfius Direct Net'; -$_['method_kbc'] = 'KBC/CBC-Betaalknop'; -$_['method_bitcoin'] = 'Bitcoin'; -$_['method_sofort'] = 'SOFORT Banking'; -$_['method_paypal'] = 'PayPal'; -$_['method_paysafecard'] = 'paysafecard'; -$_['method_giftcard'] = 'Giftcard'; -$_['method_inghomepay'] = 'ING Home\'Pay'; -$_['method_eps'] = 'Giropay'; -$_['method_giropay'] = 'EPS'; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/catalog/language/de-de/payment/mollie.php b/catalog/language/de-de/payment/mollie.php new file mode 100644 index 00000000..8efe4a60 --- /dev/null +++ b/catalog/language/de-de/payment/mollie.php @@ -0,0 +1,83 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +/** + * German language file for iDEAL by Mollie + */ + +// Text +$_['heading_title'] = 'Zahlung via Mollie'; +$_['ideal_title'] = 'Ihre Zahlung'; +$_['text_title'] = 'Online bezahlen'; +$_['text_redirected'] = 'Der Kunde wurde auf den Zahlungs-Bildschirm umgeleitet'; +$_['text_issuer_ideal'] = 'Wählen Sie Ihre Bank'; +$_['text_issuer_giftcard'] = 'Wählen Sie Ihre Giftcard'; +$_['text_issuer_kbc'] = 'Wählen Sie Ihren Bezahl-Button'; +$_['button_retry'] = 'Erneut versuchen, abzurechnen'; + +// Status page: payment failed (e.g. cancelled). +$_['heading_failed'] = 'Ihre Zahlung ist nicht abgeschlossen'; +$_['msg_failed'] = 'Leider ist die Zahlung fehlgeschlagen. Klicken Sie auf die folgende Schaltfläche, um zum Abrechnungs-Bildschirm zurückzukehren.'; + +// Status page: payment pending. +$_['heading_unknown'] = 'Wir warten noch auf Ihre Zahlung'; +$_['msg_unknown'] = 'Wir haben Ihre Zahlung noch nicht erhalten. Wir werden eine Bestätigungsmail verschicken, sobald die Zahlung eingegangen ist.'; + +// Status page: API failure. +$_['heading_error'] = 'Beim Erstellen der Zahlung ist ein Fehler aufgetreten'; +$_['text_error'] = 'Beim Erstellen der Zahlung bei Mollie ist ein Fehler aufgetreten. Klicken Sie auf die folgende Schaltfläche, um zum Abrechnungs-Bildschirm zurückzukehren.'; + +// Response +$_['response_success'] = 'Die Zahlung wurde erhalten'; +$_['response_none'] = 'Wir warten noch auf die Zahlung. Sie erhalten eine E-Mail, sobald uns der Status Ihrer Zahlung bekannt ist.'; +$_['response_cancelled'] = 'Der Kunde hat die Zahlung annulliert'; +$_['response_failed'] = 'Die Zahlung ist leider fehlgeschlagen. Versuchen Sie es bitte erneut.'; +$_['response_expired'] = 'Die Zahlung ist verstrichen'; +$_['response_unknown'] = 'Es ist ein unbekannter Fehler aufgetreten'; + +// Methods +$_['method_ideal'] = 'iDEAL'; +$_['method_creditcard'] = 'Creditcard'; +$_['method_mistercash'] = 'Bancontact'; +$_['method_banktransfer'] = 'Übertragung'; +$_['method_directdebit'] = 'Einmaliges Inkasso'; +$_['method_belfius'] = 'Belfius Direct Net'; +$_['method_kbc'] = 'KBC/CBC-Betaalknop'; +$_['method_bitcoin'] = 'Bitcoin'; +$_['method_sofort'] = 'SOFORT Banking'; +$_['method_paypal'] = 'PayPal'; +$_['method_paysafecard'] = 'paysafecard'; +$_['method_giftcard'] = 'Giftcard'; +$_['method_inghomepay'] = 'ING Home\'Pay'; +$_['method_eps'] = 'Giropay'; +$_['method_giropay'] = 'EPS'; diff --git a/catalog/language/dutch/extension/payment/mollie.php b/catalog/language/dutch/extension/payment/mollie.php index 5d4838c8..a37572d0 100644 --- a/catalog/language/dutch/extension/payment/mollie.php +++ b/catalog/language/dutch/extension/payment/mollie.php @@ -1,83 +1,2 @@ - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -/** - * Dutch language file for iDEAL by Mollie - */ - -// Text -$_['heading_title'] = 'Betaling via Mollie'; -$_['ideal_title'] = 'Uw betaling'; -$_['text_title'] = 'Online betalen'; -$_['text_redirected'] = 'De klant is doorgestuurd naar het betaalscherm'; -$_['text_issuer_ideal'] = 'Kies uw bank'; -$_['text_issuer_giftcard'] = 'Kies uw giftcard'; -$_['text_issuer_kbc'] = 'Kies uw betaalknop'; -$_['button_retry'] = 'Opnieuw proberen af te rekenen'; - -// Status page: payment failed (e.g. cancelled). -$_['heading_failed'] = 'Uw betaling is niet voltooid'; -$_['msg_failed'] = 'Helaas is de betaling mislukt. Klik op onderstaande knop om terug te keren naar het afrekenscherm.'; - -// Status page: payment pending. -$_['heading_unknown'] = 'We wachten nog op uw betaling'; -$_['msg_unknown'] = 'We hebben uw betaling nog niet ontvangen. Wij zullen een bevestigingsmail versturen op het moment dat de betaling binnen is.'; - -// Status page: API failure. -$_['heading_error'] = 'Er is een fout opgetreden bij het opzetten van de betaling'; -$_['text_error'] = 'Er is een fout opgetreden bij het opzetten van de betaling bij Mollie. Klik op onderstaande knop om terug te keren naar het afrekenscherm.'; - -// Response -$_['response_success'] = 'De betaling is ontvangen'; -$_['response_none'] = 'We wachten nog op de betaling. U krijgt een email zodra de status van de betaling bij ons bekend is.'; -$_['response_cancelled'] = 'De klant heeft de betaling geannuleerd'; -$_['response_failed'] = 'De betaling is helaas mislukt. Probeer het alstublieft opnieuw.'; -$_['response_expired'] = 'De betaling is verlopen'; -$_['response_unknown'] = 'Er is een onbekende fout opgetreden'; - -// Methods -$_['method_ideal'] = 'iDEAL'; -$_['method_creditcard'] = 'Creditcard'; -$_['method_bancontact'] = 'Bancontact'; -$_['method_banktransfer'] = 'Overboeking'; -$_['method_directdebit'] = 'Eenmalige incasso'; -$_['method_belfius'] = 'Belfius Direct Net'; -$_['method_kbc'] = 'KBC/CBC-Betaalknop'; -$_['method_bitcoin'] = 'Bitcoin'; -$_['method_sofort'] = 'SOFORT Banking'; -$_['method_paypal'] = 'PayPal'; -$_['method_paysafecard'] = 'paysafecard'; -$_['method_giftcard'] = 'Giftcard'; -$_['method_inghomepay'] = 'ING Home\'Pay'; -$_['method_eps'] = 'Giropay'; -$_['method_giropay'] = 'EPS'; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/catalog/language/dutch/payment/mollie.php b/catalog/language/dutch/payment/mollie.php new file mode 100644 index 00000000..5d4838c8 --- /dev/null +++ b/catalog/language/dutch/payment/mollie.php @@ -0,0 +1,83 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +/** + * Dutch language file for iDEAL by Mollie + */ + +// Text +$_['heading_title'] = 'Betaling via Mollie'; +$_['ideal_title'] = 'Uw betaling'; +$_['text_title'] = 'Online betalen'; +$_['text_redirected'] = 'De klant is doorgestuurd naar het betaalscherm'; +$_['text_issuer_ideal'] = 'Kies uw bank'; +$_['text_issuer_giftcard'] = 'Kies uw giftcard'; +$_['text_issuer_kbc'] = 'Kies uw betaalknop'; +$_['button_retry'] = 'Opnieuw proberen af te rekenen'; + +// Status page: payment failed (e.g. cancelled). +$_['heading_failed'] = 'Uw betaling is niet voltooid'; +$_['msg_failed'] = 'Helaas is de betaling mislukt. Klik op onderstaande knop om terug te keren naar het afrekenscherm.'; + +// Status page: payment pending. +$_['heading_unknown'] = 'We wachten nog op uw betaling'; +$_['msg_unknown'] = 'We hebben uw betaling nog niet ontvangen. Wij zullen een bevestigingsmail versturen op het moment dat de betaling binnen is.'; + +// Status page: API failure. +$_['heading_error'] = 'Er is een fout opgetreden bij het opzetten van de betaling'; +$_['text_error'] = 'Er is een fout opgetreden bij het opzetten van de betaling bij Mollie. Klik op onderstaande knop om terug te keren naar het afrekenscherm.'; + +// Response +$_['response_success'] = 'De betaling is ontvangen'; +$_['response_none'] = 'We wachten nog op de betaling. U krijgt een email zodra de status van de betaling bij ons bekend is.'; +$_['response_cancelled'] = 'De klant heeft de betaling geannuleerd'; +$_['response_failed'] = 'De betaling is helaas mislukt. Probeer het alstublieft opnieuw.'; +$_['response_expired'] = 'De betaling is verlopen'; +$_['response_unknown'] = 'Er is een onbekende fout opgetreden'; + +// Methods +$_['method_ideal'] = 'iDEAL'; +$_['method_creditcard'] = 'Creditcard'; +$_['method_bancontact'] = 'Bancontact'; +$_['method_banktransfer'] = 'Overboeking'; +$_['method_directdebit'] = 'Eenmalige incasso'; +$_['method_belfius'] = 'Belfius Direct Net'; +$_['method_kbc'] = 'KBC/CBC-Betaalknop'; +$_['method_bitcoin'] = 'Bitcoin'; +$_['method_sofort'] = 'SOFORT Banking'; +$_['method_paypal'] = 'PayPal'; +$_['method_paysafecard'] = 'paysafecard'; +$_['method_giftcard'] = 'Giftcard'; +$_['method_inghomepay'] = 'ING Home\'Pay'; +$_['method_eps'] = 'Giropay'; +$_['method_giropay'] = 'EPS'; diff --git a/catalog/language/en-gb/extension/payment/mollie.php b/catalog/language/en-gb/extension/payment/mollie.php index e3471522..a37572d0 100644 --- a/catalog/language/en-gb/extension/payment/mollie.php +++ b/catalog/language/en-gb/extension/payment/mollie.php @@ -1,83 +1,2 @@ - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -/** - * English language file for iDEAL by Mollie - */ - -// Text -$_['heading_title'] = 'Payment by Mollie'; -$_['ideal_title'] = 'Your payment'; -$_['text_title'] = 'Pay online'; -$_['text_redirected'] = 'The client has been referred to the payment screen'; -$_['text_issuer_ideal'] = 'Select your bank'; -$_['text_issuer_giftcard'] = 'Select your giftcard'; -$_['text_issuer_kbc'] = 'Select your payment button.'; -$_['button_retry'] = 'Return to checkout page'; - -// Status page: payment failed (e.g. cancelled). -$_['heading_failed'] = 'Your payment has not been completed'; -$_['msg_failed'] = 'Unfortunately your payment has failed. Please click the button below to return to the checkout page and retry setting up a payment.'; - -// Status page: payment pending. -$_['heading_unknown'] = 'Your payment is pending'; -$_['msg_unknown'] = 'Your payment has not been received yet. We will send you a confirmation email the moment the payment is received.'; - -// Status page: API failure. -$_['heading_error'] = 'An error occurred when setting up the payment'; -$_['text_error'] = 'An error occurred when setting up the payment with Mollie. Click the button below to return to the checkout page.'; - -// Response -$_['response_success'] = 'The payment is received'; -$_['response_none'] = 'The payment is not received yet'; -$_['response_cancelled'] = 'The client has canceled the payment'; -$_['response_failed'] = 'Unfortunately something went wrong. Please retry the payment.'; -$_['response_expired'] = 'The payment has expired'; -$_['response_unknown'] = 'An unknown error occurred'; - -// Methods -$_['method_ideal'] = 'iDEAL'; -$_['method_creditcard'] = 'Creditcard'; -$_['method_bancontact'] = 'Bancontact'; -$_['method_banktransfer'] = 'Bank transfer'; -$_['method_directdebit'] = 'Direct debit'; -$_['method_belfius'] = 'Belfius Direct Net'; -$_['method_kbc'] = 'KBC/CBC Payment Button'; -$_['method_bitcoin'] = 'Bitcoin'; -$_['method_sofort'] = 'SOFORT Banking'; -$_['method_paypal'] = 'PayPal'; -$_['method_paysafecard'] = 'paysafecard'; -$_['method_giftcard'] = 'Giftcard'; -$_['method_inghomepay'] = 'ING Home\'Pay'; -$_['method_eps'] = 'Giropay'; -$_['method_giropay'] = 'EPS'; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/catalog/language/en-gb/payment/mollie.php b/catalog/language/en-gb/payment/mollie.php new file mode 100644 index 00000000..e3471522 --- /dev/null +++ b/catalog/language/en-gb/payment/mollie.php @@ -0,0 +1,83 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +/** + * English language file for iDEAL by Mollie + */ + +// Text +$_['heading_title'] = 'Payment by Mollie'; +$_['ideal_title'] = 'Your payment'; +$_['text_title'] = 'Pay online'; +$_['text_redirected'] = 'The client has been referred to the payment screen'; +$_['text_issuer_ideal'] = 'Select your bank'; +$_['text_issuer_giftcard'] = 'Select your giftcard'; +$_['text_issuer_kbc'] = 'Select your payment button.'; +$_['button_retry'] = 'Return to checkout page'; + +// Status page: payment failed (e.g. cancelled). +$_['heading_failed'] = 'Your payment has not been completed'; +$_['msg_failed'] = 'Unfortunately your payment has failed. Please click the button below to return to the checkout page and retry setting up a payment.'; + +// Status page: payment pending. +$_['heading_unknown'] = 'Your payment is pending'; +$_['msg_unknown'] = 'Your payment has not been received yet. We will send you a confirmation email the moment the payment is received.'; + +// Status page: API failure. +$_['heading_error'] = 'An error occurred when setting up the payment'; +$_['text_error'] = 'An error occurred when setting up the payment with Mollie. Click the button below to return to the checkout page.'; + +// Response +$_['response_success'] = 'The payment is received'; +$_['response_none'] = 'The payment is not received yet'; +$_['response_cancelled'] = 'The client has canceled the payment'; +$_['response_failed'] = 'Unfortunately something went wrong. Please retry the payment.'; +$_['response_expired'] = 'The payment has expired'; +$_['response_unknown'] = 'An unknown error occurred'; + +// Methods +$_['method_ideal'] = 'iDEAL'; +$_['method_creditcard'] = 'Creditcard'; +$_['method_bancontact'] = 'Bancontact'; +$_['method_banktransfer'] = 'Bank transfer'; +$_['method_directdebit'] = 'Direct debit'; +$_['method_belfius'] = 'Belfius Direct Net'; +$_['method_kbc'] = 'KBC/CBC Payment Button'; +$_['method_bitcoin'] = 'Bitcoin'; +$_['method_sofort'] = 'SOFORT Banking'; +$_['method_paypal'] = 'PayPal'; +$_['method_paysafecard'] = 'paysafecard'; +$_['method_giftcard'] = 'Giftcard'; +$_['method_inghomepay'] = 'ING Home\'Pay'; +$_['method_eps'] = 'Giropay'; +$_['method_giropay'] = 'EPS'; diff --git a/catalog/language/english/extension/payment/mollie.php b/catalog/language/english/extension/payment/mollie.php index 84048009..a37572d0 100644 --- a/catalog/language/english/extension/payment/mollie.php +++ b/catalog/language/english/extension/payment/mollie.php @@ -1,83 +1,2 @@ - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -/** - * English language file for iDEAL by Mollie - */ - -// Text -$_['heading_title'] = 'Payment by Mollie'; -$_['ideal_title'] = 'Your payment'; -$_['text_title'] = 'Pay online'; -$_['text_redirected'] = 'The client has been referred to the payment screen'; -$_['text_issuer_ideal'] = 'Select your bank'; -$_['text_issuer_giftcard'] = 'Select your giftcard'; -$_['text_issuer_kbc'] = 'Select your payment button'; -$_['button_retry'] = 'Return to checkout page'; - -// Status page: payment failed (e.g. cancelled). -$_['heading_failed'] = 'Your payment has not been completed'; -$_['msg_failed'] = 'Unfortunately your payment has failed. Please click the button below to return to the checkout page and retry setting up a payment.'; - -// Status page: payment pending. -$_['heading_unknown'] = 'Your payment is pending'; -$_['msg_unknown'] = 'Your payment has not been received yet. We will send you a confirmation email the moment the payment is received.'; - -// Status page: API failure. -$_['heading_error'] = 'An error occurred when setting up the payment'; -$_['text_error'] = 'An error occurred when setting up the payment with Mollie. Click the button below to return to the checkout page.'; - -// Response -$_['response_success'] = 'The payment is received'; -$_['response_none'] = 'The payment is not received yet'; -$_['response_cancelled'] = 'The client has canceled the payment'; -$_['response_failed'] = 'Unfortunately something went wrong. Please retry the payment.'; -$_['response_expired'] = 'The payment has expired'; -$_['response_unknown'] = 'An unknown error occurred'; - -// Methods -$_['method_ideal'] = 'iDEAL'; -$_['method_creditcard'] = 'Creditcard'; -$_['method_bancontact'] = 'Bancontact'; -$_['method_banktransfer'] = 'Bank transfer'; -$_['method_directdebit'] = 'Direct debit'; -$_['method_belfius'] = 'Belfius Direct Net'; -$_['method_kbc'] = 'KBC/CBC Payment Button'; -$_['method_bitcoin'] = 'Bitcoin'; -$_['method_sofort'] = 'SOFORT Banking'; -$_['method_paypal'] = 'PayPal'; -$_['method_paysafecard'] = 'paysafecard'; -$_['method_giftcard'] = 'Webshop Giftcard'; -$_['method_inghomepay'] = 'ING Home\'Pay'; -$_['method_eps'] = 'Giropay'; -$_['method_giropay'] = 'EPS'; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/catalog/language/english/payment/mollie.php b/catalog/language/english/payment/mollie.php new file mode 100644 index 00000000..84048009 --- /dev/null +++ b/catalog/language/english/payment/mollie.php @@ -0,0 +1,83 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +/** + * English language file for iDEAL by Mollie + */ + +// Text +$_['heading_title'] = 'Payment by Mollie'; +$_['ideal_title'] = 'Your payment'; +$_['text_title'] = 'Pay online'; +$_['text_redirected'] = 'The client has been referred to the payment screen'; +$_['text_issuer_ideal'] = 'Select your bank'; +$_['text_issuer_giftcard'] = 'Select your giftcard'; +$_['text_issuer_kbc'] = 'Select your payment button'; +$_['button_retry'] = 'Return to checkout page'; + +// Status page: payment failed (e.g. cancelled). +$_['heading_failed'] = 'Your payment has not been completed'; +$_['msg_failed'] = 'Unfortunately your payment has failed. Please click the button below to return to the checkout page and retry setting up a payment.'; + +// Status page: payment pending. +$_['heading_unknown'] = 'Your payment is pending'; +$_['msg_unknown'] = 'Your payment has not been received yet. We will send you a confirmation email the moment the payment is received.'; + +// Status page: API failure. +$_['heading_error'] = 'An error occurred when setting up the payment'; +$_['text_error'] = 'An error occurred when setting up the payment with Mollie. Click the button below to return to the checkout page.'; + +// Response +$_['response_success'] = 'The payment is received'; +$_['response_none'] = 'The payment is not received yet'; +$_['response_cancelled'] = 'The client has canceled the payment'; +$_['response_failed'] = 'Unfortunately something went wrong. Please retry the payment.'; +$_['response_expired'] = 'The payment has expired'; +$_['response_unknown'] = 'An unknown error occurred'; + +// Methods +$_['method_ideal'] = 'iDEAL'; +$_['method_creditcard'] = 'Creditcard'; +$_['method_bancontact'] = 'Bancontact'; +$_['method_banktransfer'] = 'Bank transfer'; +$_['method_directdebit'] = 'Direct debit'; +$_['method_belfius'] = 'Belfius Direct Net'; +$_['method_kbc'] = 'KBC/CBC Payment Button'; +$_['method_bitcoin'] = 'Bitcoin'; +$_['method_sofort'] = 'SOFORT Banking'; +$_['method_paypal'] = 'PayPal'; +$_['method_paysafecard'] = 'paysafecard'; +$_['method_giftcard'] = 'Webshop Giftcard'; +$_['method_inghomepay'] = 'ING Home\'Pay'; +$_['method_eps'] = 'Giropay'; +$_['method_giropay'] = 'EPS'; diff --git a/catalog/language/es-es/extension/payment/mollie.php b/catalog/language/es-es/extension/payment/mollie.php index 245d33f7..a37572d0 100644 --- a/catalog/language/es-es/extension/payment/mollie.php +++ b/catalog/language/es-es/extension/payment/mollie.php @@ -1,83 +1,2 @@ - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -/** - * Spanish language file for iDEAL by Mollie - */ - -// Text -$_['heading_title'] = 'Pago a través de Mollie'; -$_['ideal_title'] = 'su pago'; -$_['text_title'] = 'Pagar en línea'; -$_['text_redirected'] = 'El cliente ha sido redirigido a la pantalla de pago'; -$_['text_issuer_ideal'] = 'Seleccione su banco'; -$_['text_issuer_giftcard'] = 'Seleccione su tarjeta regalo'; -$_['text_issuer_kbc'] = 'Seleccione su botón de pago'; -$_['button_retry'] = 'Intente pagar de nuevo'; - -// Status page: payment failed (e.g. cancelled). -$_['heading_failed'] = 'Su pago no se ha completado'; -$_['msg_failed'] = 'Lamentablemente, no se ha efectuado el pago. Haga clic en el siguiente botón para volver a la pantalla de pago.'; - -// Status page: payment pending. -$_['heading_unknown'] = 'Seguimos esperando su pago'; -$_['msg_unknown'] = 'Aún no hemos recibido su pago. Le enviaremos un correo electrónico de confirmación tan pronto como recibamos el pago.'; - -// Status page: API failure. -$_['heading_error'] = 'Se ha producido un error en la configuración del pago'; -$_['text_error'] = 'Se ha producido un error en la configuración del pago en Mollie. Haga clic en el siguiente botón para volver a la pantalla de pago.'; - -// Response -$_['response_success'] = 'El pago ha sido recibido'; -$_['response_none'] = 'Seguimos esperando el pago. Recibirá un correo electrónico tan pronto como sepamos el estado del pago.'; -$_['response_cancelled'] = 'El cliente ha cancelado el pago'; -$_['response_failed'] = 'Lamentablemente, no se ha efectuado el pago. Por favor, inténtelo de nuevo.'; -$_['response_expired'] = 'El pago ha caducado'; -$_['response_unknown'] = 'Se ha producido un error desconocido'; - -// Methods -$_['method_ideal'] = 'iDEAL'; -$_['method_creditcard'] = 'Creditcard'; -$_['method_mistercash'] = 'Bancontact'; -$_['method_banktransfer'] = 'Transferencia bancaria'; -$_['method_directdebit'] = 'Adeudo bancario'; -$_['method_belfius'] = 'Belfius Direct Net'; -$_['method_kbc'] = 'KBC/CBC-Betaalknop'; -$_['method_bitcoin'] = 'Bitcoin'; -$_['method_sofort'] = 'SOFORT Banking'; -$_['method_paypal'] = 'PayPal'; -$_['method_paysafecard'] = 'paysafecard'; -$_['method_giftcard'] = 'Giftcard'; -$_['method_inghomepay'] = 'ING Home\'Pay'; -$_['method_eps'] = 'Giropay'; -$_['method_giropay'] = 'EPS'; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/catalog/language/es-es/payment/mollie.php b/catalog/language/es-es/payment/mollie.php new file mode 100644 index 00000000..245d33f7 --- /dev/null +++ b/catalog/language/es-es/payment/mollie.php @@ -0,0 +1,83 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +/** + * Spanish language file for iDEAL by Mollie + */ + +// Text +$_['heading_title'] = 'Pago a través de Mollie'; +$_['ideal_title'] = 'su pago'; +$_['text_title'] = 'Pagar en línea'; +$_['text_redirected'] = 'El cliente ha sido redirigido a la pantalla de pago'; +$_['text_issuer_ideal'] = 'Seleccione su banco'; +$_['text_issuer_giftcard'] = 'Seleccione su tarjeta regalo'; +$_['text_issuer_kbc'] = 'Seleccione su botón de pago'; +$_['button_retry'] = 'Intente pagar de nuevo'; + +// Status page: payment failed (e.g. cancelled). +$_['heading_failed'] = 'Su pago no se ha completado'; +$_['msg_failed'] = 'Lamentablemente, no se ha efectuado el pago. Haga clic en el siguiente botón para volver a la pantalla de pago.'; + +// Status page: payment pending. +$_['heading_unknown'] = 'Seguimos esperando su pago'; +$_['msg_unknown'] = 'Aún no hemos recibido su pago. Le enviaremos un correo electrónico de confirmación tan pronto como recibamos el pago.'; + +// Status page: API failure. +$_['heading_error'] = 'Se ha producido un error en la configuración del pago'; +$_['text_error'] = 'Se ha producido un error en la configuración del pago en Mollie. Haga clic en el siguiente botón para volver a la pantalla de pago.'; + +// Response +$_['response_success'] = 'El pago ha sido recibido'; +$_['response_none'] = 'Seguimos esperando el pago. Recibirá un correo electrónico tan pronto como sepamos el estado del pago.'; +$_['response_cancelled'] = 'El cliente ha cancelado el pago'; +$_['response_failed'] = 'Lamentablemente, no se ha efectuado el pago. Por favor, inténtelo de nuevo.'; +$_['response_expired'] = 'El pago ha caducado'; +$_['response_unknown'] = 'Se ha producido un error desconocido'; + +// Methods +$_['method_ideal'] = 'iDEAL'; +$_['method_creditcard'] = 'Creditcard'; +$_['method_mistercash'] = 'Bancontact'; +$_['method_banktransfer'] = 'Transferencia bancaria'; +$_['method_directdebit'] = 'Adeudo bancario'; +$_['method_belfius'] = 'Belfius Direct Net'; +$_['method_kbc'] = 'KBC/CBC-Betaalknop'; +$_['method_bitcoin'] = 'Bitcoin'; +$_['method_sofort'] = 'SOFORT Banking'; +$_['method_paypal'] = 'PayPal'; +$_['method_paysafecard'] = 'paysafecard'; +$_['method_giftcard'] = 'Giftcard'; +$_['method_inghomepay'] = 'ING Home\'Pay'; +$_['method_eps'] = 'Giropay'; +$_['method_giropay'] = 'EPS'; diff --git a/catalog/language/fr-fr/extension/payment/mollie.php b/catalog/language/fr-fr/extension/payment/mollie.php index 7fcddd77..a37572d0 100644 --- a/catalog/language/fr-fr/extension/payment/mollie.php +++ b/catalog/language/fr-fr/extension/payment/mollie.php @@ -1,83 +1,2 @@ - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -/** - * English language file for iDEAL by Mollie - */ - -// Text -$_['heading_title'] = 'Paiement par Mollie'; -$_['ideal_title'] = 'Votre paiement'; -$_['text_title'] = 'Payez en ligne'; -$_['text_redirected'] = 'Le client a été renvoyé à l\'écran de paiement'; -$_['text_issuer_ideal'] = 'Selectionnez votre banque:'; -$_['text_issuer_giftcard'] = 'Sélectionnez votre carte-cadeau:'; -$_['text_issuer_kbc'] = 'Sélectionnez votre bouton de paiement:'; -$_['button_retry'] = 'Retour à la page de paiement'; - -// Status page: payment failed (e.g. cancelled). -$_['heading_failed'] = 'Votre paiement n\'a pas été achevée'; -$_['msg_failed'] = 'Malheureusement, votre paiement est échoué.'; - -// Status page: payment pending. -$_['heading_unknown'] = 'Votre paiement est en attente'; -$_['msg_unknown'] = 'Votre paiement n\'a pas encore été reçu. Nous vous enverrons un e-mail de confirmation au moment où le paiement est reçu.'; - -// Status page: API failure. -$_['heading_error'] = 'Une erreur s\'est produite lors de la mise en place du paiement'; -$_['text_error'] = 'Une erreur s\'est produite lors de la mise en place du paiement avec Mollie:'; - -// Response -$_['response_success'] = 'Le paiement est reçu'; -$_['response_none'] = 'Le paiement n\'est pas encore reçu'; -$_['response_cancelled'] = 'Le client a annulé le paiement'; -$_['response_failed'] = 'Malheureusement une erreur s\'est produite. S\'il vous plaît réessayer le paiement.'; -$_['response_expired'] = 'Le paiement a expiré'; -$_['response_unknown'] = 'Une erreur inconnue s\'est produite'; - -// Methods -$_['method_ideal'] = 'iDEAL'; -$_['method_creditcard'] = 'Creditcard'; -$_['method_bancontact'] = 'Bancontact'; -$_['method_banktransfer'] = 'Bank transfer'; -$_['method_directdebit'] = 'Bank transfer'; -$_['method_belfius'] = 'Belfius Direct Net'; -$_['method_kbc'] = "Bouton de paiement KBC/CBC"; -$_['method_bitcoin'] = 'Bitcoin'; -$_['method_sofort'] = 'SOFORT Banking'; -$_['method_paypal'] = 'PayPal'; -$_['method_paysafecard'] = 'paysafecard'; -$_['method_giftcard'] = 'Giftcard'; -$_['method_inghomepay'] = 'ING Home\'Pay'; -$_['method_eps'] = 'Giropay'; -$_['method_giropay'] = 'EPS'; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/catalog/language/fr-fr/payment/mollie.php b/catalog/language/fr-fr/payment/mollie.php new file mode 100644 index 00000000..7fcddd77 --- /dev/null +++ b/catalog/language/fr-fr/payment/mollie.php @@ -0,0 +1,83 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +/** + * English language file for iDEAL by Mollie + */ + +// Text +$_['heading_title'] = 'Paiement par Mollie'; +$_['ideal_title'] = 'Votre paiement'; +$_['text_title'] = 'Payez en ligne'; +$_['text_redirected'] = 'Le client a été renvoyé à l\'écran de paiement'; +$_['text_issuer_ideal'] = 'Selectionnez votre banque:'; +$_['text_issuer_giftcard'] = 'Sélectionnez votre carte-cadeau:'; +$_['text_issuer_kbc'] = 'Sélectionnez votre bouton de paiement:'; +$_['button_retry'] = 'Retour à la page de paiement'; + +// Status page: payment failed (e.g. cancelled). +$_['heading_failed'] = 'Votre paiement n\'a pas été achevée'; +$_['msg_failed'] = 'Malheureusement, votre paiement est échoué.'; + +// Status page: payment pending. +$_['heading_unknown'] = 'Votre paiement est en attente'; +$_['msg_unknown'] = 'Votre paiement n\'a pas encore été reçu. Nous vous enverrons un e-mail de confirmation au moment où le paiement est reçu.'; + +// Status page: API failure. +$_['heading_error'] = 'Une erreur s\'est produite lors de la mise en place du paiement'; +$_['text_error'] = 'Une erreur s\'est produite lors de la mise en place du paiement avec Mollie:'; + +// Response +$_['response_success'] = 'Le paiement est reçu'; +$_['response_none'] = 'Le paiement n\'est pas encore reçu'; +$_['response_cancelled'] = 'Le client a annulé le paiement'; +$_['response_failed'] = 'Malheureusement une erreur s\'est produite. S\'il vous plaît réessayer le paiement.'; +$_['response_expired'] = 'Le paiement a expiré'; +$_['response_unknown'] = 'Une erreur inconnue s\'est produite'; + +// Methods +$_['method_ideal'] = 'iDEAL'; +$_['method_creditcard'] = 'Creditcard'; +$_['method_bancontact'] = 'Bancontact'; +$_['method_banktransfer'] = 'Bank transfer'; +$_['method_directdebit'] = 'Bank transfer'; +$_['method_belfius'] = 'Belfius Direct Net'; +$_['method_kbc'] = "Bouton de paiement KBC/CBC"; +$_['method_bitcoin'] = 'Bitcoin'; +$_['method_sofort'] = 'SOFORT Banking'; +$_['method_paypal'] = 'PayPal'; +$_['method_paysafecard'] = 'paysafecard'; +$_['method_giftcard'] = 'Giftcard'; +$_['method_inghomepay'] = 'ING Home\'Pay'; +$_['method_eps'] = 'Giropay'; +$_['method_giropay'] = 'EPS'; diff --git a/catalog/language/french/extension/payment/mollie.php b/catalog/language/french/extension/payment/mollie.php index 85aff8a9..a37572d0 100644 --- a/catalog/language/french/extension/payment/mollie.php +++ b/catalog/language/french/extension/payment/mollie.php @@ -1,83 +1,2 @@ - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -/** - * English language file for iDEAL by Mollie - */ - -// Text -$_['heading_title'] = 'Paiement par Mollie'; -$_['ideal_title'] = 'Votre paiement'; -$_['text_title'] = 'Payez en ligne'; -$_['text_redirected'] = 'Le client a été renvoyé à l\'écran de paiement'; -$_['text_issuer_ideal'] = 'Selectionnez votre banque:'; -$_['text_issuer_giftcard'] = 'Sélectionnez votre carte-cadeau:'; -$_['text_issuer_kbc'] = 'Sélectionnez votre bouton de paiement:'; -$_['button_retry'] = 'Retour à la page de paiement'; - -// Status page: payment failed (e.g. cancelled). -$_['heading_failed'] = 'Votre paiement n\'a pas été achevée'; -$_['msg_failed'] = 'Malheureusement, votre paiement est échoué.'; - -// Status page: payment pending. -$_['heading_unknown'] = 'Votre paiement est en attente'; -$_['msg_unknown'] = 'Votre paiement n\'a pas encore été reçu. Nous vous enverrons un e-mail de confirmation au moment où le paiement est reçu.'; - -// Status page: API failure. -$_['heading_error'] = 'Une erreur s\'est produite lors de la mise en place du paiement'; -$_['text_error'] = 'Une erreur s\'est produite lors de la mise en place du paiement avec Mollie:'; - -// Response -$_['response_success'] = 'Le paiement est reçu'; -$_['response_none'] = 'Le paiement n\'est pas encore reçu'; -$_['response_cancelled'] = 'Le client a annulé le paiement'; -$_['response_failed'] = 'Malheureusement une erreur s\'est produite. S\'il vous plaît réessayer le paiement.'; -$_['response_expired'] = 'Le paiement a expiré'; -$_['response_unknown'] = 'Une erreur inconnue s\'est produite'; - -// Methods -$_['method_ideal'] = 'iDEAL'; -$_['method_creditcard'] = 'Creditcard'; -$_['method_bancontact'] = 'Bancontact'; -$_['method_banktransfer'] = 'Bank transfer'; -$_['method_directdebit'] = 'Bank transfer'; -$_['method_belfius'] = 'Belfius Direct Net'; -$_['method_kbc'] = "Bouton de paiement KBC/CBC"; -$_['method_bitcoin'] = 'Bitcoin'; -$_['method_sofort'] = 'SOFORT Banking'; -$_['method_paypal'] = 'PayPal'; -$_['method_paysafecard'] = 'paysafecard'; -$_['method_giftcard'] = 'Giftcard'; -$_['method_inghomepay'] = 'ING Home\'Pay'; -$_['method_eps'] = 'Giropay'; -$_['method_giropay'] = 'EPS'; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/catalog/language/french/payment/mollie.php b/catalog/language/french/payment/mollie.php new file mode 100644 index 00000000..85aff8a9 --- /dev/null +++ b/catalog/language/french/payment/mollie.php @@ -0,0 +1,83 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +/** + * English language file for iDEAL by Mollie + */ + +// Text +$_['heading_title'] = 'Paiement par Mollie'; +$_['ideal_title'] = 'Votre paiement'; +$_['text_title'] = 'Payez en ligne'; +$_['text_redirected'] = 'Le client a été renvoyé à l\'écran de paiement'; +$_['text_issuer_ideal'] = 'Selectionnez votre banque:'; +$_['text_issuer_giftcard'] = 'Sélectionnez votre carte-cadeau:'; +$_['text_issuer_kbc'] = 'Sélectionnez votre bouton de paiement:'; +$_['button_retry'] = 'Retour à la page de paiement'; + +// Status page: payment failed (e.g. cancelled). +$_['heading_failed'] = 'Votre paiement n\'a pas été achevée'; +$_['msg_failed'] = 'Malheureusement, votre paiement est échoué.'; + +// Status page: payment pending. +$_['heading_unknown'] = 'Votre paiement est en attente'; +$_['msg_unknown'] = 'Votre paiement n\'a pas encore été reçu. Nous vous enverrons un e-mail de confirmation au moment où le paiement est reçu.'; + +// Status page: API failure. +$_['heading_error'] = 'Une erreur s\'est produite lors de la mise en place du paiement'; +$_['text_error'] = 'Une erreur s\'est produite lors de la mise en place du paiement avec Mollie:'; + +// Response +$_['response_success'] = 'Le paiement est reçu'; +$_['response_none'] = 'Le paiement n\'est pas encore reçu'; +$_['response_cancelled'] = 'Le client a annulé le paiement'; +$_['response_failed'] = 'Malheureusement une erreur s\'est produite. S\'il vous plaît réessayer le paiement.'; +$_['response_expired'] = 'Le paiement a expiré'; +$_['response_unknown'] = 'Une erreur inconnue s\'est produite'; + +// Methods +$_['method_ideal'] = 'iDEAL'; +$_['method_creditcard'] = 'Creditcard'; +$_['method_bancontact'] = 'Bancontact'; +$_['method_banktransfer'] = 'Bank transfer'; +$_['method_directdebit'] = 'Bank transfer'; +$_['method_belfius'] = 'Belfius Direct Net'; +$_['method_kbc'] = "Bouton de paiement KBC/CBC"; +$_['method_bitcoin'] = 'Bitcoin'; +$_['method_sofort'] = 'SOFORT Banking'; +$_['method_paypal'] = 'PayPal'; +$_['method_paysafecard'] = 'paysafecard'; +$_['method_giftcard'] = 'Giftcard'; +$_['method_inghomepay'] = 'ING Home\'Pay'; +$_['method_eps'] = 'Giropay'; +$_['method_giropay'] = 'EPS'; diff --git a/catalog/language/german/extension/payment/mollie.php b/catalog/language/german/extension/payment/mollie.php index 8efe4a60..a37572d0 100644 --- a/catalog/language/german/extension/payment/mollie.php +++ b/catalog/language/german/extension/payment/mollie.php @@ -1,83 +1,2 @@ - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -/** - * German language file for iDEAL by Mollie - */ - -// Text -$_['heading_title'] = 'Zahlung via Mollie'; -$_['ideal_title'] = 'Ihre Zahlung'; -$_['text_title'] = 'Online bezahlen'; -$_['text_redirected'] = 'Der Kunde wurde auf den Zahlungs-Bildschirm umgeleitet'; -$_['text_issuer_ideal'] = 'Wählen Sie Ihre Bank'; -$_['text_issuer_giftcard'] = 'Wählen Sie Ihre Giftcard'; -$_['text_issuer_kbc'] = 'Wählen Sie Ihren Bezahl-Button'; -$_['button_retry'] = 'Erneut versuchen, abzurechnen'; - -// Status page: payment failed (e.g. cancelled). -$_['heading_failed'] = 'Ihre Zahlung ist nicht abgeschlossen'; -$_['msg_failed'] = 'Leider ist die Zahlung fehlgeschlagen. Klicken Sie auf die folgende Schaltfläche, um zum Abrechnungs-Bildschirm zurückzukehren.'; - -// Status page: payment pending. -$_['heading_unknown'] = 'Wir warten noch auf Ihre Zahlung'; -$_['msg_unknown'] = 'Wir haben Ihre Zahlung noch nicht erhalten. Wir werden eine Bestätigungsmail verschicken, sobald die Zahlung eingegangen ist.'; - -// Status page: API failure. -$_['heading_error'] = 'Beim Erstellen der Zahlung ist ein Fehler aufgetreten'; -$_['text_error'] = 'Beim Erstellen der Zahlung bei Mollie ist ein Fehler aufgetreten. Klicken Sie auf die folgende Schaltfläche, um zum Abrechnungs-Bildschirm zurückzukehren.'; - -// Response -$_['response_success'] = 'Die Zahlung wurde erhalten'; -$_['response_none'] = 'Wir warten noch auf die Zahlung. Sie erhalten eine E-Mail, sobald uns der Status Ihrer Zahlung bekannt ist.'; -$_['response_cancelled'] = 'Der Kunde hat die Zahlung annulliert'; -$_['response_failed'] = 'Die Zahlung ist leider fehlgeschlagen. Versuchen Sie es bitte erneut.'; -$_['response_expired'] = 'Die Zahlung ist verstrichen'; -$_['response_unknown'] = 'Es ist ein unbekannter Fehler aufgetreten'; - -// Methods -$_['method_ideal'] = 'iDEAL'; -$_['method_creditcard'] = 'Creditcard'; -$_['method_mistercash'] = 'Bancontact'; -$_['method_banktransfer'] = 'Übertragung'; -$_['method_directdebit'] = 'Einmaliges Inkasso'; -$_['method_belfius'] = 'Belfius Direct Net'; -$_['method_kbc'] = 'KBC/CBC-Betaalknop'; -$_['method_bitcoin'] = 'Bitcoin'; -$_['method_sofort'] = 'SOFORT Banking'; -$_['method_paypal'] = 'PayPal'; -$_['method_paysafecard'] = 'paysafecard'; -$_['method_giftcard'] = 'Giftcard'; -$_['method_inghomepay'] = 'ING Home\'Pay'; -$_['method_eps'] = 'Giropay'; -$_['method_giropay'] = 'EPS'; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/catalog/language/german/payment/mollie.php b/catalog/language/german/payment/mollie.php new file mode 100644 index 00000000..8efe4a60 --- /dev/null +++ b/catalog/language/german/payment/mollie.php @@ -0,0 +1,83 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +/** + * German language file for iDEAL by Mollie + */ + +// Text +$_['heading_title'] = 'Zahlung via Mollie'; +$_['ideal_title'] = 'Ihre Zahlung'; +$_['text_title'] = 'Online bezahlen'; +$_['text_redirected'] = 'Der Kunde wurde auf den Zahlungs-Bildschirm umgeleitet'; +$_['text_issuer_ideal'] = 'Wählen Sie Ihre Bank'; +$_['text_issuer_giftcard'] = 'Wählen Sie Ihre Giftcard'; +$_['text_issuer_kbc'] = 'Wählen Sie Ihren Bezahl-Button'; +$_['button_retry'] = 'Erneut versuchen, abzurechnen'; + +// Status page: payment failed (e.g. cancelled). +$_['heading_failed'] = 'Ihre Zahlung ist nicht abgeschlossen'; +$_['msg_failed'] = 'Leider ist die Zahlung fehlgeschlagen. Klicken Sie auf die folgende Schaltfläche, um zum Abrechnungs-Bildschirm zurückzukehren.'; + +// Status page: payment pending. +$_['heading_unknown'] = 'Wir warten noch auf Ihre Zahlung'; +$_['msg_unknown'] = 'Wir haben Ihre Zahlung noch nicht erhalten. Wir werden eine Bestätigungsmail verschicken, sobald die Zahlung eingegangen ist.'; + +// Status page: API failure. +$_['heading_error'] = 'Beim Erstellen der Zahlung ist ein Fehler aufgetreten'; +$_['text_error'] = 'Beim Erstellen der Zahlung bei Mollie ist ein Fehler aufgetreten. Klicken Sie auf die folgende Schaltfläche, um zum Abrechnungs-Bildschirm zurückzukehren.'; + +// Response +$_['response_success'] = 'Die Zahlung wurde erhalten'; +$_['response_none'] = 'Wir warten noch auf die Zahlung. Sie erhalten eine E-Mail, sobald uns der Status Ihrer Zahlung bekannt ist.'; +$_['response_cancelled'] = 'Der Kunde hat die Zahlung annulliert'; +$_['response_failed'] = 'Die Zahlung ist leider fehlgeschlagen. Versuchen Sie es bitte erneut.'; +$_['response_expired'] = 'Die Zahlung ist verstrichen'; +$_['response_unknown'] = 'Es ist ein unbekannter Fehler aufgetreten'; + +// Methods +$_['method_ideal'] = 'iDEAL'; +$_['method_creditcard'] = 'Creditcard'; +$_['method_mistercash'] = 'Bancontact'; +$_['method_banktransfer'] = 'Übertragung'; +$_['method_directdebit'] = 'Einmaliges Inkasso'; +$_['method_belfius'] = 'Belfius Direct Net'; +$_['method_kbc'] = 'KBC/CBC-Betaalknop'; +$_['method_bitcoin'] = 'Bitcoin'; +$_['method_sofort'] = 'SOFORT Banking'; +$_['method_paypal'] = 'PayPal'; +$_['method_paysafecard'] = 'paysafecard'; +$_['method_giftcard'] = 'Giftcard'; +$_['method_inghomepay'] = 'ING Home\'Pay'; +$_['method_eps'] = 'Giropay'; +$_['method_giropay'] = 'EPS'; diff --git a/catalog/language/nl-nl/extension/payment/mollie.php b/catalog/language/nl-nl/extension/payment/mollie.php index 1b3b43a2..a37572d0 100644 --- a/catalog/language/nl-nl/extension/payment/mollie.php +++ b/catalog/language/nl-nl/extension/payment/mollie.php @@ -1,83 +1,2 @@ - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -/** - * Dutch language file for iDEAL by Mollie - */ - -// Text -$_['heading_title'] = 'Betaling via Mollie'; -$_['ideal_title'] = 'Uw betaling'; -$_['text_title'] = 'Online betalen'; -$_['text_redirected'] = 'De klant is doorgestuurd naar het betaalscherm'; -$_['text_issuer_ideal'] = 'Kies uw bank'; -$_['text_issuer_giftcard'] = 'Kies uw giftcard'; -$_['text_issuer_kbc'] = 'Kies uw betaalknop'; -$_['button_retry'] = 'Opnieuw proberen af te rekenen'; - -// Status page: payment failed (e.g. cancelled). -$_['heading_failed'] = 'Uw betaling is niet voltooid'; -$_['msg_failed'] = 'Helaas is de betaling mislukt. Klik op onderstaande knop om terug te keren naar het afrekenscherm.'; - -// Status page: payment pending. -$_['heading_unknown'] = 'We wachten nog op uw betaling'; -$_['msg_unknown'] = 'We hebben uw betaling nog niet ontvangen. Wij zullen een bevestigingsmail versturen op het moment dat de betaling binnen is.'; - -// Status page: API failure. -$_['heading_error'] = 'Er is een fout opgetreden bij het opzetten van de betaling'; -$_['text_error'] = 'Er is een fout opgetreden bij het opzetten van de betaling bij Mollie. Klik op onderstaande knop om terug te keren naar het afrekenscherm.'; - -// Response -$_['response_success'] = 'De betaling is ontvangen'; -$_['response_none'] = 'We wachten nog op de betaling. U krijgt een email zodra de status van de betaling bij ons bekend is.'; -$_['response_cancelled'] = 'De klant heeft de betaling geannuleerd'; -$_['response_failed'] = 'De betaling is helaas mislukt. Probeer het alstublieft opnieuw.'; -$_['response_expired'] = 'De betaling is verlopen'; -$_['response_unknown'] = 'Er is een onbekende fout opgetreden'; - -// Methods -$_['method_ideal'] = 'iDEAL'; -$_['method_creditcard'] = 'Creditcard'; -$_['method_bancontact'] = 'Bancontact'; -$_['method_banktransfer'] = 'Overboeking'; -$_['method_directdebit'] = 'Eenmalige incasso'; -$_['method_belfius'] = 'Belfius Direct Net'; -$_['method_kbc'] = 'KBC/CBC-Betaalknop'; -$_['method_bitcoin'] = 'Bitcoin'; -$_['method_sofort'] = 'SOFORT Banking'; -$_['method_paypal'] = 'PayPal'; -$_['method_paysafecard'] = 'paysafecard'; -$_['method_giftcard'] = 'Giftcard'; -$_['method_inghomepay'] = 'ING Home\'Pay'; -$_['method_eps'] = 'Giropay'; -$_['method_giropay'] = 'EPS'; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/catalog/language/nl-nl/payment/mollie.php b/catalog/language/nl-nl/payment/mollie.php new file mode 100644 index 00000000..1b3b43a2 --- /dev/null +++ b/catalog/language/nl-nl/payment/mollie.php @@ -0,0 +1,83 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +/** + * Dutch language file for iDEAL by Mollie + */ + +// Text +$_['heading_title'] = 'Betaling via Mollie'; +$_['ideal_title'] = 'Uw betaling'; +$_['text_title'] = 'Online betalen'; +$_['text_redirected'] = 'De klant is doorgestuurd naar het betaalscherm'; +$_['text_issuer_ideal'] = 'Kies uw bank'; +$_['text_issuer_giftcard'] = 'Kies uw giftcard'; +$_['text_issuer_kbc'] = 'Kies uw betaalknop'; +$_['button_retry'] = 'Opnieuw proberen af te rekenen'; + +// Status page: payment failed (e.g. cancelled). +$_['heading_failed'] = 'Uw betaling is niet voltooid'; +$_['msg_failed'] = 'Helaas is de betaling mislukt. Klik op onderstaande knop om terug te keren naar het afrekenscherm.'; + +// Status page: payment pending. +$_['heading_unknown'] = 'We wachten nog op uw betaling'; +$_['msg_unknown'] = 'We hebben uw betaling nog niet ontvangen. Wij zullen een bevestigingsmail versturen op het moment dat de betaling binnen is.'; + +// Status page: API failure. +$_['heading_error'] = 'Er is een fout opgetreden bij het opzetten van de betaling'; +$_['text_error'] = 'Er is een fout opgetreden bij het opzetten van de betaling bij Mollie. Klik op onderstaande knop om terug te keren naar het afrekenscherm.'; + +// Response +$_['response_success'] = 'De betaling is ontvangen'; +$_['response_none'] = 'We wachten nog op de betaling. U krijgt een email zodra de status van de betaling bij ons bekend is.'; +$_['response_cancelled'] = 'De klant heeft de betaling geannuleerd'; +$_['response_failed'] = 'De betaling is helaas mislukt. Probeer het alstublieft opnieuw.'; +$_['response_expired'] = 'De betaling is verlopen'; +$_['response_unknown'] = 'Er is een onbekende fout opgetreden'; + +// Methods +$_['method_ideal'] = 'iDEAL'; +$_['method_creditcard'] = 'Creditcard'; +$_['method_bancontact'] = 'Bancontact'; +$_['method_banktransfer'] = 'Overboeking'; +$_['method_directdebit'] = 'Eenmalige incasso'; +$_['method_belfius'] = 'Belfius Direct Net'; +$_['method_kbc'] = 'KBC/CBC-Betaalknop'; +$_['method_bitcoin'] = 'Bitcoin'; +$_['method_sofort'] = 'SOFORT Banking'; +$_['method_paypal'] = 'PayPal'; +$_['method_paysafecard'] = 'paysafecard'; +$_['method_giftcard'] = 'Giftcard'; +$_['method_inghomepay'] = 'ING Home\'Pay'; +$_['method_eps'] = 'Giropay'; +$_['method_giropay'] = 'EPS'; diff --git a/catalog/language/spanish/extension/payment/mollie.php b/catalog/language/spanish/extension/payment/mollie.php index 245d33f7..a37572d0 100644 --- a/catalog/language/spanish/extension/payment/mollie.php +++ b/catalog/language/spanish/extension/payment/mollie.php @@ -1,83 +1,2 @@ - * @copyright Mollie B.V. - * @link https://www.mollie.com - */ - -/** - * Spanish language file for iDEAL by Mollie - */ - -// Text -$_['heading_title'] = 'Pago a través de Mollie'; -$_['ideal_title'] = 'su pago'; -$_['text_title'] = 'Pagar en línea'; -$_['text_redirected'] = 'El cliente ha sido redirigido a la pantalla de pago'; -$_['text_issuer_ideal'] = 'Seleccione su banco'; -$_['text_issuer_giftcard'] = 'Seleccione su tarjeta regalo'; -$_['text_issuer_kbc'] = 'Seleccione su botón de pago'; -$_['button_retry'] = 'Intente pagar de nuevo'; - -// Status page: payment failed (e.g. cancelled). -$_['heading_failed'] = 'Su pago no se ha completado'; -$_['msg_failed'] = 'Lamentablemente, no se ha efectuado el pago. Haga clic en el siguiente botón para volver a la pantalla de pago.'; - -// Status page: payment pending. -$_['heading_unknown'] = 'Seguimos esperando su pago'; -$_['msg_unknown'] = 'Aún no hemos recibido su pago. Le enviaremos un correo electrónico de confirmación tan pronto como recibamos el pago.'; - -// Status page: API failure. -$_['heading_error'] = 'Se ha producido un error en la configuración del pago'; -$_['text_error'] = 'Se ha producido un error en la configuración del pago en Mollie. Haga clic en el siguiente botón para volver a la pantalla de pago.'; - -// Response -$_['response_success'] = 'El pago ha sido recibido'; -$_['response_none'] = 'Seguimos esperando el pago. Recibirá un correo electrónico tan pronto como sepamos el estado del pago.'; -$_['response_cancelled'] = 'El cliente ha cancelado el pago'; -$_['response_failed'] = 'Lamentablemente, no se ha efectuado el pago. Por favor, inténtelo de nuevo.'; -$_['response_expired'] = 'El pago ha caducado'; -$_['response_unknown'] = 'Se ha producido un error desconocido'; - -// Methods -$_['method_ideal'] = 'iDEAL'; -$_['method_creditcard'] = 'Creditcard'; -$_['method_mistercash'] = 'Bancontact'; -$_['method_banktransfer'] = 'Transferencia bancaria'; -$_['method_directdebit'] = 'Adeudo bancario'; -$_['method_belfius'] = 'Belfius Direct Net'; -$_['method_kbc'] = 'KBC/CBC-Betaalknop'; -$_['method_bitcoin'] = 'Bitcoin'; -$_['method_sofort'] = 'SOFORT Banking'; -$_['method_paypal'] = 'PayPal'; -$_['method_paysafecard'] = 'paysafecard'; -$_['method_giftcard'] = 'Giftcard'; -$_['method_inghomepay'] = 'ING Home\'Pay'; -$_['method_eps'] = 'Giropay'; -$_['method_giropay'] = 'EPS'; + include(__DIR__."/../../payment/mollie.php"); \ No newline at end of file diff --git a/catalog/language/spanish/payment/mollie.php b/catalog/language/spanish/payment/mollie.php new file mode 100644 index 00000000..245d33f7 --- /dev/null +++ b/catalog/language/spanish/payment/mollie.php @@ -0,0 +1,83 @@ + + * @copyright Mollie B.V. + * @link https://www.mollie.com + */ + +/** + * Spanish language file for iDEAL by Mollie + */ + +// Text +$_['heading_title'] = 'Pago a través de Mollie'; +$_['ideal_title'] = 'su pago'; +$_['text_title'] = 'Pagar en línea'; +$_['text_redirected'] = 'El cliente ha sido redirigido a la pantalla de pago'; +$_['text_issuer_ideal'] = 'Seleccione su banco'; +$_['text_issuer_giftcard'] = 'Seleccione su tarjeta regalo'; +$_['text_issuer_kbc'] = 'Seleccione su botón de pago'; +$_['button_retry'] = 'Intente pagar de nuevo'; + +// Status page: payment failed (e.g. cancelled). +$_['heading_failed'] = 'Su pago no se ha completado'; +$_['msg_failed'] = 'Lamentablemente, no se ha efectuado el pago. Haga clic en el siguiente botón para volver a la pantalla de pago.'; + +// Status page: payment pending. +$_['heading_unknown'] = 'Seguimos esperando su pago'; +$_['msg_unknown'] = 'Aún no hemos recibido su pago. Le enviaremos un correo electrónico de confirmación tan pronto como recibamos el pago.'; + +// Status page: API failure. +$_['heading_error'] = 'Se ha producido un error en la configuración del pago'; +$_['text_error'] = 'Se ha producido un error en la configuración del pago en Mollie. Haga clic en el siguiente botón para volver a la pantalla de pago.'; + +// Response +$_['response_success'] = 'El pago ha sido recibido'; +$_['response_none'] = 'Seguimos esperando el pago. Recibirá un correo electrónico tan pronto como sepamos el estado del pago.'; +$_['response_cancelled'] = 'El cliente ha cancelado el pago'; +$_['response_failed'] = 'Lamentablemente, no se ha efectuado el pago. Por favor, inténtelo de nuevo.'; +$_['response_expired'] = 'El pago ha caducado'; +$_['response_unknown'] = 'Se ha producido un error desconocido'; + +// Methods +$_['method_ideal'] = 'iDEAL'; +$_['method_creditcard'] = 'Creditcard'; +$_['method_mistercash'] = 'Bancontact'; +$_['method_banktransfer'] = 'Transferencia bancaria'; +$_['method_directdebit'] = 'Adeudo bancario'; +$_['method_belfius'] = 'Belfius Direct Net'; +$_['method_kbc'] = 'KBC/CBC-Betaalknop'; +$_['method_bitcoin'] = 'Bitcoin'; +$_['method_sofort'] = 'SOFORT Banking'; +$_['method_paypal'] = 'PayPal'; +$_['method_paysafecard'] = 'paysafecard'; +$_['method_giftcard'] = 'Giftcard'; +$_['method_inghomepay'] = 'ING Home\'Pay'; +$_['method_eps'] = 'Giropay'; +$_['method_giropay'] = 'EPS'; diff --git a/catalog/model/extension/payment/mollie_bancontact.php b/catalog/model/extension/payment/mollie_bancontact.php index ac70ab29..fc093947 100644 --- a/catalog/model/extension/payment/mollie_bancontact.php +++ b/catalog/model/extension/payment/mollie_bancontact.php @@ -1,7 +1,5 @@ load->language("extension/payment/mollie"); + $this->load->language("payment/mollie"); $key = "method_" . $payment_method->id; $val = $this->language->get($key); @@ -98,6 +98,13 @@ public function getMethod($address, $total) $icon = ''; } + if (static::MODULE_NAME == 'creditcard'){ + $amount_limit = $this->config->get($moduleCode .'_creditcard_max_amount'); + if(($amount_limit != NULL) && ($total > $amount_limit)) { + return; + } + } + return array( "code" => "mollie_" . static::MODULE_NAME, "title" => $icon . $payment_method->description, diff --git a/catalog/model/payment/mollie_bancontact.php b/catalog/model/payment/mollie_bancontact.php new file mode 100644 index 00000000..bbbeb53b --- /dev/null +++ b/catalog/model/payment/mollie_bancontact.php @@ -0,0 +1,7 @@ + -
-
- -
- -
- -
- -
-
- - -
-
+ \ No newline at end of file diff --git a/catalog/view/theme/default/template/extension/payment/mollie_checkout_form.twig b/catalog/view/theme/default/template/extension/payment/mollie_checkout_form.twig index db34b65e..bb349405 100644 --- a/catalog/view/theme/default/template/extension/payment/mollie_checkout_form.twig +++ b/catalog/view/theme/default/template/extension/payment/mollie_checkout_form.twig @@ -1,56 +1,3 @@ -
-
-
- {% if issuers is not empty %} -
- -
- {% endif %} -
- -
-
- - -
-
+ \ No newline at end of file diff --git a/catalog/view/theme/default/template/extension/payment/mollie_return.tpl b/catalog/view/theme/default/template/extension/payment/mollie_return.tpl index 83353e9f..6a80f7a8 100644 --- a/catalog/view/theme/default/template/extension/payment/mollie_return.tpl +++ b/catalog/view/theme/default/template/extension/payment/mollie_return.tpl @@ -1,33 +1,3 @@ - - -
- - -
- - - - -
- -

-
-

- -

- - - -

- - -
- -
-
- - \ No newline at end of file + \ No newline at end of file diff --git a/catalog/view/theme/default/template/extension/payment/mollie_return.twig b/catalog/view/theme/default/template/extension/payment/mollie_return.twig index 3bea4b90..b40e0537 100644 --- a/catalog/view/theme/default/template/extension/payment/mollie_return.twig +++ b/catalog/view/theme/default/template/extension/payment/mollie_return.twig @@ -1,33 +1,3 @@ -{{ header }} - -
- - -
- {{ column_left }} - {% set subtract_first = column_left ? 3 : 0 %} - {% set subtract_second = column_right ? 3 : 0 %} - {% set content_width = 12 - subtract_first - subtract_second %} -
- {{ content_top }} -

{{ message_title }}

-
-

{{ message_text }}

- {% if mollie_error is defined %} -

{{ mollie_error }}

- {% endif %} - - {% if button_retry is defined %} -

{{ button_retry }}

- {% endif %} - {{ content_bottom }} -
- {{ column_right }} -
-
- -{{ footer }} \ No newline at end of file + \ No newline at end of file diff --git a/catalog/view/theme/default/template/payment/mollie_checkout_form.tpl b/catalog/view/theme/default/template/payment/mollie_checkout_form.tpl new file mode 100644 index 00000000..7a7daef2 --- /dev/null +++ b/catalog/view/theme/default/template/payment/mollie_checkout_form.tpl @@ -0,0 +1,56 @@ +
+
+
+ +
+ +
+ +
+ +
+
+ + +
+
diff --git a/catalog/view/theme/default/template/payment/mollie_checkout_form.twig b/catalog/view/theme/default/template/payment/mollie_checkout_form.twig new file mode 100644 index 00000000..db34b65e --- /dev/null +++ b/catalog/view/theme/default/template/payment/mollie_checkout_form.twig @@ -0,0 +1,56 @@ +
+
+
+ {% if issuers is not empty %} +
+ +
+ {% endif %} +
+ +
+
+ + +
+
diff --git a/catalog/view/theme/default/template/payment/mollie_return.tpl b/catalog/view/theme/default/template/payment/mollie_return.tpl new file mode 100644 index 00000000..83353e9f --- /dev/null +++ b/catalog/view/theme/default/template/payment/mollie_return.tpl @@ -0,0 +1,33 @@ + + +
+ + +
+ + + + +
+ +

+
+

+ +

+ + + +

+ + +
+ +
+
+ + \ No newline at end of file diff --git a/catalog/view/theme/default/template/payment/mollie_return.twig b/catalog/view/theme/default/template/payment/mollie_return.twig new file mode 100644 index 00000000..3bea4b90 --- /dev/null +++ b/catalog/view/theme/default/template/payment/mollie_return.twig @@ -0,0 +1,33 @@ +{{ header }} + +
+ + +
+ {{ column_left }} + {% set subtract_first = column_left ? 3 : 0 %} + {% set subtract_second = column_right ? 3 : 0 %} + {% set content_width = 12 - subtract_first - subtract_second %} +
+ {{ content_top }} +

{{ message_title }}

+
+

{{ message_text }}

+ {% if mollie_error is defined %} +

{{ mollie_error }}

+ {% endif %} + + {% if button_retry is defined %} +

{{ button_retry }}

+ {% endif %} + {{ content_bottom }} +
+ {{ column_right }} +
+
+ +{{ footer }} \ No newline at end of file diff --git a/system/comercia/arrayHelper.php b/system/comercia/arrayHelper.php new file mode 100644 index 00000000..8c08130d --- /dev/null +++ b/system/comercia/arrayHelper.php @@ -0,0 +1,48 @@ + $value) { + if (!Util::stringHelper()->startsWith($key, $prefix)) { + unset($array[$key]); + } + } + return $array; + } + + function keyValuePairs($array,$keyField,$valueField){ + $result=[]; + foreach($array as $arrayItem){ + $result[$arrayItem[$keyField]]=$arrayItem[$valueField]; + } + return $result; + } + + function keyToVal($data) + { + $new = array(); + foreach ($data as $key => $val) { + $new[$key] = $key; + } + return $new; + } + function allPrefixed($input,$prefix, $removePrefix = true) + { + $result = []; + $prefixLen = strlen($prefix); + foreach ($input as $key => $val) { + if (substr($key, 0, $prefixLen) == $prefix) { + if ($removePrefix) { + $key = substr($key, $prefixLen); + } + $result[$key] = $val; + } + } + return $result; + } +} + +?> \ No newline at end of file diff --git a/system/comercia/arrayObject.php b/system/comercia/arrayObject.php new file mode 100644 index 00000000..613036bb --- /dev/null +++ b/system/comercia/arrayObject.php @@ -0,0 +1,62 @@ +data =& $data; + } + + function __get($name) + { + return @$this->data[$name] ?: ""; + } + + function __set($name, $value) + { + $this->data[$name] = $value; + } + + function remove($name) + { + unset($this->data[$name]); + } + + function all() + { + return $this->data; + } + + function timestamp($field) + { + $data = $this->data[$field]; + if (!is_numeric($data)) { + Util::dateTimeHelper()->toTimestamp($data); + } + return $data; + } + + function bool($field, $default = false) + { + if (!isset($this->data[$field])) { + return $default; + } + + $data = $this->data[$field]; + if ($data == "false") { + return false; + } else { + return $data ? true : false; + } + } + + function allPrefixed($prefix, $removePrefix = true) + { + return Util::arrayHelper()->allPrefixed($this->all(),$prefix,$removePrefix); + } +} + +?> diff --git a/system/comercia/breadcrumb.php b/system/comercia/breadcrumb.php new file mode 100644 index 00000000..38e1c042 --- /dev/null +++ b/system/comercia/breadcrumb.php @@ -0,0 +1,37 @@ +data =& $data; + $this->key = $key; + if (!isset($data[$key]) || !is_array($data[$key])) { + $data[$key] = array(); + } + } + + function add($name, $route, $params = "") + { + $text = Util::language()->$name; + $href = Util::url()->link($route, $params); + if (count($this->data[$this->key])) { + $separator = "::"; + } else { + $separator = ""; + } + + $entry = array( + 'text' => $text, + 'href' => $href, + 'separator' => $separator + ); + $this->data[$this->key][] = $entry; + return $this; + } +} + +?> \ No newline at end of file diff --git a/system/comercia/component/breadcrumb.php b/system/comercia/component/breadcrumb.php new file mode 100644 index 00000000..5d48f986 --- /dev/null +++ b/system/comercia/component/breadcrumb.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/system/comercia/component/selectbox.php b/system/comercia/component/selectbox.php new file mode 100644 index 00000000..1bff5cde --- /dev/null +++ b/system/comercia/component/selectbox.php @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/system/comercia/component/variables.php b/system/comercia/component/variables.php new file mode 100644 index 00000000..b642a0c0 --- /dev/null +++ b/system/comercia/component/variables.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/system/comercia/config.php b/system/comercia/config.php new file mode 100644 index 00000000..0a83712a --- /dev/null +++ b/system/comercia/config.php @@ -0,0 +1,64 @@ +model = Util::load()->model("setting/setting"); + $this->store_id = $store_id; + $data = Util::db()->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = " . $store_id . ""); + foreach ($data as $value) { + if (!$value['serialized']) { + $this->data[$value["key"]] = $value["value"]; + } else { + $this->data[$value["key"]] = json_decode($value["value"], true); + } + } + } + + function __get($name) + { + return $this->get($name); + } + + function __set($name, $value) + { + $code = explode("_", $name)[0]; + $this->set($code, $name, $value); + } + + function get($key, $ignoreMainStore = false) + { + if (isset($this->data[$key])) { + return @$this->data[$key] ?: ""; + } elseif ($this->store_id && !$ignoreMainStore) { + return Util::config(0)->$key; + } + return ""; + } + + function getGroup($code) + { + return $this->model->getSetting($code, $this->store_id); + } + + function set($code, $key, $value = false) + { + if (!is_array($key)) { + $key = [$key => $value]; + } + $items = Util::arrayHelper()->allPrefixed($key, $code, false); + $items=array_merge($this->getGroup($code),$items); + $this->model->editSetting($code, $items, $this->store_id); + foreach ($items as $key => $val) { + $this->data[$key] = $val; + } + } +} + +?> \ No newline at end of file diff --git a/system/comercia/controllerHelper.php b/system/comercia/controllerHelper.php new file mode 100644 index 00000000..c9264b41 --- /dev/null +++ b/system/comercia/controllerHelper.php @@ -0,0 +1,10 @@ +setName($name); + $this->prepare = function () { + }; + $this->postFinish=function(){}; + + } + + function setName($name) + { + $this->name = $name; + } + + function setFields($first) + { + if (!is_array($first)) { + $first = func_get_args(); + } + $this->fields = $first; + } + + function prepare($func) + { + $this->prepare = $func; + } + + + function postFinish($func){ + $this->postFinish=$func; + } + function run($forceRedirect = false) + { + //load the language data + $data = array(); + $name = $this->name; + $form = Util::form($data); + Util::load()->language("module/" . $name, $data); + + if ($forceRedirect) { + $data['redirect'] = $forceRedirect; + } + + $form->finish(function ($data) { + Util::config()->set($this->name, Util::request()->post()->all()); + Util::session()->success = $data['msg_settings_saved']; + $postFinish = $this->postFinish; + if (is_callable($postFinish)) { + $postFinish($data); + } + Util::response()->redirect(@$data['redirect'] ?: Util::route()->extension()); + }); + + //handle the form when finished + $formFields = $this->fields; + $prepare = $this->prepare; + if (is_callable($prepare)) { + $prepare($data); + } + + //place the prepared data into the form + $form + ->fillFromSessionClear("error_warning", "success") + ->fillFromPost($formFields) + ->fillFromConfig($formFields); + + Util::breadcrumb($data) + ->add("text_home", "common/home") + ->add("settings_title", "module/" . $name); + + + //handle document related things + Util::document()->setTitle(Util::language()->heading_title); + + //create links + $data['action'] = Util::version()->isMinimal("2.3")?Util::url()->link('extension/module/' . $name):Util::url()->link('module/' . $name); + $data['cancel'] = Util::url()->link(Util::route()->extension()); + + //create a response + Util::response()->view("module/" . $name . ".tpl", $data); + } + +} + +?> \ No newline at end of file diff --git a/system/comercia/dateTimeHelper.php b/system/comercia/dateTimeHelper.php new file mode 100644 index 00000000..48c13e59 --- /dev/null +++ b/system/comercia/dateTimeHelper.php @@ -0,0 +1,24 @@ +getTimestamp(); + }elseif($dateTime=\DateTime::createFromFormat("Y-m-d",$data)){ + return $dateTime->getTimestamp(); + }elseif($dateTime=\DateTime::createFromFormat(\DateTime::ATOM,$regexVal)){ + return $dateTime->getTimestamp(); + } + return 0; + } + + +} + +?> \ No newline at end of file diff --git a/system/comercia/db.php b/system/comercia/db.php new file mode 100644 index 00000000..31297e26 --- /dev/null +++ b/system/comercia/db.php @@ -0,0 +1,163 @@ +recordExists($table, $data, $keys); + + if ($exists) { + $query = "UPDATE `" . DB_PREFIX . $table . "` SET "; + } else { + $query = "INSERT INTO `" . DB_PREFIX . $table . "` SET "; + } + + $i = 0; + foreach ($data as $key => $value) { + if (!$this->columnExists($table, $key)) { + continue; + } + if ($i++) { + $query .= ","; + } + $query .= "`" . $key . "` = '" . $this->_db()->escape($value) . "'"; + } + if ($exists) { + $query .= " WHERE "; + $query .= $this->whereForKeys($table, $data, $keys); + } + $this->_db()->query($query); + if (!$exists) { + return $this->_db()->getLastId(); + } + + if (count($keys) == 1) { + return $data[$keys[0]]; + } + $result = []; + foreach ($keys as $key) { + $result[] = $data[$key]; + } + + return $result; + } + + public function recordExists($table, $data, $keys = null) + { + + $query = "SELECT * FROM `" . DB_PREFIX . $table . "` WHERE "; + $query .= $this->whereForKeys($table, $data, $keys); + $query .= " LIMIT 0,1"; + $query = $this->_db()->query($query); + + return (bool)$query->num_rows; + } + + public function columnExists($table, $column) + { + static $columns = []; + + if (!isset($columns[$table][$column])) { + $query = "SHOW COLUMNS FROM `" . DB_PREFIX . $table . "` LIKE '" . $column . "'"; + $columns[$table][$column] = (bool)$this->_db()->query($query)->num_rows; + } + + return $columns[$table][$column]; + } + + private function whereForKeys($table, $data, $keys = null) + { + if (!$keys) { + $keys[] = $table . "_id"; + } + $result = ""; + foreach ($keys as $akey => $key) { + if ($akey > 0) { + $result .= " && "; + } + $result .= " `" . $key . "` = '" . @$data[$key] . "' "; + } + + return $result; + } + + private function whereForData($data) + { + $result = ''; + + $i = 0; + foreach ($data as $key => $value) { + if ($i++) { + $result .= ' && '; + } + + $result .= "`" . $key . "` = '" . $this->_db()->escape($value) . "'"; + } + + return $result; + } + + public function saveDataObjectArray($table, $data,$keys=null) + { + foreach ($data as $obj) { + $this->saveDataObject($table, $obj,$keys); + } + } + private function _db() + { + $registry = Util::registry(); + if (!$registry->has('db')) { + $registry->set('db', new db()); + } + + return $registry->get("db"); + } + + public function select($table, $fields = [], $where = []) + { + if (empty($fields)) { + $fields[] = '*'; + } + + $query = "SELECT "; + + $i = 0; + foreach ($fields as $field) + { + if($i++) { + $query .= ','; + } + $query .= $field == '*' ? $field : '`' . $field . '`'; + } + + + $query .= " FROM `" . DB_PREFIX . $table . "`"; + + if (!empty($where)) { + $query .= " WHERE "; + $query .= $this->whereForData($where); + } + + $result = $this->_db()->query($query); + + if ($result->num_rows > 1) { + return $result->rows; + } + + return $result->row; + } + public function query($query) + { + $result = $this->_db()->query($query); + + if ($result) { + return $result->rows; + } + + return []; + } +} +?> diff --git a/system/comercia/document.php b/system/comercia/document.php new file mode 100644 index 00000000..b936755a --- /dev/null +++ b/system/comercia/document.php @@ -0,0 +1,78 @@ +document = Util::registry()->get("document"); + } + + public function setTitle($title) + { + $this->document->setTitle($title); + return $this; + } + + public function setDescription($description) + { + $this->document->setDescription($description); + return $this; + } + + public function setKeywords($keywords) + { + $this->document->setKeywords($keywords); + return $this; + } + + public function addLink($href, $rel) + { + $this->document->addLink(Util::http()->getPathFor($href), $rel); + return $this; + } + + public function addStyle($href, $rel = 'stylesheet', $media = 'screen') + { + $this->document->addStyle(Util::http()->getPathFor($href), $rel, $media); + return $this; + } + + public function addScript($href, $position = 'header') + { + $this->document->addScript(Util::http()->getPathFor($href), $position); + return $this; + } + + public function addVariable($name, $value) + { + $this->variables[$name] = $value; + return $this; + } + + + function addDependency($file){ + if(is_array($file)){ + $files=$file; + foreach($files as $file){ + $this->addDependency($file); + } + return true; + } + + $exp=explode(".",$file); + $ext=$exp[count($exp)-1]; + if($ext=="css"){ + $this->addStyle($file); + } + if($ext=="js"){ + $this->addScript($file); + } + return true; + } +} + + +?> \ No newline at end of file diff --git a/system/comercia/fakeController.php b/system/comercia/fakeController.php new file mode 100644 index 00000000..05d09f51 --- /dev/null +++ b/system/comercia/fakeController.php @@ -0,0 +1,13 @@ +template = $view . ".tpl"; + $this->data = $data; + return $this->render(); + } +} + +?> \ No newline at end of file diff --git a/system/comercia/filesystem.php b/system/comercia/filesystem.php new file mode 100644 index 00000000..25afe6a0 --- /dev/null +++ b/system/comercia/filesystem.php @@ -0,0 +1,28 @@ +removeDirectory($file) : unlink($file); + } + rmdir($path); + } + + function getLatestVersion($before,$after){ + $posibilities = glob(DIR_APPLICATION.$before."*".$after); + arsort($posibilities); + reset($posibilities); + if(count($posibilities)) { + return str_replace(DIR_APPLICATION,"",$posibilities[0]); + }else{ + return ""; + } + } + + function search($dir, $pattern){ + return glob($dir . $pattern . ".*"); + } +} diff --git a/system/comercia/form.php b/system/comercia/form.php new file mode 100644 index 00000000..67610a04 --- /dev/null +++ b/system/comercia/form.php @@ -0,0 +1,176 @@ +data =& $data; + $this->store_id=$store_id; + } + + function fillFromSession($first) + { + if (is_array($first)) { + $keys = $first; + } else { + $keys = func_get_args(); + } + $session = Util::session(); + foreach ($keys as $key => $value) { + if (is_numeric($key)) { + $key = $value; + } + if (!($this->store_id < 0)) { + $value = $this->store_id . "_" . $value; + } + + $this->initializeKey($key); + if (!$this->data[$key] && isset($session->$value)) { + $this->data[$key] = $session->$value; + } + } + + return $this; + } + + function initializeKey($key) + { + if (!isset($this->data[$key])) { + $this->data[$key] = ""; + } + } + + function fillFromSessionClear($first) + { + if (is_array($first)) { + $keys = $first; + } else { + $keys = func_get_args(); + } + $session = Util::session(); + foreach ($keys as $key => $value) { + if (is_numeric($key)) { + $key = $value; + } + if (!($this->store_id < 0)) { + $value = $this->store_id . "_" . $value; + } + + $this->initializeKey($key); + if (!$this->data[$key] && isset($session->$value)) { + $this->data[$key] = $session->$value; + $session->remove($key); + } + } + return $this; + } + + function fillFromPost($first) + { + if (is_array($first)) { + $keys = $first; + } else { + $keys = func_get_args(); + } + $post = Util::request()->post(); + foreach ($keys as $key => $value) { + if (is_numeric($key)) { + $key = $value; + } + + if (!($this->store_id < 0)) { + $value = $this->store_id . "_" . $value; + } + + $this->initializeKey($key); + if (!$this->data[$key] && isset($post->$value)) { + $this->data[$key] = $post->$value; + } + } + return $this; + } + + + function fillFromGet($first) + { + if (is_array($first)) { + $keys = $first; + } else { + $keys = func_get_args(); + } + $get = Util::request()->get(); + foreach ($keys as $key => $value) { + if (is_numeric($key)) { + $key = $value; + } + + if (!($this->store_id < 0)) { + $value = $this->store_id . "_" . $value; + } + + $this->initializeKey($key); + if (!$this->data[$key] && isset($get->$value)) { + $this->data[$key] = $get->$value; + } + } + return $this; + } + + function fillFromConfig($first) + { + if (is_array($first)) { + $keys = $first; + } else { + $keys = func_get_args(); + } + foreach ($keys as $key => $value) { + if (is_numeric($key)) { + $key = $value; + } + + if (!($this->store_id < 0)) { + $config = Util::config($this->store_id); + } else { + $config = Util::config(); + } + + $this->initializeKey($key); + if (!$this->data[$key] && $config->get($value,true)) { + $this->data[$key] = $config->get($value,true); + } + } + return $this; + } + + + function fillSelectboxOptions($name, $data) + { + $options = $this->selectboxOptions($name); + foreach ($data as $key => $value) { + $options->add($key, $value); + } + return $this; + } + + function selectboxOptions($key) + { + require_once(__DIR__ . "/selectboxOptions.php"); + return new selectboxOptions($this->data, $key); + } + + + function finish($function) + { + if ((Util::request()->server()->REQUEST_METHOD == 'POST')) { + $function($this->data); + } + } + +} + +?> \ No newline at end of file diff --git a/system/comercia/html.php b/system/comercia/html.php new file mode 100644 index 00000000..3ee2e9e6 --- /dev/null +++ b/system/comercia/html.php @@ -0,0 +1,37 @@ +variables; + foreach ($variables as $key => $val) { + $variables[$key] = json_encode($val); + } + return $this->component("variables", array("variables" => $variables)); + } + + function component($_name, $_data = array()) + { + ob_start(); + foreach ($_data as $key => $val) { + ${$key} = $val; + } + include(__DIR__ . "/component/" . $_name . ".php"); + $result = ob_get_contents(); + ob_end_clean(); + return $result; + } + + function selectbox($name, $value, $options, $class = "") + { + return $this->component("selectbox", array("value" => $value, "name" => $name, "options" => $options, "class" => $class)); + } + + function breadcrumb($breadcrumbs) + { + return $this->component("breadcrumb", array("breadcrumbs" => $breadcrumbs)); + } +} + +?> \ No newline at end of file diff --git a/system/comercia/http.php b/system/comercia/http.php new file mode 100644 index 00000000..f8bae8a0 --- /dev/null +++ b/system/comercia/http.php @@ -0,0 +1,29 @@ +startsWith($path, "http://") || + Util::stringHelper()->startsWith($path, "https://") || + Util::stringHelper()->startsWith($path, "//")) + ) { + $path = $this->applicationPath() . $path; + } + return $path; + } + + function applicationPath() + { + $path = HTTPS_SERVER ? HTTPS_SERVER : HTTP_SERVER; + if (!Util::info()->IsInAdmin()) { + $filePath = DIR_APPLICATION; + $exp = explode("/", $filePath); + $dir = $exp[count($exp) - 2]; + $path .= $dir . "/"; + } + return $path; + } +} + +?> \ No newline at end of file diff --git a/system/comercia/image.php b/system/comercia/image.php new file mode 100644 index 00000000..3d04f75b --- /dev/null +++ b/system/comercia/image.php @@ -0,0 +1,67 @@ +removeDirectory(DIR_IMAGE."cache"); + mkdir(DIR_IMAGE."cache"); + return; + } + +} + +?> \ No newline at end of file diff --git a/system/comercia/info.php b/system/comercia/info.php new file mode 100644 index 00000000..5fc5f70f --- /dev/null +++ b/system/comercia/info.php @@ -0,0 +1,42 @@ +config_template; + } + + function stores() + { + static $stores = false; + if (!$stores) { + $stores = array_merge( + [ + [ + 'store_id' => 0, + 'name' => Util::config()->config_name . Util::language()->text_default, + 'url' => Util::url()->getCatalogUrl() + ] + ], + Util::load()->model("setting/store")->getStores() + ); + + usort($stores, function ($a, $b) { + return $a["store_id"] - $b["store_id"]; + }); + $stores = array_values($stores); + } + return $stores; + } +} + +?> \ No newline at end of file diff --git a/system/comercia/language.php b/system/comercia/language.php new file mode 100644 index 00000000..dcbfd565 --- /dev/null +++ b/system/comercia/language.php @@ -0,0 +1,34 @@ +language = Util::registry()->get("language"); + }else{ + $this->language=new \Language($language); + } + } + + function __get($name) + { + return $this->get($name); + } + + function get($name) + { + return @$this->language->get($name) ?: ""; + } + + function load($file){ + $arr=[]; + return Util::load()->language($file,$arr,$this->language); + } + + +} + +?> \ No newline at end of file diff --git a/system/comercia/load.php b/system/comercia/load.php new file mode 100644 index 00000000..b606f90d --- /dev/null +++ b/system/comercia/load.php @@ -0,0 +1,359 @@ +library($library); + } + return $result; + }; + + static $singletons=[]; + if(!isset($singletons[$library])){ + $className = lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $library)))); + $className = $className; + $libDir = DIR_SYSTEM . "library/"; + $bestOption = $this->findBestOption($libDir, $library, "php"); + if (!class_exists($className)) { + if (class_exists("VQMod")) { + @include_once(\VQMod::modCheck($libDir . $bestOption["name"] . ".php")); + } else { + @include_once($libDir . $bestOption["name"] . ".php"); + } + } + + if(class_exists($className)) { + $result = new $className(Util::registry()); + Util::registry()->set(Util::stringHelper()->ccToUnderline($className), $result); + $singletons[$library]=$result; + }else{ + $singletons[$library]=false; + } + + } + + return $singletons[$library]; + } + + function findBestOption($dir, $name, $extension) + { + + //fiend associated files + $posibilities = glob($dir . "" . $name . "*." . $extension); + $files = array(); + foreach ($posibilities as $file) { + $file = str_replace(DIR_TEMPLATE, "", $file); + $file = str_replace(".tpl", "", $file); + $file = str_replace(".twig", "", $file); + $expFile = str_replace(")", "", $file); + $exp = explode("(", $expFile); + $files[] = array( + "name" => $file, + "version" => isset($exp[1]) ? explode("_", $exp[1]) : false + ); + } + + //find best option + $bestOption = false; + foreach ($files as $file) { + if ( + ($file["version"]) && //check if this file has a version if no version its never the best option + ( + $file["version"][0] == "min" && Util::version()->isMinimal($file["version"][1]) ||//decide if is valid in case of minimal + $file["version"][0] == "max" && Util::version()->isMaximal($file["version"][1]) //decide if is valid in case of maximal + ) && + (!$bestOption || $file["version"][0] == "max" || $bestOption["version"][0] == "min") && //prioritize max version over min version + ( + !$bestOption || // if there is no best option its always the best option + ($file["version"][0] == "min" && version_compare($file["version"][1], $bestOption["version"][1], ">")) ||//if priority is by minimal , find the highest version + $file["version"][0] == "max" && version_compare($file["version"][1], $bestOption["version"][1], "<") //if priority is by maximal , find the lowest version + ) + ) { + $bestOption = $file; + } + + } + + if (!$bestOption) { + $bestOption = array( + "name" => $name, + "version" => false, + ); + } + + return $bestOption; + + } + + function model($model) + { + $model=$this->rewriteModel($model); + if(is_array($model)){ + $models=$model; + $result=[]; + foreach($models as $model){ + $result[$model]=$this->model($model); + } + return $result; + }; + + $modelDir = DIR_APPLICATION . 'model/'; + $route = $this->getRouteInfo("model", $model, $modelDir); + $className = $route["class"]; + if (!class_exists($className)) { + if (class_exists("VQMod")) { + @include_once(\VQMod::modCheck($modelDir . $route["file"] . ".php")); + } else { + @include_once($modelDir . $route["file"] . ".php"); + } + } + + if(class_exists($className)) { + $result = new $className(Util::registry()); + Util::registry()->set(Util::stringHelper()->ccToUnderline($className), $result); + return $result; + } + return false; + } + + function getRouteInfo($prefix, $route, $dir) + { + $parts = explode('/', preg_replace('/[^a-zA-Z0-9_\/]/', '', (string)$route)); + + $fileRoute = ""; + $method = ""; + $params=[]; + while ($parts) { + $file = $dir . implode('/', $parts) . '.php'; + + if (is_file($file)) { + $fileRoute = implode('/', $parts); + break; + } else { + if($method) { + $params[] = $method; + } + $method = array_pop($parts); + } + } + + $registry = Util::registry(); + + $className = lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $fileRoute)))); + $className = lcfirst(str_replace(' ', '', ucwords(str_replace('/', ' ', $className)))); + $className = ucfirst($className); + $className = ucfirst($prefix) . preg_replace('/[^a-zA-Z0-9]/', '', $className); + + $bestOption = $this->findBestOption($dir, $fileRoute, "php"); + + return array( + "file" => $bestOption["name"], + "class" => $className, + "method" => $method, + "params"=>$params + ); + } + + function view($view, $data = array()) + { + if (Util::version()->isMinimal("3.0")) { + $extension = "twig"; + $view=str_replace(".tpl",".twig",$view); + } else { + $extension = "tpl"; + } + + if (Util::info()->IsInAdmin()) { + $bestOption = $this->findBestOption(DIR_TEMPLATE, $view, $extension); + } else { + $bestOption1 = $this->findBestOption(DIR_TEMPLATE . "default/template/", $view, $extension); + $bestOption2 = $this->findBestOption(DIR_TEMPLATE . Util::info()->theme() . "/template/", $view, $extension); + if ($bestOption1["version"] && !$bestOption2["version"]) { + $bestOption = $bestOption1; + } else { + $bestOption = $bestOption2; + } + } + + $view = $bestOption["name"]; + + $registry = Util::registry(); + if(Util::version()->isMinimal(3.0)){ + try{ + return $registry->get("load")->view($view, $data); + }catch (\Exception $ex){ + return $this->tplFallback($view, $data); + } + } + elseif (Util::version()->isMinimal(2.0)) { + if (Util::version()->isMinimal("2.2") || Util::version()->isMinimal("2") && Util::info()->IsInAdmin()) { + return $registry->get("load")->view($view, $data); + } else { + if (file_exists(DIR_TEMPLATE . Util::info()->theme() . '/template/' . $view)) { + return $registry->get("load")->view($this->config->get('config_template') . "/template/" . $view, $data); + } else { + return $registry->get("load")->view('default/template/' . $view, $data); + } + } + } + + $fakeControllerFile = __DIR__ . "/fakeController.php"; + if (class_exists("VQMod")) { + require_once(\VQMod::modCheck($fakeControllerFile)); + } else { + require_once($fakeControllerFile); + } + $controller = new FakeController($registry); + $result = $controller->getView($view, $data); + return $result; + } + + public function tplFallback($view, $_data = array()) { + $view=str_replace(".twig",".tpl",$view); + + if (Util::info()->IsInAdmin()) { + $bestOption = $this->findBestOption(DIR_TEMPLATE, $view, "tpl"); + } else { + $bestOption1 = $this->findBestOption(DIR_TEMPLATE . "default/template/", $view, "tpl"); + $bestOption2 = $this->findBestOption(DIR_TEMPLATE . Util::info()->theme() . "/template/", $view, "tpl"); + if ($bestOption1["version"] && !$bestOption2["version"]) { + $bestOption = $bestOption1; + } else { + $bestOption = $bestOption2; + } + } + + $view = $bestOption["name"]; + + $file = DIR_TEMPLATE . $view; + + if (is_file($file)) { + extract($_data); + ob_start(); + require($file); + return ob_get_clean(); + } + + } + + function language($file, &$data = array(),$language=false) + { + if(is_array($file)){ + $files=$file; + $result=[]; + foreach($files as $file){ + $result=array_merge($result,$this->language($file,$data)); + } + return $result; + }; + + $file=$this->rewriteLanguage($file); + + $registry = Util::registry(); + if($language){ + $language->load($file); + } else { + $result = $registry->get("load")->language($file); + } + foreach ($result as $key => $val) { + $data[$key] = $val; + } + return $result; + } + + function pageControllers(&$data) + { + $data['header'] = Util::load()->controller('common/header'); + $data['column_left'] = Util::load()->controller('common/column_left'); + $data['footer'] = Util::load()->controller('common/footer'); + } + + function controller($controller) + { + + if(is_array($controller)){ + $controllers=$controller; + $result=[]; + foreach($controllers as $controller){ + $result[$controller]=$this->controller($controller); + } + return $result; + }; + + $controllerDir = DIR_APPLICATION . 'controller/'; + $route = $this->getRouteInfo("controller", $controller, $controllerDir); + + $className = $route["class"]; + if (!class_exists($className)) { + if (class_exists("VQMod")) { + @include_once(\VQMod::modCheck($controllerDir . $route["file"] . ".php")); + } else { + @include_once($controllerDir . $route["file"] . ".php"); + } + } + + if(class_exists($className)) { + $rc = new \ReflectionClass($className); + if ($rc->isInstantiable()) { + $method = $route["method"] ? $route["method"] : "index"; + $controller = new $className(Util::registry()); + $mr = new \ReflectionMethod($className, $method); + $mr->setAccessible(true); + if(!empty($route["params"])) { + $result = $mr->invokeArgs($controller, $route["params"]); + }else{ + $result = $mr->invoke($controller); + } + + if (!$result) { + try { + $pr = new \ReflectionProperty($className, "output"); + $pr->setAccessible(true); + $result = $pr->getValue($controller); + } catch (\Exception $ex) { + } + } + + return $result ?: ""; + } + } + return ""; + } + + private function rewriteModel($model) + { + return Util::stringHelper()->rewriteForVersion($model, + [ + [ + ""=>"sale/custom_field", + "2.1"=>"customer/custom_field" + ], + [ + ""=>"extension/extension", + "3.0"=>"setting/extension" + ] + ] + ); + } + + + private function rewriteLanguage($model) + { + return Util::stringHelper()->rewriteForVersion($model, + [ + [ + ""=>"payment/", + "2.3"=>"extension/payment/" + ] + ] + ); + } +} + +?> diff --git a/system/comercia/log.php b/system/comercia/log.php new file mode 100644 index 00000000..1a1c71c2 --- /dev/null +++ b/system/comercia/log.php @@ -0,0 +1,8 @@ +get("log")->write($message); + } +} \ No newline at end of file diff --git a/system/comercia/patch.php b/system/comercia/patch.php new file mode 100644 index 00000000..00fb18bb --- /dev/null +++ b/system/comercia/patch.php @@ -0,0 +1,89 @@ +db=Util::registry()->get("db"); + + $table = $this->table("comercia_patch"); + if (!$table->exists()) { + $table->addField("path","varchar(255)"); + $table->addField("patch", "varchar(50)"); + $table->addField("success", "int"); + $table->addField("date", "int"); + $table->create(); + } + + } + + function runPatchesFromFile($path){ + $patches=include($path); + $this->runPatches($patches,$path); + } + + function runPatchesFromFolder($folder,$context=false) { + if(!$context){ + $context=$folder; + } + $path = DIR_APPLICATION . 'patch/' . $folder; + $patches = []; + + if($handle = opendir($path)) { + while (false !== ($entry = readdir($handle))) { + if ($entry != '.' && $entry != '..' && !is_dir($path . '/' . $entry) && substr($entry, -3) === 'php') { + $index = substr($entry, 0,-4); + $patches[$index] = include $path . '/' . $entry; + } + } + + ksort($patches); + closedir($handle); + } + + $newPatches=[]; + foreach($patches as $key=>$val){ + if(is_numeric(substr($key,0,1))){ + $explode=explode("_",$key); + unset($explode[0]); + $key=implode("_",$explode); + } + $newPatches[$key]=$val; + } + + $this->runPatches($newPatches, $context); + } + + function runPatches($patches,$path){ + foreach($patches as $key=>$patch){ + if($this->needPatch($path,$key)){ + $patch(); + $this->registerDone($path,$key); + } + } + } + + function registerDone($path,$patch){ + $prefix=DB_PREFIX; + $this->db->query("insert into ".$prefix."comercia_patch set + `path`='".$path."', + `patch`='".$patch."', + `success`=1, + `date`=".time()." + "); + } + + function needPatch($path,$patch){ + $prefix = DB_PREFIX; + $query = $this->db->query("select comercia_patch_id from " . $prefix . "comercia_patch where `path`='".$path."' and `patch`='" . $patch . "' and success=1"); + return !$query->num_rows; + } + + function table($table){ + return new PatchTable($table,$this->db); + } +} diff --git a/system/comercia/patchTable.php b/system/comercia/patchTable.php new file mode 100644 index 00000000..8b600c3a --- /dev/null +++ b/system/comercia/patchTable.php @@ -0,0 +1,171 @@ +db=$db; + $this->name=$name; + } + + function setName($name) + { + $this->name = $name; + return $this; + } + + function save() + { + if ($this->exists()) { + $this->update(); + } else { + $this->create(); + } + } + + function exists() + { + $prefix = DB_PREFIX; + $query = $this->db->query("SHOW TABLES LIKE '" . $prefix . $this->name . "';"); + return $query->num_rows; + } + + function columnExists($columnName = '') + { + $prefix = DB_PREFIX; + $query = $this->db->query("SHOW COLUMNS FROM `" . $prefix . $this->name . "` LIKE '" . $columnName . "';"); + return $query->num_rows; + } + + function update() + { + $prefix = DB_PREFIX; + $query = "ALTER TABLE `" . $prefix . $this->name . "` "; + + $i = 0; + if (isset($this->actions["addField"])) { + foreach ($this->actions["addField"] as $action) { + if (!$this->columnExists($action['name'])) { + if ($i > 0) { + $query .= ","; + } + + if($action["default"]!==null && $action["default"]!==false){ + $action["default"]="'".$action["default"]."'"; + } + $query .= "ADD `" . $action["name"] . "` " . $action["type"]. ($action["default"]!==false?" DEFAULT ".$action["default"]:""); + $i++; + } + } + } + + if (isset($this->actions["editField"])) { + foreach ($this->actions["editField"] as $action) { + if ($this->columnExists($action['name'])) { + if ($i > 0) { + $query .= ","; + } + + if($action["default"]!==null && $action["default"]!==false){ + $action["default"]="'".$action["default"]."'"; + } + $query .= "MODIFY `" . $action["name"] . "` " . $action["type"]. ($action["default"]!==false?" DEFAULT ".$action["default"]:""); + $i++; + } + } + } + + + if (isset($this->actions['removeField'])) { + foreach ($this->actions['removeField'] as $action) { + if ($this->columnExists($action['name'])) { + if ($i > 0) { + $query .= ','; + } + $query .= "DROP COLUMN `" . $action['name'] . "`"; + $i++; + } + } + } + $this->db->query($query); + + if (isset($this->actions["addIndex"])) { + foreach ($this->actions["addIndex"] as $action) { + if ($this->columnExists($action['name'])) { + $this->db->query("CREATE INDEX `" . $action["name"] . "` ON `" . $prefix . $this->name . "` (`" . $action["name"] . "`);"); + } + } + } + } + + function create() + { + $prefix = DB_PREFIX; + $query = "create table `" . $prefix . $this->name . "` ( + `".$this->name."_id` INT NOT NULL AUTO_INCREMENT + "; + + if (isset($this->actions["addField"])) { + foreach ($this->actions["addField"] as $action) { + $query .= ",`" . $action["name"] . "` " . $action["type"]; + } + } + $query .= ",PRIMARY KEY (".$this->name."_id))"; + + $this->db->query($query); + + if (isset($this->actions["addIndex"])) { + foreach ($this->actions["addIndex"] as $action) { + $this->db->query("CREATE INDEX `" . $action["name"] . "` ON `" . $prefix . $this->name . "` (`" . $action["name"] . "`);"); + } + } + + return $this; + } + + function addField($field, $type,$default=false) + { + $this->actions["addField"][] = array( + "name" => $field, + "type" => $type, + "default"=>$default + ); + + return $this; + } + + + function editField($field, $type,$default=false) + { + $this->actions["editField"][] = array( + "name" => $field, + "type" => $type, + "default"=>$default + ); + + return $this; + } + + function removeField($field) + { + $this->actions['removeField'][] = array( + 'name' => $field + ); + + return $this; + } + + function addIndex($field) + { + $this->actions["addIndex"][] = array( + "name" => $field, + ); + + return $this; + } +} diff --git a/system/comercia/request.php b/system/comercia/request.php new file mode 100644 index 00000000..7736c255 --- /dev/null +++ b/system/comercia/request.php @@ -0,0 +1,126 @@ +get("request")->get); + } + return $get; + } + + function post() + { + static $post = false; + if (!$post) { + $contentType = $this->getHeaderByName("content-type"); + if (strpos($contentType, "json") !== false) { + $postData = json_decode($this->getRawData(), true); + $post = new ArrayObject($postData); + } else { + $post = new ArrayObject(Util::registry("load")->get("request")->post); + } + } + return $post; + } + + function server() + { + static $server = false; + if (!$server) { + $server = new ArrayObject(array_merge(Util::registry("load")->get("request")->server,[ + "protocol"=>(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://" + ])); + } + return $server; + } + + public function getRawData() + { + return file_get_contents("php://input"); + } + + public function getHeaders() + { + if (function_exists("getallheaders")) { + return array(array_change_key_case(getallheaders(), CASE_LOWER)); + } else { + return array(array_change_key_case($this->getallheadersFallback(), CASE_LOWER)); + } + } + + function getallheadersFallback() + { + static $headers = false; + if (!$headers) { + $headers = []; + foreach ($_SERVER as $name => $value) { + if (substr($name, 0, 5) == 'HTTP_') { + $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; + } + } + } + if (isset($_SERVER["CONTENT_TYPE"])) { + $headers["content-type"] = $_SERVER["CONTENT_TYPE"]; + } + return $headers; + } + + public function getHeaderByName($name) + { + $header = $this->getHeaders(); + + if (!is_array($header)) { + $header = $this->headersToArray($header); + } + + //if the content type is set + if (isset($header[0][$name])) { + return $header[0][$name]; + } + return ""; + } + + public function headersToArray($headerContent) + { + $result = array(); + + //split on double enter + $lines = explode("\r\n\r\n", $headerContent); + + for ($i = 0; $i < count($lines) - 1; $i++) { + //split on single enter + foreach (explode("\r\n", $lines[$i]) as $lKey => $line) { + if ($lKey === 0) { + $result[$i]['http_code'] = $line; + } else { + list ($key, $value) = explode(': ', $line); + $result[$i][strtolower($key)] = $value; + } + } + } + + return $result; + } + + + + public function getClientLanguage() + { + return substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); + } + + public function getIp() + { + return @$_SERVER['HTTP_CLIENT_IP'] ? $_SERVER['HTTP_CLIENT_IP'] : (@$_SERVER['HTTP_X_FORWARDE‌​D_FOR'] ? $_SERVER['HTTP_X_FORWARDED_FOR'] : (@$_SERVER['REMOTE_ADDR'] ? $_SERVER['REMOTE_ADDR'] : "127.0.0.1")); + } + + public function getUrl() + { + return (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; + } +} + +?> \ No newline at end of file diff --git a/system/comercia/response.php b/system/comercia/response.php new file mode 100644 index 00000000..995c8fee --- /dev/null +++ b/system/comercia/response.php @@ -0,0 +1,66 @@ +link($route, $params, $ssl); + $this->redirectToUrl($url); + } + + function redirectBack(){ + $this->redirectToUrl(str_replace("&","&",Util::request()->server()->HTTP_REFERER)); + } + + function redirectToUrl($url){ + Util::registry()->get("response")->redirect($url); + } + + function addHeader($key, $value) + { + Util::registry()->get("response")->addHeader($key . ":" . $value); + } + + function setCompression($level) + { + Util::registry()->get("response")->setCompression($level); + } + + function view($view, $data = array(), $pageControllers = true) + { + if ($pageControllers) { + Util::load()->pageControllers($data); + } + $result = Util::load()->view($view, $data); + $this->write($result); + } + + function write($output) + { + if($this->bufferMode){ + echo $output; + }else { + Util::registry()->get("response")->setOutput($output); + } + } + + function renderJson($data){ + $this->addHeader("content-type","application/json"); + $this->write(json_encode($data)); + } + + + function toVariable($function){ + $oldBufferMode= $this->bufferMode; + $this->bufferMode=true; + ob_start(); + $function(); + $result=ob_get_contents(); + ob_end_clean(); + $this->bufferMode=false; + return $result; + } +} + +?> diff --git a/system/comercia/route.php b/system/comercia/route.php new file mode 100644 index 00000000..e54a0747 --- /dev/null +++ b/system/comercia/route.php @@ -0,0 +1,24 @@ +isMinimal("2.3")) + { + return 'extension/module/'.$extensionName; + } + return 'extension/module/'.$extensionName; + } + + if (Util::version()->isMinimal("3.0")) { + return "marketplace/extension"; + } elseif (Util::version()->isMinimal("2.3")) { + return 'extension/extension'; + } + return 'extension/module'; + } +} + +?> \ No newline at end of file diff --git a/system/comercia/selectboxOptions.php b/system/comercia/selectboxOptions.php new file mode 100644 index 00000000..49ebd15b --- /dev/null +++ b/system/comercia/selectboxOptions.php @@ -0,0 +1,30 @@ +data =& $data; + $this->key = $key; + if (!isset($data[$key]) || !is_array($data[$key])) { + $data[$key] = array(); + } + } + + function add($key, $value) + { + $text = Util::language()->$key; + $entry = array( + 'text' => $text, + 'value' => $value, + ); + $this->data[$this->key][] = $entry; + return $this; + } +} + +?> \ No newline at end of file diff --git a/system/comercia/stringHelper.php b/system/comercia/stringHelper.php new file mode 100644 index 00000000..24c63680 --- /dev/null +++ b/system/comercia/stringHelper.php @@ -0,0 +1,36 @@ +$newWord){ + if(strpos($string, $newWord) !== false){ + $match=$newWord; + } + if($version>0 && Util::version()->isMinimal($version)){ + $versionMatch=$newWord; + } + } + + if($match){ + $string= str_replace($match,$versionMatch,$string); + } + } + return $string; + } + +} + +?> diff --git a/system/comercia/twig.php b/system/comercia/twig.php new file mode 100644 index 00000000..8cd85d69 --- /dev/null +++ b/system/comercia/twig.php @@ -0,0 +1,45 @@ +twig=$twig; + + //for backward compatibility purposes + $this->twig->addFunction("html_variables",new Twig_SimpleFunction("html_variables",function(){ + return \comercia\Util::html()->variables(); + })); + + $class = new ReflectionClass("\\comercia\\Util"); + $methods=$class->getMethods(ReflectionMethod::IS_STATIC); + foreach($methods as $method){ + $this->handleClass($method->name); + } + + } + + private function handleClass($class) + { + if(file_exists(__DIR__."/".$class.".php")){ + include_once(__DIR__."/".$class.".php"); + $reflectionClass = new ReflectionClass("\\comercia\\".$class); + $methods=$reflectionClass->getMethods(\ReflectionMethod::IS_PUBLIC); + foreach($methods as $method){ + $this->handleMethod($class,$method->name); + } + } + } + + private function handleMethod($class, $method) + { + $funcName=$class."_".$method; + //should use + $this->twig->addFunction("comercia_".$funcName,new Twig_SimpleFunction("comercia_".$funcName,[Util::$class(),$method])); + //for compatibility + $this->twig->addFunction("util_".$funcName,new Twig_SimpleFunction("util_".$funcName,[Util::$class(),$method])); + } + } diff --git a/system/comercia/url.php b/system/comercia/url.php new file mode 100644 index 00000000..f6e0e49f --- /dev/null +++ b/system/comercia/url.php @@ -0,0 +1,91 @@ +IsInAdmin()) { + if (defined(HTTPS_CATALOG)) { + return HTTPS_CATALOG . "image/" . $image; + } + return HTTP_CATALOG . "image/" . $image; + } + if (defined(HTTPS_SERVER)) { + return HTTPS_SERVER . "image/" . $image; + } + return HTTP_SERVER . "image/" . $image; + } + + function catalog($route, $params = "", $ssl = true) + { + $url = $this->getCatalogUrl($ssl) . "index.php?route=" . $route; + if ($params) { + $url .= "&" . $params; + } + return $url; + } + + function getCatalogUrl($ssl = true) + { + if (Util::info()->IsInAdmin()) { + if (defined(HTTPS_CATALOG) && $ssl) { + return HTTPS_CATALOG; + } + return HTTP_CATALOG; + } + if (defined(HTTPS_SERVER) && $ssl) { + return HTTPS_SERVER; + } + return HTTP_SERVER; + } + + function link($route, $params = "", $ssl = true) + { + $session = Util::session(); + + if (Util::version()->isMinimal(3.0)) { + $tokenName = "user_token"; + } else { + $tokenName = "token"; + } + + if ($session->$tokenName && $session->user_id && strpos($params, "route=") === false) { + if ($session->$tokenName) { + if ($params) { + $params .= "&".$tokenName."=" . $session->$tokenName; + } else { + $params = $tokenName."=" . $session->$tokenName; + } + } + } + + if ($ssl && !HTTPS_SERVER) { + $ssl = false; + } + + $result = ""; + if (!$ssl) { + $result = $this->_url()->link($route, $params); + } else { + if (Util::version()->isMinimal("2.2")) { + $result = $this->_url()->link($route, $params, true); + } else { + $result = $this->_url()->link($route, $params, "ssl"); + } + } + + return str_replace("&", "&", $result); + } + + private function _url() + { + $registry = Util::registry(); + if (!$registry->has('url')) { + $registry->set('url', new Url(HTTP_SERVER)); + } + + return $registry->get("url"); + } +} + +?> \ No newline at end of file diff --git a/system/comercia/util.php b/system/comercia/util.php new file mode 100644 index 00000000..25900bcd --- /dev/null +++ b/system/comercia/util.php @@ -0,0 +1,254 @@ +get("session")->data); + } + return $session; + } + + public static function registry() + { + global $registry; + return $registry; + } + + public static function html() + { + static $html = false; + if (!$html) { + require_once(__DIR__ . "/html.php"); + $html = new Html(); + } + return $html; + } + + + public static function controllerHelper() + { + static $helper = false; + if (!$helper) { + require_once(__DIR__ . "/controllerHelper.php"); + $helper = new ControllerHelper(); + } + return $helper; + } + + public static function dateTimeHelper() + { + static $helper = false; + if (!$helper) { + require_once(__DIR__ . "/dateTimeHelper.php"); + $helper = new DateTimeHelper(); + } + return $helper; + } + + + public static function document() + { + static $document = false; + if (!$document) { + require_once(__DIR__ . "/document.php"); + $document = new Document(); + } + return $document; + } + + public static function patch() + { + static $patch = false; + if (!$patch) { + require_once(__DIR__ . "/patch.php"); + $patch = new Patch(); + } + return $patch; + } + + public static function twig() + { + static $twig = false; + if (!$twig) { + require_once(__DIR__ . "/twig.php"); + $twig = new Twig(); + } + return $twig; + } +} + +?> diff --git a/system/comercia/version.php b/system/comercia/version.php new file mode 100644 index 00000000..040e9d8e --- /dev/null +++ b/system/comercia/version.php @@ -0,0 +1,26 @@ +version = VERSION; + } + + function get() + { + return $this->version; + } + + function isMinimal($version) + { + return version_compare($version, $this->version, "<="); + } + + function isMaximal($version) + { + return version_compare($version, $this->version, ">="); + } +} \ No newline at end of file diff --git a/vqmod/xml/comercia_util.xml b/vqmod/xml/comercia_util.xml new file mode 100644 index 00000000..561fc36a --- /dev/null +++ b/vqmod/xml/comercia_util.xml @@ -0,0 +1,81 @@ + + Comercia Utility + 1.0.6 + 2.3.0 + Comercia - Mark Smit + + + + + + + + + + + + + + + + + + + ]]> + variables();?>]]> + + + + + + + ]]> + variables();?>]]> + + + + + + + + ]]> + + + + + + + + ]]> + + + + + + + + + + twig = new \Twig_Environment]]> + prepare($this->twig); + ]]> + + + + + + + + + + + + + + + From 51652820fece45d180c31e388e504fe897df9252 Mon Sep 17 00:00:00 2001 From: Pradeep Date: Fri, 28 Sep 2018 16:48:41 +0530 Subject: [PATCH 08/35] COMDEVNL-1337 -- Updated --- .../extension/payment/mollie/base.php | 17 +++++++++---- .../de-de/extension/payment/mollie.php | 3 --- .../dutch/extension/payment/mollie.php | 3 --- .../en-gb/extension/payment/mollie.php | 3 --- .../english/extension/payment/mollie.php | 3 --- .../es-es/extension/payment/mollie.php | 3 --- .../fr-fr/extension/payment/mollie.php | 3 --- .../french/extension/payment/mollie.php | 3 --- .../german/extension/payment/mollie.php | 3 --- .../nl-nl/extension/payment/mollie.php | 3 --- .../spanish/extension/payment/mollie.php | 3 --- .../template/extension/payment/mollie.tpl | 6 ----- .../template/extension/payment/mollie.twig | 6 ----- .../template/extension/payment/mollie_1.tpl | 6 ----- .../model/extension/payment/mollie/base.php | 24 +++++++++++++------ 15 files changed, 30 insertions(+), 59 deletions(-) diff --git a/admin/controller/extension/payment/mollie/base.php b/admin/controller/extension/payment/mollie/base.php index 98c2b7ed..55a1c5a4 100644 --- a/admin/controller/extension/payment/mollie/base.php +++ b/admin/controller/extension/payment/mollie/base.php @@ -236,6 +236,8 @@ public function index () // Set data for template $data['api_check_url'] = $this->url->link("extension/payment/mollie_" . static::MODULE_NAME . '/validate_api_key', $this->getTokenUriPart(), "SSL"); + $data['module_name'] = static::MODULE_NAME; + $data['token'] = $this->getTokenUriPart(); $data['heading_title'] = $this->language->get("heading_title"); $data['title_global_options'] = $this->language->get("title_global_options"); $data['title_payment_status'] = $this->language->get("title_payment_status"); @@ -282,9 +284,6 @@ public function index () $data['entry_support'] = $this->language->get("entry_support"); $data['entry_module'] = $this->language->get("entry_module"); $data['entry_version'] = $this->language->get("entry_version") . " " . MollieHelper::PLUGIN_VERSION; - $data['entry_creditcard_max_amount'] = $this->language->get("entry_creditcard_max_amount"); - $data['help_creditcard_max_amount'] = $this->language->get("help_creditcard_max_amount"); - $data['eg_creditcard_max_amount'] = $this->language->get("eg_creditcard_max_amount"); $data['button_save'] = $this->language->get("button_save"); $data['button_cancel'] = $this->language->get("button_cancel"); @@ -376,7 +375,6 @@ public function index () $code . "_ideal_canceled_status_id" => 7, $code . "_ideal_failed_status_id" => 10, $code . "_ideal_expired_status_id" => 14, - $code . "_creditcard_max_amount" => NULL, ); foreach($shops as $store) @@ -750,4 +748,15 @@ private function getUserId() return $this->user->getId(); } + + public function saveAPIKey() { + $this->load->model('setting/setting'); + $code = 'mollie'; + $store_id = $_POST['store_id']; + $data = array( + 'mollie_api_key' => $_POST['api_key'] + ); + $this->model_setting_setting->editSetting($code, $data, $store_id); + return true; + } } diff --git a/admin/language/de-de/extension/payment/mollie.php b/admin/language/de-de/extension/payment/mollie.php index 1b64f05b..5a9c32e7 100644 --- a/admin/language/de-de/extension/payment/mollie.php +++ b/admin/language/de-de/extension/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Icons anzeigen"; $_['entry_show_order_canceled_page'] = "Meldung bei annullierten Bezahlungen anzeigen"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Höchstbetrag für Kreditkarte"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Sie können Ihren API Key auf Ihren Mollie-Webseiten-Profilen finden.'; @@ -100,7 +98,6 @@ $_['help_description'] = "Die Beschreibung soll auf der Banküberweisung Ihres Kunden erscheinen und Sie können sie in der Mollie Verwaltung sehen. Sie können maximal 29 Zeichen verwenden. TIPP: Verwenden Sie %, dies wird durch die Auftragsnummer ersetzt werden. Die Auftragsnummer selbst kann auch mehrere Zeichen lang sein!"; $_['help_show_icons'] = "Icons neben den Zahlungsarten von Mollie auf der Zahlungsseite anzeigen."; $_['help_show_order_canceled_page'] = "Eine Meldung für den Kunden anzeigen, wenn eine Zahlung annulliert wurde, bevor der Kunde zurück zum Warenkorb verwiesen wird."; -$_['help_creditcard_max_amount'] = 'Geben Sie den Betrag ein, den Sie in Ihrem mollie-Konto für die Kreditkarte festgelegt haben.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/dutch/extension/payment/mollie.php b/admin/language/dutch/extension/payment/mollie.php index 093845c0..8dc2c8ac 100644 --- a/admin/language/dutch/extension/payment/mollie.php +++ b/admin/language/dutch/extension/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Toon icoontjes"; $_['entry_show_order_canceled_page'] = "Toon melding bij geannuleerde betalingen"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Maximumbedrag voor creditcard"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'U kunt uw API-sleutel vinden bij uw Mollie-websiteprofielen.'; @@ -100,7 +98,6 @@ $_['help_description'] = "De omschrijving zal op het bankafschrift van uw klant verschijnen en kunt u terugvinden in het Mollie beheer. U kunt maximaal 29 tekens gebruiken. TIP: Gebruik %, dit zal vervangen worden door het ordernummer. Het ordernummer kan zelf ook meerdere tekens lang zijn!"; $_['help_show_icons'] = "Toon icoontjes naast de betaalmethodes van Mollie op de betaalpagina."; $_['help_show_order_canceled_page'] = "Toon een melding aan de klant als een betaling geannuleerd wordt, alvorens de klant terug naar het winkelmandje te verwijzen."; -$_['help_creditcard_max_amount'] = 'Voer het bedrag in dat u hebt ingesteld voor uw creditcard in uw mollie-account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/en-gb/extension/payment/mollie.php b/admin/language/en-gb/extension/payment/mollie.php index c481a359..5525909c 100644 --- a/admin/language/en-gb/extension/payment/mollie.php +++ b/admin/language/en-gb/extension/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Show icons"; $_['entry_show_order_canceled_page'] = "Show message if payment is cancelled"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Maximum amount for credit card"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'You can find your API key in your Mollie website profiles.'; @@ -100,7 +98,6 @@ $_['help_description'] = 'This description will appear on the bank / card statement of your customer. You may use a maximum of 29 characters. TIP: Use %, this will be replaced by the order id of the payment. Don\'t forget % can be multiple characters long!'; $_['help_show_icons'] = 'Show icons next to the Mollie payment methods on the checkout page.'; $_['help_show_order_canceled_page'] = 'Show a message to the customer if a payment is cancelled, before redirecting the customer back to their shopping cart.'; -$_['help_creditcard_max_amount'] = 'Enter the amount you have set for credit card in your mollie account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/english/extension/payment/mollie.php b/admin/language/english/extension/payment/mollie.php index 96ef2a9f..8b3e0ea9 100644 --- a/admin/language/english/extension/payment/mollie.php +++ b/admin/language/english/extension/payment/mollie.php @@ -88,8 +88,6 @@ $_['entry_show_icons'] = "Show icons"; $_['entry_show_order_canceled_page'] = "Show message if payment is cancelled"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Maximumbedrag voor credit card"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'You can find your API key in your Mollie website profiles.'; @@ -98,7 +96,6 @@ $_['help_description'] = 'This description will appear on the bank / card statement of your customer. You may use a maximum of 29 characters. TIP: Use %, this will be replaced by the order id of the payment. Don\'t forget % can be multiple characters long!'; $_['help_show_icons'] = 'Show icons next to the Mollie payment methods on the checkout page.'; $_['help_show_order_canceled_page'] = 'Show a message to the customer if a payment is cancelled, before redirecting the customer back to their shopping cart.'; -$_['help_creditcard_max_amount'] = 'Enter the amount you have set for credit card in your mollie account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/es-es/extension/payment/mollie.php b/admin/language/es-es/extension/payment/mollie.php index 345ddf52..e943f930 100644 --- a/admin/language/es-es/extension/payment/mollie.php +++ b/admin/language/es-es/extension/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Mostrar iconos"; $_['entry_show_order_canceled_page'] = "Mostrar notificación en caso de cancelación de pagos"; $_['entry_geo_zone'] = "Zona Geo"; -$_['entry_creditcard_max_amount'] = "Monto máximo por tarjeta de crédito"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help @@ -102,7 +100,6 @@ $_['help_description'] = "La descripción aparecerá en el estado de cuenta de su cliente y se puede encontrar en la administración de Mollie. Puede utilizar hasta 29 caracteres. CONSEJO: Use%, que será reemplazado por el número de pedido. ¡El número de pedido puede tener algunos caracteres más!"; $_['help_show_icons'] = "Mostrar iconos junto a los métodos de pago de Mollie en la página de pago."; $_['help_show_order_canceled_page'] = "Mostrar una notificación al cliente si un pago es cancelado, antes de redirigir al cliente de nuevo a la cesta de la compra."; -$_['help_creditcard_max_amount'] = 'Ingrese el monto que ha configurado para la tarjeta de crédito en su cuenta de Mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/fr-fr/extension/payment/mollie.php b/admin/language/fr-fr/extension/payment/mollie.php index fb6841e7..f1fa20b3 100644 --- a/admin/language/fr-fr/extension/payment/mollie.php +++ b/admin/language/fr-fr/extension/payment/mollie.php @@ -89,8 +89,6 @@ $_['entry_description'] = "Description"; $_['entry_show_icons'] = "Afficher des icônes"; $_['entry_show_order_canceled_page'] = "Afficher un message si le paiement est annulé"; -$_['entry_creditcard_max_amount'] = "Montant maximum pour carte de crédit"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Vous pouvez trouver votre clé API dans vos profils de site à Mollie.'; @@ -99,7 +97,6 @@ $_['help_description'] = 'Cette description apparaîtra sur le relevé bancaire de votre client. Vous pouvez utiliser un maximum de 29 caractères. ASTUCE: Utilisez le %, il sera remplacé par l\'id de la commande du paiement. N\'oubliez pas que %/code> peut devenir plusieurs caractères!'; $_['help_show_icons'] = 'Afficher les icônes à côté des méthodes de paiement Mollie sur la page de paiement.'; $_['help_show_order_canceled_page'] = 'Afficher un message au client si un paiement est annulé, avant de rediriger le client vers leur panier.'; -$_['help_creditcard_max_amount'] = 'Entrez le montant que vous avez défini pour la carte de crédit dans votre compte mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/french/extension/payment/mollie.php b/admin/language/french/extension/payment/mollie.php index fb6841e7..f1fa20b3 100644 --- a/admin/language/french/extension/payment/mollie.php +++ b/admin/language/french/extension/payment/mollie.php @@ -89,8 +89,6 @@ $_['entry_description'] = "Description"; $_['entry_show_icons'] = "Afficher des icônes"; $_['entry_show_order_canceled_page'] = "Afficher un message si le paiement est annulé"; -$_['entry_creditcard_max_amount'] = "Montant maximum pour carte de crédit"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Vous pouvez trouver votre clé API dans vos profils de site à Mollie.'; @@ -99,7 +97,6 @@ $_['help_description'] = 'Cette description apparaîtra sur le relevé bancaire de votre client. Vous pouvez utiliser un maximum de 29 caractères. ASTUCE: Utilisez le %, il sera remplacé par l\'id de la commande du paiement. N\'oubliez pas que %/code> peut devenir plusieurs caractères!'; $_['help_show_icons'] = 'Afficher les icônes à côté des méthodes de paiement Mollie sur la page de paiement.'; $_['help_show_order_canceled_page'] = 'Afficher un message au client si un paiement est annulé, avant de rediriger le client vers leur panier.'; -$_['help_creditcard_max_amount'] = 'Entrez le montant que vous avez défini pour la carte de crédit dans votre compte mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/german/extension/payment/mollie.php b/admin/language/german/extension/payment/mollie.php index 31eddd6d..ebdc40c3 100644 --- a/admin/language/german/extension/payment/mollie.php +++ b/admin/language/german/extension/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Icons anzeigen"; $_['entry_show_order_canceled_page'] = "Meldung bei annullierten Bezahlungen anzeigen"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Höchstbetrag für Kreditkarte"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Sie können Ihren API Key auf Ihren Mollie-Webseiten-Profilen finden.'; @@ -100,7 +98,6 @@ $_['help_description'] = "Die Beschreibung soll auf der Banküberweisung Ihres Kunden erscheinen und Sie können sie in der Mollie Verwaltung sehen. Sie können maximal 29 Zeichen verwenden. TIPP: Verwenden Sie %, dies wird durch die Auftragsnummer ersetzt werden. Die Auftragsnummer selbst kann auch mehrere Zeichen lang sein!"; $_['help_show_icons'] = "Icons neben den Zahlungsarten von Mollie auf der Zahlungsseite anzeigen."; $_['help_show_order_canceled_page'] = "Eine Meldung für den Kunden anzeigen, wenn eine Zahlung annulliert wurde, bevor der Kunde zurück zum Warenkorb verwiesen wird."; -$_['help_creditcard_max_amount'] = 'Geben Sie den Betrag ein, den Sie in Ihrem mollie-Konto für die Kreditkarte festgelegt haben.'; // Info diff --git a/admin/language/nl-nl/extension/payment/mollie.php b/admin/language/nl-nl/extension/payment/mollie.php index 0775aa99..7583be08 100644 --- a/admin/language/nl-nl/extension/payment/mollie.php +++ b/admin/language/nl-nl/extension/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Toon icoontjes"; $_['entry_show_order_canceled_page'] = "Toon melding bij geannuleerde betalingen"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Maximumbedrag voor creditcard"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'U kunt uw API-sleutel vinden bij uw Mollie-websiteprofielen.'; @@ -100,7 +98,6 @@ $_['help_description'] = "De omschrijving zal op het bankafschrift van uw klant verschijnen en kunt u terugvinden in het Mollie beheer. U kunt maximaal 29 tekens gebruiken. TIP: Gebruik %, dit zal vervangen worden door het ordernummer. Het ordernummer kan zelf ook meerdere tekens lang zijn!"; $_['help_show_icons'] = "Toon icoontjes naast de betaalmethodes van Mollie op de betaalpagina."; $_['help_show_order_canceled_page'] = "Toon een melding aan de klant als een betaling geannuleerd wordt, alvorens de klant terug naar het winkelmandje te verwijzen."; -$_['help_creditcard_max_amount'] = 'Voer het bedrag in dat u hebt ingesteld voor uw creditcard in uw mollie-account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/spanish/extension/payment/mollie.php b/admin/language/spanish/extension/payment/mollie.php index d669c41b..4640a5ba 100644 --- a/admin/language/spanish/extension/payment/mollie.php +++ b/admin/language/spanish/extension/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Mostrar iconos"; $_['entry_show_order_canceled_page'] = "Mostrar notificación en caso de cancelación de pagos"; $_['entry_geo_zone'] = "Zona Geo"; -$_['entry_creditcard_max_amount'] = "Monto máximo por tarjeta de crédito"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Puede encontrar su clave API en sus @@ -101,7 +99,6 @@ $_['help_description'] = "La descripción aparecerá en el estado de cuenta de su cliente y se puede encontrar en la administración de Mollie. Puede utilizar hasta 29 caracteres. CONSEJO: Use%, que será reemplazado por el número de pedido. ¡El número de pedido puede tener algunos caracteres más!"; $_['help_show_icons'] = "Mostrar iconos junto a los métodos de pago de Mollie en la página de pago."; $_['help_show_order_canceled_page'] = "Mostrar una notificación al cliente si un pago es cancelado, antes de redirigir al cliente de nuevo a la cesta de la compra."; -$_['help_creditcard_max_amount'] = 'Ingrese el monto que ha configurado para la tarjeta de crédito en su cuenta de Mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/view/template/extension/payment/mollie.tpl b/admin/view/template/extension/payment/mollie.tpl index 78de655c..c766b864 100644 --- a/admin/view/template/extension/payment/mollie.tpl +++ b/admin/view/template/extension/payment/mollie.tpl @@ -235,12 +235,6 @@
-
- -
- -
-
diff --git a/admin/view/template/extension/payment/mollie.twig b/admin/view/template/extension/payment/mollie.twig index 2eab341b..22f526a3 100644 --- a/admin/view/template/extension/payment/mollie.twig +++ b/admin/view/template/extension/payment/mollie.twig @@ -234,12 +234,6 @@ {% endif %}
- -
- -
- -
diff --git a/admin/view/template/extension/payment/mollie_1.tpl b/admin/view/template/extension/payment/mollie_1.tpl index 4d69ce25..e9a30bb8 100644 --- a/admin/view/template/extension/payment/mollie_1.tpl +++ b/admin/view/template/extension/payment/mollie_1.tpl @@ -224,12 +224,6 @@ -
- -
- -
-
diff --git a/catalog/model/extension/payment/mollie/base.php b/catalog/model/extension/payment/mollie/base.php index b204c4d6..205ed91d 100644 --- a/catalog/model/extension/payment/mollie/base.php +++ b/catalog/model/extension/payment/mollie/base.php @@ -76,6 +76,23 @@ public function getMethod($address, $total) return NULL; } + //Get payment methods allowed for this amount and currency + $allowed_methods = array(); + $currency = $this->session->data['currency']; + $data = array( + "amount" => ["value" => (string)number_format((float)$total, 2, '.', ''), "currency" => $currency,] + ); + $payment_methods = $this->getAPIClient()->methods->all($data); + + foreach ($payment_methods as $allowed_method) + { + $allowed_methods[] = $allowed_method->id; + } + + if(!in_array($payment_method->id, $allowed_methods)) { + return NULL; + } + $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get($moduleCode . "_" . static::MODULE_NAME . "_geo_zone") . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')"); if ((bool)$this->config->get($moduleCode . "_" . static::MODULE_NAME . "_geo_zone") && !$query->num_rows) { @@ -98,13 +115,6 @@ public function getMethod($address, $total) $icon = ''; } - if (static::MODULE_NAME == 'creditcard'){ - $amount_limit = $this->config->get($moduleCode .'_creditcard_max_amount'); - if(($amount_limit != NULL) && ($total > $amount_limit)) { - return; - } - } - return array( "code" => "mollie_" . static::MODULE_NAME, "title" => $icon . $payment_method->description, From bbf64c692b9de188c8b6bd5a49c5566ddb511b41 Mon Sep 17 00:00:00 2001 From: Pradeep Date: Thu, 4 Oct 2018 18:14:47 +0530 Subject: [PATCH 09/35] COMDEVNL-1332 -- Updated --- .../extension/payment/mollie_eps.php | 2 +- .../extension/payment/mollie_paysafecard.php | 2 +- admin/controller/payment/mollie/base.php | 334 +++++++++--------- .../{mollie_1.tpl => mollie(max_1.5.6.4).tpl} | 0 .../{mollie_1.tpl => mollie(max_1.5.6.4).tpl} | 11 +- admin/view/template/payment/mollie.tpl | 11 +- catalog/controller/payment/mollie/base.php | 11 +- catalog/controller/payment/mollie/helper.php | 13 +- catalog/model/payment/mollie/base.php | 24 -- system/comercia/arrayHelper.php | 8 + system/comercia/arrayObject.php | 5 + system/comercia/error.php | 30 ++ system/comercia/info.php | 7 + system/comercia/request.php | 7 +- system/comercia/route.php | 8 +- system/comercia/stringHelper.php | 2 +- system/comercia/util.php | 10 +- system/library/mollieHttpClient.php | 74 ++++ vqmod/xml/mollie.xml | 21 ++ 19 files changed, 358 insertions(+), 222 deletions(-) rename admin/view/template/extension/payment/{mollie_1.tpl => mollie(max_1.5.6.4).tpl} (100%) rename admin/view/template/payment/{mollie_1.tpl => mollie(max_1.5.6.4).tpl} (97%) create mode 100644 system/comercia/error.php create mode 100644 system/library/mollieHttpClient.php create mode 100644 vqmod/xml/mollie.xml diff --git a/admin/controller/extension/payment/mollie_eps.php b/admin/controller/extension/payment/mollie_eps.php index cdd176fd..074f0ed6 100644 --- a/admin/controller/extension/payment/mollie_eps.php +++ b/admin/controller/extension/payment/mollie_eps.php @@ -1,5 +1,5 @@ diff --git a/admin/controller/extension/payment/mollie_paysafecard.php b/admin/controller/extension/payment/mollie_paysafecard.php index e02ab2e3..8036d4ef 100644 --- a/admin/controller/extension/payment/mollie_paysafecard.php +++ b/admin/controller/extension/payment/mollie_paysafecard.php @@ -1,5 +1,5 @@ diff --git a/admin/controller/payment/mollie/base.php b/admin/controller/payment/mollie/base.php index 3b33a88f..a9007430 100644 --- a/admin/controller/payment/mollie/base.php +++ b/admin/controller/payment/mollie/base.php @@ -48,7 +48,13 @@ require_once(dirname(DIR_SYSTEM) . "/catalog/controller/payment/mollie/helper.php"); -require_once(DIR_SYSTEM . "comercia/util.php"); +define("MOLLIE_VERSION", MollieHelper::PLUGIN_VERSION); +define("MOLLIE_RELEASE", MOLLIE_VERSION . ".5"); +define("MOLLIE_VERSION_URL", "https://api.github.com/repos/mollie/OpenCart/releases/latest"); + +if (!defined("MOLLIE_TMP")) { + define("MOLLIE_TMP", sys_get_temp_dir()); +} use comercia\Util; @@ -106,29 +112,36 @@ public function install () */ public function cleanUp() { - $adminThemeDir = DIR_APPLICATION . 'view/template/extension/payment/'; - $catalogThemeDir = DIR_CATALOG . 'view/theme/default/template/extension/payment/'; + $adminThemeDir = DIR_APPLICATION . 'view/template/'; + $catalogThemeDir = DIR_CATALOG . 'view/theme/default/template/'; // Remove old template from previous version. - if (file_exists($adminThemeDir . 'mollie_2.tpl')) { - unlink($adminThemeDir . 'mollie_2.tpl'); + if (file_exists($adminThemeDir . 'extension/payment/mollie_2.tpl')) { + unlink($adminThemeDir . 'extension/payment/mollie_2.tpl'); + unlink($adminThemeDir . 'payment/mollie_2.tpl'); } if (MollieHelper::isOpenCart3x()) { - unlink($adminThemeDir . 'mollie_1.tpl'); - unlink($adminThemeDir . 'mollie.tpl'); - unlink($catalogThemeDir . 'mollie_return.tpl'); - unlink($catalogThemeDir . 'mollie_checkout_form.tpl'); + unlink($adminThemeDir . 'extension/payment/mollie(max_1.5.6.4).tpl'); + unlink($adminThemeDir . 'payment/mollie(max_1.5.6.4).tpl'); + unlink($catalogThemeDir . 'extension/payment/mollie_return.tpl'); + unlink($catalogThemeDir . 'payment/mollie_return.tpl'); + unlink($catalogThemeDir . 'extension/payment/mollie_checkout_form.tpl'); + unlink($catalogThemeDir . 'payment/mollie_checkout_form.tpl'); } elseif (MollieHelper::isOpenCart2x()) { - unlink($adminThemeDir . 'mollie_1.tpl'); - unlink($adminThemeDir . 'mollie.twig'); - unlink($catalogThemeDir . 'mollie_return.twig'); - unlink($catalogThemeDir . 'mollie_checkout_form.twig'); + unlink($adminThemeDir . 'extension/payment/mollie(max_1.5.6.4).tpl'); + unlink($adminThemeDir . 'payment/mollie(max_1.5.6.4).tpl'); + unlink($catalogThemeDir . 'extension/payment/mollie_return.twig'); + unlink($catalogThemeDir . 'payment/mollie_return.twig'); + unlink($catalogThemeDir . 'extension/payment/mollie_checkout_form.twig'); + unlink($catalogThemeDir . 'payment/mollie_checkout_form.twig'); } else { - unlink($adminThemeDir . 'mollie.tpl'); - unlink($adminThemeDir . 'mollie.twig'); - unlink($catalogThemeDir . 'mollie_return.twig'); - unlink($catalogThemeDir . 'mollie_checkout_form.twig'); + unlink($adminThemeDir . 'extension/payment/mollie.tpl'); + unlink($adminThemeDir . 'payment/mollie.tpl'); + unlink($catalogThemeDir . 'extension/payment/mollie_return.twig'); + unlink($catalogThemeDir . 'payment/mollie_return.twig'); + unlink($catalogThemeDir . 'extension/payment/mollie_checkout_form.twig'); + unlink($catalogThemeDir . 'payment/mollie_checkout_form.twig'); } } @@ -138,7 +151,7 @@ public function cleanUp() protected function installAllModules () { // Load models. - $extensions = $this->getExtensionModel(); + $extensions = Util::load()->model('extension/extension'); $user_id = $this->getUserId(); foreach (MollieHelper::$MODULE_NAMES as $module_name) @@ -170,7 +183,7 @@ public function uninstall () */ protected function uninstallAllModules () { - $extensions = $this->getExtensionModel(); + $extensions = Util::load()->model('extension/extension'); foreach (MollieHelper::$MODULE_NAMES as $module_name) { @@ -196,8 +209,9 @@ public function index () } //Load language data - $data = array(); + $data = array("version" => MOLLIE_RELEASE); Util::load()->language("payment/mollie", $data); + $this->data = $data; $form = Util::form($data); // Load essential models @@ -205,12 +219,13 @@ public function index () $modelStore = Util::load()->model("setting/store"); $modelOrderStatus = Util::load()->model("localisation/order_status"); $modelGeoZone = Util::load()->model("localisation/geo_zone"); + Util::load()->library("mollieHttpClient"); $code = MollieHelper::getModuleCode(); $form->finish(function ($data) { $code = MollieHelper::getModuleCode(); - $redirect = false; + $redirect = true; $stores = Util::info()->stores(); foreach ($stores as $store) { if ($this->validate($store["store_id"])) { @@ -219,14 +234,15 @@ public function index () $configSet = array_merge($configSet, Util::request()->post()->allPrefixed($code, false)); } Util::config($store["store_id"])->set($code, $configSet); - - $redirect = true; + } + else { + $redirect = false; } } if ($redirect) { Util::session()->success = $data['text_success']; - Util::response()->redirectToUrl(Util::url()->link(Util::route()->extension(), "type=payment")); + Util::response()->redirectToUrl(Util::url()->link(Util::route()->extension(false, 'payment'), "type=payment")); } }); @@ -249,7 +265,8 @@ public function index () $paymentGeoZone[] = $code . '_' . $module_name . '_geo_zone'; } - $settingFields = array($code . "_creditcard_max_amount", $code . "_show_icons", $code . "_show_order_canceled_page", $code . "_ideal_description", $code . "_api_key", $code . "_ideal_processing_status_id", $code . "_ideal_expired_status_id", $code . "_ideal_canceled_status_id", $code . "_ideal_failed_status_id", $code . "_ideal_pending_status_id"); + $fields = array("show_icons", "show_order_canceled_page", "ideal_description", "api_key", "ideal_processing_status_id", "ideal_expired_status_id", "ideal_canceled_status_id", "ideal_failed_status_id", "ideal_pending_status_id"); + $settingFields = Util::arrayHelper()->prefixAllValues($code . '_', $fields); $storeFormFields = array_merge($settingFields, $paymentStatus, $paymentSortOrder, $paymentGeoZone); @@ -264,60 +281,26 @@ public function index () //Breadcrumb Util::breadcrumb($data) ->add("text_home", "common/home") - ->add("text_payment", "payment", "type=payment") - ->add("heading_title", "payment/mollie_" . static::MODULE_NAME); + ->add("text_payment", Util::route()->extension(false, 'payment'), "type=payment") + ->add("heading_title", Util::route()->extension("mollie_" . static::MODULE_NAME, 'payment')); // Set data for template $data['api_check_url'] = Util::url()->link("payment/mollie_" . static::MODULE_NAME . '/validate_api_key'); $data['module_name'] = static::MODULE_NAME; $data['token'] = $this->getTokenUriPart(); $data['entry_version'] = $this->language->get("entry_version") . " " . MollieHelper::PLUGIN_VERSION; + $data['update_url'] = $this->getUpdateUrl(); - //$data['shops'] = $data['stores']; $data['code'] = $code; $data['geo_zones'] = $modelGeoZone->getGeoZones(); $data['order_statuses'] = $modelOrderStatus->getOrderStatuses(); $shops = $data['shops']; - foreach($shops as $store) - { - $data['shops'][$store['store_id']]['entry_cstatus'] = $this->checkCommunicationStatus(isset($store[$code . '_api_key']) ? $store[$code . '_api_key'] : null); - - if (isset($this->error[$store['store_id']]['api_key'])) { - $data['shops'][$store['store_id']]['error_api_key'] = $this->error[$store['store_id']]['api_key']; - } else { - $data['shops'][$store['store_id']]['error_api_key'] = ''; - } - if (isset($this->error[$store['store_id']]['description'])) { - $data['shops'][$store['store_id']]['error_description'] = $this->error[$store['store_id']]['description']; - } else { - $data['shops'][$store['store_id']]['error_description'] = ''; - } - - if (isset($this->error[$store['store_id']]['show_icons'])) { - $data['shops'][$store['store_id']]['error_show_icons'] = $this->error[$store['store_id']]['show_icons']; - } else { - $data['shops'][$store['store_id']]['error_show_icons'] = ''; - } - - if (isset($this->error[$store['store_id']]['show_order_canceled_page'])) { - $data['shops'][$store['store_id']]['show_order_canceled_page'] = $this->error[$store['store_id']]['show_order_canceled_page']; - } else { - $data['shops'][$store['store_id']]['show_order_canceled_page'] = ''; - } - - if (isset($this->error[$store['store_id']]['total'])) { - $data['shops'][$store['store_id']]['error_total'] = $this->error[$store['store_id']]['total']; - } else { - $data['shops'][$store['store_id']]['error_total'] = ''; - } - } - // Form action url $data['action'] = Util::url()->link("payment/mollie_" . static::MODULE_NAME); - $data['cancel'] = Util::url()->link( Util::route()->extension(), "type=payment"); + $data['cancel'] = Util::url()->link( Util::route()->extension(false, 'payment'), "type=payment"); // Load global settings. Some are prefixed with mollie_ideal_ for legacy reasons. $settings = array( @@ -330,18 +313,17 @@ public function index () $code . "_ideal_canceled_status_id" => 7, $code . "_ideal_failed_status_id" => 10, $code . "_ideal_expired_status_id" => 14, - $code . "_creditcard_max_amount" => NULL, ); - foreach($shops as $store) + foreach($shops as &$store) { $this->data = $store; foreach ($settings as $setting_name => $default_value) { // Attempt to read from post - if (isset(Util::request()->post()->{$store['store_id'] . '_' . $setting_name})) + if (null != Util::request()->post()->get($store['store_id'] . '_' . $setting_name)) { - $data['shops'][$store['store_id']][$setting_name] = Util::request()->post()->{$store['store_id'] . '_' . $setting_name}; + $data['shops'][$store['store_id']][$setting_name] = Util::request()->post()->get($store['store_id'] . '_' . $setting_name); } // Otherwise, attempt to get the setting from the database @@ -366,7 +348,7 @@ public function index () $allowed_methods = array(); try { - $api_methods = $this->getAPIClient($store['store_id'])->methods->all(); + $api_methods = $this->getAPIClient()->methods->all(); foreach ($api_methods as $api_method) { @@ -376,7 +358,7 @@ public function index () catch (Mollie\Api\Exceptions\ApiException $e) { // If we have an unauthorized request, our API key is likely invalid. - if ($store[$code . '_api_key'] !== NULL && strpos($e->getMessage(), "Unauthorized request") >= 0) + if ($store[$code . '_api_key'] !== NULL && strpos($e->getMessage(), "Unauthorized request") !== false) { $data['error_api_key'] = $this->language->get("error_api_key_invalid"); } @@ -393,27 +375,27 @@ public function index () $payment_method['allowed'] = in_array($module_name, $allowed_methods); // Load module specific settings. - if (isset(Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_status'})) + if (isset($store[$store['store_id'] . '_' . $code . '_' . $module_name . '_status'])) { - $payment_method['status'] = (Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_status'} == "on"); + $payment_method['status'] = ($store[$store['store_id'] . '_' . $code . '_' . $module_name . '_status'] == "on"); } else { $payment_method['status'] = (bool) isset($store[$code . "_" . $module_name . "_status"]) ? $store[$code . "_" . $module_name . "_status"] : null; } - if (isset(Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_sort_order'})) + if (isset($store[$store['store_id'] . '_' . $code . '_' . $module_name . '_sort_order'])) { - $payment_method['sort_order'] = Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_sort_order'}; + $payment_method['sort_order'] = $store[$store['store_id'] . '_' . $code . '_' . $module_name . '_sort_order']; } else { $payment_method['sort_order'] = isset($store[$code . "_" . $module_name . "_sort_order"]) ? $store[$code . "_" . $module_name . "_sort_order"] : null; } - if (isset(Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_geo_zone'})) + if (isset($store[$store['store_id'] . '_' . $code . '_' . $module_name . '_geo_zone'])) { - $payment_method['geo_zone'] = Util::request()->post()->{$store['store_id'] . '_' . $code . '_' . $module_name . '_geo_zone'}; + $payment_method['geo_zone'] = $store[$store['store_id'] . '_' . $code . '_' . $module_name . '_geo_zone']; } else { @@ -422,14 +404,16 @@ public function index () $data['store'][$store['store_id'] . '_' . $code . '_payment_methods'][$module_name] = $payment_method; } + + $data['shops'][$store['store_id']]['entry_cstatus'] = $this->checkCommunicationStatus(isset($store[$code . '_api_key']) ? $store[$code . '_api_key'] : null); + + Util::error($store, $store['store_id'], $this->error) + ->notIsset('error_api_key', 'api_key') + ->notIsset('error_description', 'description'); } - $template = 'mollie'; - $this->renderTemplate($template, $data, array( - "header", - "column_left", - "footer", - )); + + Util::response()->view("payment/mollie", $data); } /** @@ -495,14 +479,14 @@ private function validate ($store = 0) $this->error['warning'] = $this->language->get("error_permission"); } - if (!Util::request()->post()->{$store . '_' . MollieHelper::getModuleCode() . '_api_key'}) + if (!Util::request()->post()->get($store . '_' . MollieHelper::getModuleCode() . '_api_key')) { - $this->error[$store]['api_key'] = $this->language->get("error_api_key"); + $this->error[$store]['api_key'] = $this->data["error_api_key"]; } - if (!Util::request()->post()->{$store . '_' . MollieHelper::getModuleCode() . '_ideal_description'}) + if (!Util::request()->post()->get($store . '_' . MollieHelper::getModuleCode() . '_ideal_description')) { - $this->error[$store]['description'] = $this->language->get("error_description"); + $this->error[$store]['description'] = $this->data["error_description"]; } return (count($this->error) == 0); @@ -547,86 +531,12 @@ protected function checkCommunicationStatus ($api_key = null) } } - /** - * Map template handling for different Opencart versions - * - * @param string $template - * @param array $data - * @param array $common_children - * @param bool $echo - */ - protected function renderTemplate ($template, $data, $common_children = array(), $echo = TRUE) - { - if (!MollieHelper::isOpenCart3x()) { - $template .= '.tpl'; - } - - if (MollieHelper::isOpenCart2x()) { - foreach ($common_children as $child) { - $data[$child] = $this->load->controller("common/" . $child); - } - - if (MollieHelper::isOpenCart3x()) { - $this->config->set('template_engine', 'template'); - $html = $this->load->view('payment/'.$template, $data); - } else { - $html = $this->load->view('payment/'.$template, $data); - } - - } else { - $template = 'mollie_1.tpl'; - $this->template = 'payment/'.$template; - $this->children = array(); - - foreach ($data as $field => $value) { - $this->data[$field] = $value; - } - - foreach($common_children as $child) { - if ($child === 'column_left') { - continue; - } - - $this->children[] = "common/" . $child; - } - - $html = $this->render(); - } - - if ($echo) { - return $this->response->setOutput($html); - } - - return $html; - } - - /** - * Get the extension installation handler. - * - * @return Model - */ - protected function getExtensionModel() - { - if (Util::version()->isMinimal("3")) { - $this->load->model('setting/extension'); - return $this->model_setting_extension; - } - - if (Util::version()->isMinimal("2")) { - $this->load->model('extension/extension'); - return $this->model_extension_extension; - } - - $this->load->model('setting/extension'); - return $this->model_setting_extension; - } - /** * @return string */ private function getTokenUriPart() { - if (MollieHelper::isOpenCart3x()) { + if (isset($this->session->data['user_token'])) { return 'user_token=' . $this->session->data['user_token']; } @@ -654,4 +564,108 @@ public function saveAPIKey() { $this->model_setting_setting->editSetting($code, $data, $store_id); return true; } + + private function getUpdateUrl() + { + $client = new mollieHttpClient(); + $info = $client->get(MOLLIE_VERSION_URL); + if ($info["tag_name"] && $info["tag_name"] != MOLLIE_RELEASE && version_compare(MOLLIE_RELEASE, $info["tag_name"], "<")) { + return Util::url()->link("payment/mollie_" . static::MODULE_NAME . '/update'); + } + return false; + } + + function update() + { + Util::load()->library("mollieHttpClient"); + + //get info + $client = new mollieHttpClient(); + $info = $client->get(MOLLIE_VERSION_URL); + + //save tmp file + $temp_file = MOLLIE_TMP . "/mollieUpdate.zip"; + $handle = fopen($temp_file, "w+"); + $content = $client->get($info["zipball_url"], false, false); + fwrite($handle, $content); + fclose($handle); + + + //extract to temp dir + $temp_dir = MOLLIE_TMP . "/mollieUpdate"; + if (class_exists("ZipArchive")) { + $zip = new ZipArchive; + $zip->open($temp_file); + $zip->extractTo($temp_dir); + $zip->close(); + } else { + shell_exec("unzip " . $temp_file . " -d " . $temp_dir); + } + + //find upload path + + $handle = opendir($temp_dir); + $upload_dir = $temp_dir . "/upload"; + while ($file = readdir($handle)) { + if ($file != "." && $file != ".." && is_dir($temp_dir . "/" . $file . "/upload")) { + $upload_dir = $temp_dir . "/" . $file . "/upload"; + break; + } + } + + //copy files + $handle = opendir($upload_dir); + while ($file = readdir($handle)) { + if ($file != "." && $file != "..") { + $from = $upload_dir . "/" . $file; + if ($file == "admin") { + $to = DIR_APPLICATION; + } elseif ($file == "system") { + $to = DIR_SYSTEM; + } else { + $to = DIR_CATALOG . "../" . $file . "/"; + } + $this->cpy($from, $to); + } + + } + + //cleanup + unlink($temp_file); + $this->rmDirRecursive($temp_dir); + + //go back + Util::response()->redirectBack(); + } + + public function rmDirRecursive($dir) + { + $files = array_diff(scandir($dir), array('.', '..')); + foreach ($files as $file) { + (is_dir("$dir/$file")) ? $this->rmDirRecursive("$dir/$file") : unlink("$dir/$file"); + } + return rmdir($dir); + } + + function cpy($source, $dest) + { + if (is_dir($source)) { + $dir_handle = opendir($source); + while ($file = readdir($dir_handle)) { + if ($file != "." && $file != "..") { + if (is_dir($source . "/" . $file)) { + if (!is_dir($dest . "/" . $file)) { + mkdir($dest . "/" . $file); + } + $this->cpy($source . "/" . $file, $dest . "/" . $file); + } else { + copy($source . "/" . $file, $dest . "/" . $file); + } + } + } + closedir($dir_handle); + } else { + copy($source, $dest); + } + } } diff --git a/admin/view/template/extension/payment/mollie_1.tpl b/admin/view/template/extension/payment/mollie(max_1.5.6.4).tpl similarity index 100% rename from admin/view/template/extension/payment/mollie_1.tpl rename to admin/view/template/extension/payment/mollie(max_1.5.6.4).tpl diff --git a/admin/view/template/payment/mollie_1.tpl b/admin/view/template/payment/mollie(max_1.5.6.4).tpl similarity index 97% rename from admin/view/template/payment/mollie_1.tpl rename to admin/view/template/payment/mollie(max_1.5.6.4).tpl index e196a73b..60528a56 100644 --- a/admin/view/template/payment/mollie_1.tpl +++ b/admin/view/template/payment/mollie(max_1.5.6.4).tpl @@ -224,12 +224,6 @@
-
- -
- -
-
@@ -276,6 +270,11 @@
+
+ + + +
diff --git a/admin/view/template/payment/mollie.tpl b/admin/view/template/payment/mollie.tpl index c953d33d..cfb6f6b0 100644 --- a/admin/view/template/payment/mollie.tpl +++ b/admin/view/template/payment/mollie.tpl @@ -235,12 +235,6 @@ -
- -
- -
-
@@ -291,6 +285,11 @@
+
+ + + +
diff --git a/catalog/controller/payment/mollie/base.php b/catalog/controller/payment/mollie/base.php index f1278f07..50285eca 100644 --- a/catalog/controller/payment/mollie/base.php +++ b/catalog/controller/payment/mollie/base.php @@ -49,7 +49,6 @@ use Mollie\Api\Types\PaymentStatus; require_once(dirname(DIR_SYSTEM) . "/catalog/controller/payment/mollie/helper.php"); -require_once(DIR_SYSTEM . "comercia/util.php"); use comercia\Util; @@ -139,7 +138,7 @@ public function index() $data['set_issuer_url'] = $this->url->link("payment/mollie_" . static::MODULE_NAME . "/set_issuer", "", "SSL"); // Return HTML output - it will get appended to confirm.tpl. - return $this->renderTemplate('mollie_checkout_form', $data, array(), false); + return Util::load()->view('payment/mollie_checkout_form', $data); } /** @@ -149,7 +148,7 @@ public function index() */ public function payment() { - if ($this->request->server['REQUEST_METHOD'] != "POST") { + if (Util::request()->server()->REQUEST_METHOD != 'POST') { return; } try { @@ -221,11 +220,11 @@ public function payment() 'nl_NL' ); - if (strstr($this->session->data['language'], '-')) { - list ($language, $country) = explode('-', $this->session->data['language']); + if (strstr(isset($this->session->data['language']) ? $this->session->data['language'] : $this->config->get('config_language'), '-')) { + list ($language, $country) = explode('-', isset($this->session->data['language']) ? $this->session->data['language'] : $this->config->get('config_language')); $locale = strtolower($language) . '_' . strtoupper($country); } else { - $locale = strtolower($this->session->data['language']) . '_' . strtoupper($this->session->data['language']); + $locale = strtolower(isset($this->session->data['language']) ? $this->session->data['language'] : $this->config->get('config_language')) . '_' . strtoupper(isset($this->session->data['language']) ? $this->session->data['language'] : $this->config->get('config_language')); } if (!in_array($locale, $locales)) { diff --git a/catalog/controller/payment/mollie/helper.php b/catalog/controller/payment/mollie/helper.php index f348917e..377a2899 100644 --- a/catalog/controller/payment/mollie/helper.php +++ b/catalog/controller/payment/mollie/helper.php @@ -1,4 +1,5 @@ getModuleCode('mollie', 'payment'); } /** @@ -127,7 +124,7 @@ public static function getModuleCode() */ public static function isOpenCart3x() { - return version_compare(VERSION, '3.0.0', '>='); + return Util::version()->isMinimal('3.0.0'); } /** @@ -135,7 +132,7 @@ public static function isOpenCart3x() */ public static function isOpenCart23x() { - return version_compare(VERSION, '2.3.0', '>='); + return Util::version()->isMinimal('2.3.0'); } /** @@ -143,6 +140,6 @@ public static function isOpenCart23x() */ public static function isOpenCart2x() { - return version_compare(VERSION, '2', '>='); + return Util::version()->isMinimal('2'); } } diff --git a/catalog/model/payment/mollie/base.php b/catalog/model/payment/mollie/base.php index 4768664d..c19c8238 100644 --- a/catalog/model/payment/mollie/base.php +++ b/catalog/model/payment/mollie/base.php @@ -76,23 +76,6 @@ public function getMethod($address, $total) return NULL; } - //Get payment methods allowed for this amount and currency - $allowed_methods = array(); - $currency = $this->session->data['currency']; - $data = array( - "amount" => ["value" => (string)number_format((float)$total, 2, '.', ''), "currency" => $currency,] - ); - $payment_methods = $this->getAPIClient()->methods->all($data); - - foreach ($payment_methods as $allowed_method) - { - $allowed_methods[] = $allowed_method->id; - } - - if(!in_array($payment_method->id, $allowed_methods)) { - return NULL; - } - $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get($moduleCode . "_" . static::MODULE_NAME . "_geo_zone") . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')"); if ((bool)$this->config->get($moduleCode . "_" . static::MODULE_NAME . "_geo_zone") && !$query->num_rows) { @@ -115,13 +98,6 @@ public function getMethod($address, $total) $icon = ''; } - if (static::MODULE_NAME == 'creditcard'){ - $amount_limit = $this->config->get($moduleCode .'_creditcard_max_amount'); - if(($amount_limit != NULL) && ($total > $amount_limit)) { - return; - } - } - return array( "code" => "mollie_" . static::MODULE_NAME, "title" => $icon . $payment_method->description, diff --git a/system/comercia/arrayHelper.php b/system/comercia/arrayHelper.php index 8c08130d..d013ef5b 100644 --- a/system/comercia/arrayHelper.php +++ b/system/comercia/arrayHelper.php @@ -43,6 +43,14 @@ function allPrefixed($input,$prefix, $removePrefix = true) } return $result; } + + function prefixAllValues($prefix, $input) { + $result = []; + foreach ($input as $val) { + $result[] = $prefix . $val; + } + return $result; + } } ?> \ No newline at end of file diff --git a/system/comercia/arrayObject.php b/system/comercia/arrayObject.php index 613036bb..5355df7e 100644 --- a/system/comercia/arrayObject.php +++ b/system/comercia/arrayObject.php @@ -15,6 +15,11 @@ function __get($name) return @$this->data[$name] ?: ""; } + function get($name) + { + return @$this->data[$name] ?: ""; + } + function __set($name, $value) { $this->data[$name] = $value; diff --git a/system/comercia/error.php b/system/comercia/error.php new file mode 100644 index 00000000..76fac611 --- /dev/null +++ b/system/comercia/error.php @@ -0,0 +1,30 @@ +data =& $data; + $this->store_id = $store_id; + $this->error = $error; + } + + function notIsset($error_key, $value) { + + $error = $this->error; + if (!isset($this->data[$error_key]) && isset($error[$this->store_id][$value])) { + $this->data[$error_key] = $error[$this->store_id][$value]; + } + else { + $this->data[$error_key] = ''; + } + return $this; + } +} + +?> \ No newline at end of file diff --git a/system/comercia/info.php b/system/comercia/info.php index 5fc5f70f..8c20e031 100644 --- a/system/comercia/info.php +++ b/system/comercia/info.php @@ -37,6 +37,13 @@ function stores() } return $stores; } + + function getModuleCode($name, $type) { + if(Util::version()->isMinimal("3")) { + return $type . '_' . $name; + } + return $name; + } } ?> \ No newline at end of file diff --git a/system/comercia/request.php b/system/comercia/request.php index 7736c255..4f89b600 100644 --- a/system/comercia/request.php +++ b/system/comercia/request.php @@ -30,9 +30,10 @@ function server() { static $server = false; if (!$server) { - $server = new ArrayObject(array_merge(Util::registry("load")->get("request")->server,[ - "protocol"=>(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://" - ])); + $getServer = Util::registry("load")->get("request")->server; + $protocol = array("protocol"=>(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"); + $mergeArrays = array_merge($getServer, $getServer); + $server = new ArrayObject($mergeArrays); } return $server; } diff --git a/system/comercia/route.php b/system/comercia/route.php index e54a0747..98daf1be 100644 --- a/system/comercia/route.php +++ b/system/comercia/route.php @@ -2,14 +2,14 @@ namespace comercia; class Route { - function extension($extensionName = false) + function extension($extensionName = false, $type = 'module') { if ($extensionName) { if(Util::version()->isMinimal("2.3")) { - return 'extension/module/'.$extensionName; + return 'extension/'.$type.'/'.$extensionName; } - return 'extension/module/'.$extensionName; + return $type.'/'.$extensionName; } if (Util::version()->isMinimal("3.0")) { @@ -17,7 +17,7 @@ function extension($extensionName = false) } elseif (Util::version()->isMinimal("2.3")) { return 'extension/extension'; } - return 'extension/module'; + return 'extension/'.$type; } } diff --git a/system/comercia/stringHelper.php b/system/comercia/stringHelper.php index 24c63680..027fa9d7 100644 --- a/system/comercia/stringHelper.php +++ b/system/comercia/stringHelper.php @@ -14,7 +14,7 @@ function ccToUnderline($subject){ function rewriteForVersion($string,$words){ foreach($words as $word){ $match=false; - $versionMatch=@$word[0]?:array_values($word)[0]; + $versionMatch=@isset($word[0])?:array_values($word)[0]; foreach ($word as $version=>$newWord){ if(strpos($string, $newWord) !== false){ $match=$newWord; diff --git a/system/comercia/util.php b/system/comercia/util.php index 25900bcd..8f27f0ee 100644 --- a/system/comercia/util.php +++ b/system/comercia/util.php @@ -131,7 +131,7 @@ static function route() static function config($store_id = 0) { static $config = array(); - if (!@$config[$store_id]) { + if (!@isset($config[$store_id])) { require_once(__DIR__ . "/config.php"); $config[$store_id] = new Config($store_id); } @@ -165,7 +165,7 @@ static function request() static function language($language=false) { static $languages = []; - if (!@$languages[$language]) { + if (!@isset($languages[$language])) { require_once(__DIR__ . "/language.php"); $languages[$language] = new Language($language); } @@ -249,6 +249,12 @@ public static function twig() } return $twig; } + + static function error(&$data = array(), $store_id = -1, $error = array()) + { + require_once(__DIR__ . "/error.php"); + return new Error($data, $store_id, $error); + } } ?> diff --git a/system/library/mollieHttpClient.php b/system/library/mollieHttpClient.php new file mode 100644 index 00000000..40abf4f2 --- /dev/null +++ b/system/library/mollieHttpClient.php @@ -0,0 +1,74 @@ + + */ +class mollieHttpClient +{ + + /** + * Send a post request + * @param string $url The url to send the request to + * @param array $data The data to send to the server + * @param string $token The session token + */ + function post($url, $data, $token = false, $parse = true) + { + $ch = curl_init(); + + $encoded=json_encode($data); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + $headers = [ + 'Content-Type:application/json' + ]; + if ($token) { + $headers[] = "token:" . $token; + } + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + + $server_output = curl_exec($ch); + curl_close($ch); + + if($parse) { + return json_decode($server_output, true); + }else{ + return $server_output; + } + } + + /** + * Send a get request + * @param string $url The url to send the request to + * @param string $token The session token + */ + function get($url, $token = false,$parse=true) + { + global $is_in_debug; + $ch = curl_init(); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0"); + + if ($token) { + curl_setopt($ch, CURLOPT_HTTPHEADER, ["token:" . $token]); + }; + curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); + + $server_output = curl_exec($ch); + curl_close($ch); + if($parse) { + return json_decode($server_output, true); + }else{ + return $server_output; + } + } + + +} +?> \ No newline at end of file diff --git a/vqmod/xml/mollie.xml b/vqmod/xml/mollie.xml new file mode 100644 index 00000000..415746af --- /dev/null +++ b/vqmod/xml/mollie.xml @@ -0,0 +1,21 @@ + + Mollie + 2.2.1 + 2.3.0 + Comercia - Pradeep Mishra + + + + + + + + + + + + + + From bc15be889eacd6b9b758ae623e1ac6a4d6879f1e Mon Sep 17 00:00:00 2001 From: Pradeep Date: Mon, 8 Oct 2018 15:02:51 +0530 Subject: [PATCH 10/35] Updated --- admin/controller/payment/mollie/base.php | 5 +---- .../template/payment/mollie(max_1.5.6.4).tpl | 14 +++++++++----- admin/view/template/payment/mollie.tpl | 16 ++++++++++------ system/comercia/info.php | 10 ++++++++-- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/admin/controller/payment/mollie/base.php b/admin/controller/payment/mollie/base.php index a9007430..63b8057e 100644 --- a/admin/controller/payment/mollie/base.php +++ b/admin/controller/payment/mollie/base.php @@ -296,8 +296,6 @@ public function index () $data['geo_zones'] = $modelGeoZone->getGeoZones(); $data['order_statuses'] = $modelOrderStatus->getOrderStatuses(); - $shops = $data['shops']; - // Form action url $data['action'] = Util::url()->link("payment/mollie_" . static::MODULE_NAME); $data['cancel'] = Util::url()->link( Util::route()->extension(false, 'payment'), "type=payment"); @@ -315,7 +313,7 @@ public function index () $code . "_ideal_expired_status_id" => 14, ); - foreach($shops as &$store) + foreach($data['shops'] as &$store) { $this->data = $store; foreach ($settings as $setting_name => $default_value) @@ -412,7 +410,6 @@ public function index () ->notIsset('error_description', 'description'); } - Util::response()->view("payment/mollie", $data); } diff --git a/admin/view/template/payment/mollie(max_1.5.6.4).tpl b/admin/view/template/payment/mollie(max_1.5.6.4).tpl index 60528a56..fcc0ee9c 100644 --- a/admin/view/template/payment/mollie(max_1.5.6.4).tpl +++ b/admin/view/template/payment/mollie(max_1.5.6.4).tpl @@ -180,7 +180,7 @@
- + -data-payment-mollie-api-key/>
@@ -297,7 +297,7 @@ return xhr; } - function validateAPIKey(value, $icon_container) { + function validateAPIKey(value, $icon_container, store_id) { if (value === '') { updateIcon($icon_container, 'empty', null, true); return; @@ -310,7 +310,7 @@ checkIfAPIKeyIsValid(value).then(function (response) { if (response.valid) { updateIcon($icon_container, 'success'); - saveAPIKey(value, $('#mollie_api_key').attr('store')); + saveAPIKey(value, store_id); } else if (response.invalid) { updateIcon($icon_container, 'attention', response.message); } else if (response.error) { @@ -349,9 +349,13 @@ $('[data-communication-status]').html('' + (message || 'OK') + ''); } - $('[data-payment-mollie-api-key]').on('keyup', function () { - validateAPIKey(this.value, $(this).closest('.input-group')); + + + $('[-data-payment-mollie-api-key]').on('keyup', function () { + validateAPIKey(this.value, $(this).siblings('.input-group-addon'), $(this).attr('store')); }); + + })(); diff --git a/admin/view/template/payment/mollie.tpl b/admin/view/template/payment/mollie.tpl index cfb6f6b0..04c2ca76 100644 --- a/admin/view/template/payment/mollie.tpl +++ b/admin/view/template/payment/mollie.tpl @@ -191,7 +191,7 @@
' : '' ;?> - + -data-payment-mollie-api-key/>
@@ -308,7 +308,7 @@ return xhr; } - function validateAPIKey(value, $icon_container) { + function validateAPIKey(value, $icon_container, store_id) { if (value === '') { updateIcon($icon_container, 'fa-minus', null, true); return; @@ -321,7 +321,7 @@ checkIfAPIKeyIsValid(value).then(function (response) { if (response.valid) { updateIcon($icon_container, 'fa-check'); - saveAPIKey(value, $('#mollie_api_key').attr('store')); + saveAPIKey(value, store_id); } else if (response.invalid) { updateIcon($icon_container, 'fa-times', response.message); } else if (response.error) { @@ -388,8 +388,12 @@ $container.closest('.tab-content').find('[data-communication-status]').html('' + (message || 'OK') + ''); } - $('[data-payment-mollie-api-key]').on('keyup', function () { - validateAPIKey(this.value, $(this).siblings('.input-group-addon')); - }); + + + $('[-data-payment-mollie-api-key]').on('keyup', function () { + validateAPIKey(this.value, $(this).siblings('.input-group-addon'), $(this).attr('store')); + }); + + })(); diff --git a/system/comercia/info.php b/system/comercia/info.php index 8c20e031..be3c1b2c 100644 --- a/system/comercia/info.php +++ b/system/comercia/info.php @@ -35,12 +35,18 @@ function stores() }); $stores = array_values($stores); } - return $stores; + + //Make store id as key + $storeIDKeyArray = []; + foreach($stores as $store) { + $storeIDKeyArray[$store['store_id']] = $store; + } + return $storeIDKeyArray; } function getModuleCode($name, $type) { if(Util::version()->isMinimal("3")) { - return $type . '_' . $name; + return $type . _ . $name; } return $name; } From 5c1f85099f10c3685b7883be429327ddf99d080a Mon Sep 17 00:00:00 2001 From: Pradeep Date: Mon, 8 Oct 2018 15:09:09 +0530 Subject: [PATCH 11/35] Updated --- system/comercia/info.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/comercia/info.php b/system/comercia/info.php index be3c1b2c..11d61efd 100644 --- a/system/comercia/info.php +++ b/system/comercia/info.php @@ -46,7 +46,7 @@ function stores() function getModuleCode($name, $type) { if(Util::version()->isMinimal("3")) { - return $type . _ . $name; + return $type . '_' . $name; } return $name; } From e59b0a61b9b075a87bccde602b0c6a7596cf95b1 Mon Sep 17 00:00:00 2001 From: Pradeep Date: Thu, 11 Oct 2018 12:57:33 +0530 Subject: [PATCH 12/35] Some updates --- admin/controller/payment/mollie/base.php | 4 ++-- admin/language/de-de/payment/mollie.php | 3 --- admin/language/dutch/payment/mollie.php | 3 --- admin/language/en-gb/payment/mollie.php | 3 --- admin/language/english/payment/mollie.php | 3 --- admin/language/es-es/payment/mollie.php | 3 --- admin/language/fr-fr/payment/mollie.php | 3 --- admin/language/french/payment/mollie.php | 3 --- admin/language/german/payment/mollie.php | 3 --- admin/language/nl-nl/payment/mollie.php | 3 --- admin/language/spanish/payment/mollie.php | 3 --- system/comercia/util.php | 6 +++--- system/comercia/{error.php => validation.php} | 2 +- 13 files changed, 6 insertions(+), 36 deletions(-) rename system/comercia/{error.php => validation.php} (97%) diff --git a/admin/controller/payment/mollie/base.php b/admin/controller/payment/mollie/base.php index 63b8057e..9642ed2b 100644 --- a/admin/controller/payment/mollie/base.php +++ b/admin/controller/payment/mollie/base.php @@ -199,7 +199,7 @@ public function index () // Double-check if clean-up has been done - For upgrades $adminThemeDir = DIR_APPLICATION . 'view/template/extension/payment/'; if (MollieHelper::isOpenCart3x() || MollieHelper::isOpenCart2x()) { - if(file_exists($adminThemeDir . 'mollie_1.tpl')) { + if(file_exists($adminThemeDir . 'mollie(max_1.5.6.4).tpl')) { $this->cleanUp(); } } else { @@ -405,7 +405,7 @@ public function index () $data['shops'][$store['store_id']]['entry_cstatus'] = $this->checkCommunicationStatus(isset($store[$code . '_api_key']) ? $store[$code . '_api_key'] : null); - Util::error($store, $store['store_id'], $this->error) + Util::validation($store, $store['store_id'], $this->error) ->notIsset('error_api_key', 'api_key') ->notIsset('error_description', 'description'); diff --git a/admin/language/de-de/payment/mollie.php b/admin/language/de-de/payment/mollie.php index 1b64f05b..5a9c32e7 100644 --- a/admin/language/de-de/payment/mollie.php +++ b/admin/language/de-de/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Icons anzeigen"; $_['entry_show_order_canceled_page'] = "Meldung bei annullierten Bezahlungen anzeigen"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Höchstbetrag für Kreditkarte"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Sie können Ihren API Key auf Ihren Mollie-Webseiten-Profilen finden.'; @@ -100,7 +98,6 @@ $_['help_description'] = "Die Beschreibung soll auf der Banküberweisung Ihres Kunden erscheinen und Sie können sie in der Mollie Verwaltung sehen. Sie können maximal 29 Zeichen verwenden. TIPP: Verwenden Sie %, dies wird durch die Auftragsnummer ersetzt werden. Die Auftragsnummer selbst kann auch mehrere Zeichen lang sein!"; $_['help_show_icons'] = "Icons neben den Zahlungsarten von Mollie auf der Zahlungsseite anzeigen."; $_['help_show_order_canceled_page'] = "Eine Meldung für den Kunden anzeigen, wenn eine Zahlung annulliert wurde, bevor der Kunde zurück zum Warenkorb verwiesen wird."; -$_['help_creditcard_max_amount'] = 'Geben Sie den Betrag ein, den Sie in Ihrem mollie-Konto für die Kreditkarte festgelegt haben.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/dutch/payment/mollie.php b/admin/language/dutch/payment/mollie.php index 093845c0..8dc2c8ac 100644 --- a/admin/language/dutch/payment/mollie.php +++ b/admin/language/dutch/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Toon icoontjes"; $_['entry_show_order_canceled_page'] = "Toon melding bij geannuleerde betalingen"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Maximumbedrag voor creditcard"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'U kunt uw API-sleutel vinden bij uw Mollie-websiteprofielen.'; @@ -100,7 +98,6 @@ $_['help_description'] = "De omschrijving zal op het bankafschrift van uw klant verschijnen en kunt u terugvinden in het Mollie beheer. U kunt maximaal 29 tekens gebruiken. TIP: Gebruik %, dit zal vervangen worden door het ordernummer. Het ordernummer kan zelf ook meerdere tekens lang zijn!"; $_['help_show_icons'] = "Toon icoontjes naast de betaalmethodes van Mollie op de betaalpagina."; $_['help_show_order_canceled_page'] = "Toon een melding aan de klant als een betaling geannuleerd wordt, alvorens de klant terug naar het winkelmandje te verwijzen."; -$_['help_creditcard_max_amount'] = 'Voer het bedrag in dat u hebt ingesteld voor uw creditcard in uw mollie-account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/en-gb/payment/mollie.php b/admin/language/en-gb/payment/mollie.php index c481a359..5525909c 100644 --- a/admin/language/en-gb/payment/mollie.php +++ b/admin/language/en-gb/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Show icons"; $_['entry_show_order_canceled_page'] = "Show message if payment is cancelled"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Maximum amount for credit card"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'You can find your API key in your Mollie website profiles.'; @@ -100,7 +98,6 @@ $_['help_description'] = 'This description will appear on the bank / card statement of your customer. You may use a maximum of 29 characters. TIP: Use %, this will be replaced by the order id of the payment. Don\'t forget % can be multiple characters long!'; $_['help_show_icons'] = 'Show icons next to the Mollie payment methods on the checkout page.'; $_['help_show_order_canceled_page'] = 'Show a message to the customer if a payment is cancelled, before redirecting the customer back to their shopping cart.'; -$_['help_creditcard_max_amount'] = 'Enter the amount you have set for credit card in your mollie account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/english/payment/mollie.php b/admin/language/english/payment/mollie.php index e7f02ba8..8b3e0ea9 100644 --- a/admin/language/english/payment/mollie.php +++ b/admin/language/english/payment/mollie.php @@ -88,8 +88,6 @@ $_['entry_show_icons'] = "Show icons"; $_['entry_show_order_canceled_page'] = "Show message if payment is cancelled"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Maximum amount for credit card"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'You can find your API key in your Mollie website profiles.'; @@ -98,7 +96,6 @@ $_['help_description'] = 'This description will appear on the bank / card statement of your customer. You may use a maximum of 29 characters. TIP: Use %, this will be replaced by the order id of the payment. Don\'t forget % can be multiple characters long!'; $_['help_show_icons'] = 'Show icons next to the Mollie payment methods on the checkout page.'; $_['help_show_order_canceled_page'] = 'Show a message to the customer if a payment is cancelled, before redirecting the customer back to their shopping cart.'; -$_['help_creditcard_max_amount'] = 'Enter the amount you have set for credit card in your mollie account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/es-es/payment/mollie.php b/admin/language/es-es/payment/mollie.php index 345ddf52..e943f930 100644 --- a/admin/language/es-es/payment/mollie.php +++ b/admin/language/es-es/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Mostrar iconos"; $_['entry_show_order_canceled_page'] = "Mostrar notificación en caso de cancelación de pagos"; $_['entry_geo_zone'] = "Zona Geo"; -$_['entry_creditcard_max_amount'] = "Monto máximo por tarjeta de crédito"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help @@ -102,7 +100,6 @@ $_['help_description'] = "La descripción aparecerá en el estado de cuenta de su cliente y se puede encontrar en la administración de Mollie. Puede utilizar hasta 29 caracteres. CONSEJO: Use%, que será reemplazado por el número de pedido. ¡El número de pedido puede tener algunos caracteres más!"; $_['help_show_icons'] = "Mostrar iconos junto a los métodos de pago de Mollie en la página de pago."; $_['help_show_order_canceled_page'] = "Mostrar una notificación al cliente si un pago es cancelado, antes de redirigir al cliente de nuevo a la cesta de la compra."; -$_['help_creditcard_max_amount'] = 'Ingrese el monto que ha configurado para la tarjeta de crédito en su cuenta de Mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/fr-fr/payment/mollie.php b/admin/language/fr-fr/payment/mollie.php index fb6841e7..f1fa20b3 100644 --- a/admin/language/fr-fr/payment/mollie.php +++ b/admin/language/fr-fr/payment/mollie.php @@ -89,8 +89,6 @@ $_['entry_description'] = "Description"; $_['entry_show_icons'] = "Afficher des icônes"; $_['entry_show_order_canceled_page'] = "Afficher un message si le paiement est annulé"; -$_['entry_creditcard_max_amount'] = "Montant maximum pour carte de crédit"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Vous pouvez trouver votre clé API dans vos profils de site à Mollie.'; @@ -99,7 +97,6 @@ $_['help_description'] = 'Cette description apparaîtra sur le relevé bancaire de votre client. Vous pouvez utiliser un maximum de 29 caractères. ASTUCE: Utilisez le %, il sera remplacé par l\'id de la commande du paiement. N\'oubliez pas que %/code> peut devenir plusieurs caractères!'; $_['help_show_icons'] = 'Afficher les icônes à côté des méthodes de paiement Mollie sur la page de paiement.'; $_['help_show_order_canceled_page'] = 'Afficher un message au client si un paiement est annulé, avant de rediriger le client vers leur panier.'; -$_['help_creditcard_max_amount'] = 'Entrez le montant que vous avez défini pour la carte de crédit dans votre compte mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/french/payment/mollie.php b/admin/language/french/payment/mollie.php index fb6841e7..f1fa20b3 100644 --- a/admin/language/french/payment/mollie.php +++ b/admin/language/french/payment/mollie.php @@ -89,8 +89,6 @@ $_['entry_description'] = "Description"; $_['entry_show_icons'] = "Afficher des icônes"; $_['entry_show_order_canceled_page'] = "Afficher un message si le paiement est annulé"; -$_['entry_creditcard_max_amount'] = "Montant maximum pour carte de crédit"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Vous pouvez trouver votre clé API dans vos profils de site à Mollie.'; @@ -99,7 +97,6 @@ $_['help_description'] = 'Cette description apparaîtra sur le relevé bancaire de votre client. Vous pouvez utiliser un maximum de 29 caractères. ASTUCE: Utilisez le %, il sera remplacé par l\'id de la commande du paiement. N\'oubliez pas que %/code> peut devenir plusieurs caractères!'; $_['help_show_icons'] = 'Afficher les icônes à côté des méthodes de paiement Mollie sur la page de paiement.'; $_['help_show_order_canceled_page'] = 'Afficher un message au client si un paiement est annulé, avant de rediriger le client vers leur panier.'; -$_['help_creditcard_max_amount'] = 'Entrez le montant que vous avez défini pour la carte de crédit dans votre compte mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/german/payment/mollie.php b/admin/language/german/payment/mollie.php index 31eddd6d..ebdc40c3 100644 --- a/admin/language/german/payment/mollie.php +++ b/admin/language/german/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Icons anzeigen"; $_['entry_show_order_canceled_page'] = "Meldung bei annullierten Bezahlungen anzeigen"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Höchstbetrag für Kreditkarte"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Sie können Ihren API Key auf Ihren Mollie-Webseiten-Profilen finden.'; @@ -100,7 +98,6 @@ $_['help_description'] = "Die Beschreibung soll auf der Banküberweisung Ihres Kunden erscheinen und Sie können sie in der Mollie Verwaltung sehen. Sie können maximal 29 Zeichen verwenden. TIPP: Verwenden Sie %, dies wird durch die Auftragsnummer ersetzt werden. Die Auftragsnummer selbst kann auch mehrere Zeichen lang sein!"; $_['help_show_icons'] = "Icons neben den Zahlungsarten von Mollie auf der Zahlungsseite anzeigen."; $_['help_show_order_canceled_page'] = "Eine Meldung für den Kunden anzeigen, wenn eine Zahlung annulliert wurde, bevor der Kunde zurück zum Warenkorb verwiesen wird."; -$_['help_creditcard_max_amount'] = 'Geben Sie den Betrag ein, den Sie in Ihrem mollie-Konto für die Kreditkarte festgelegt haben.'; // Info diff --git a/admin/language/nl-nl/payment/mollie.php b/admin/language/nl-nl/payment/mollie.php index 0775aa99..7583be08 100644 --- a/admin/language/nl-nl/payment/mollie.php +++ b/admin/language/nl-nl/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Toon icoontjes"; $_['entry_show_order_canceled_page'] = "Toon melding bij geannuleerde betalingen"; $_['entry_geo_zone'] = "Geo Zone"; -$_['entry_creditcard_max_amount'] = "Maximumbedrag voor creditcard"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'U kunt uw API-sleutel vinden bij uw Mollie-websiteprofielen.'; @@ -100,7 +98,6 @@ $_['help_description'] = "De omschrijving zal op het bankafschrift van uw klant verschijnen en kunt u terugvinden in het Mollie beheer. U kunt maximaal 29 tekens gebruiken. TIP: Gebruik %, dit zal vervangen worden door het ordernummer. Het ordernummer kan zelf ook meerdere tekens lang zijn!"; $_['help_show_icons'] = "Toon icoontjes naast de betaalmethodes van Mollie op de betaalpagina."; $_['help_show_order_canceled_page'] = "Toon een melding aan de klant als een betaling geannuleerd wordt, alvorens de klant terug naar het winkelmandje te verwijzen."; -$_['help_creditcard_max_amount'] = 'Voer het bedrag in dat u hebt ingesteld voor uw creditcard in uw mollie-account.'; // Info $_['entry_module'] = "Module"; diff --git a/admin/language/spanish/payment/mollie.php b/admin/language/spanish/payment/mollie.php index d669c41b..4640a5ba 100644 --- a/admin/language/spanish/payment/mollie.php +++ b/admin/language/spanish/payment/mollie.php @@ -90,8 +90,6 @@ $_['entry_show_icons'] = "Mostrar iconos"; $_['entry_show_order_canceled_page'] = "Mostrar notificación en caso de cancelación de pagos"; $_['entry_geo_zone'] = "Zona Geo"; -$_['entry_creditcard_max_amount'] = "Monto máximo por tarjeta de crédito"; -$_['eg_creditcard_max_amount'] = "eg.500"; // Help $_['help_view_profile'] = 'Puede encontrar su clave API en sus @@ -101,7 +99,6 @@ $_['help_description'] = "La descripción aparecerá en el estado de cuenta de su cliente y se puede encontrar en la administración de Mollie. Puede utilizar hasta 29 caracteres. CONSEJO: Use%, que será reemplazado por el número de pedido. ¡El número de pedido puede tener algunos caracteres más!"; $_['help_show_icons'] = "Mostrar iconos junto a los métodos de pago de Mollie en la página de pago."; $_['help_show_order_canceled_page'] = "Mostrar una notificación al cliente si un pago es cancelado, antes de redirigir al cliente de nuevo a la cesta de la compra."; -$_['help_creditcard_max_amount'] = 'Ingrese el monto que ha configurado para la tarjeta de crédito en su cuenta de Mollie.'; // Info $_['entry_module'] = "Module"; diff --git a/system/comercia/util.php b/system/comercia/util.php index 8f27f0ee..b17bcf2f 100644 --- a/system/comercia/util.php +++ b/system/comercia/util.php @@ -250,10 +250,10 @@ public static function twig() return $twig; } - static function error(&$data = array(), $store_id = -1, $error = array()) + static function validation(&$data = array(), $store_id = -1, $error = array()) { - require_once(__DIR__ . "/error.php"); - return new Error($data, $store_id, $error); + require_once(__DIR__ . "/validation.php"); + return new Validation($data, $store_id, $error); } } diff --git a/system/comercia/error.php b/system/comercia/validation.php similarity index 97% rename from system/comercia/error.php rename to system/comercia/validation.php index 76fac611..04d0646c 100644 --- a/system/comercia/error.php +++ b/system/comercia/validation.php @@ -1,6 +1,6 @@ Date: Tue, 16 Oct 2018 17:00:36 +0530 Subject: [PATCH 13/35] COMDEVNL-1333 -- Klarna Implemented --- .../payment/mollie_klarnapaylater.php | 4 + .../payment/mollie_klarnasliceit.php | 4 + admin/controller/payment/mollie/base.php | 69 ++-- .../payment/mollie_klarnapaylater.php | 7 + .../payment/mollie_klarnasliceit.php | 7 + .../payment/mollie_klarnapaylater.php | 2 + .../payment/mollie_klarnasliceit.php | 2 + admin/language/de-de/payment/mollie.php | 9 + .../de-de/payment/mollie_klarnapaylater.php | 4 + .../de-de/payment/mollie_klarnasliceit.php | 4 + .../payment/mollie_klarnapaylater.php | 2 + .../payment/mollie_klarnasliceit.php | 2 + admin/language/dutch/payment/mollie.php | 9 + .../dutch/payment/mollie_klarnapaylater.php | 4 + .../dutch/payment/mollie_klarnasliceit.php | 4 + .../payment/mollie_klarnapaylater.php | 2 + .../payment/mollie_klarnasliceit.php | 2 + admin/language/en-gb/payment/mollie.php | 9 + .../en-gb/payment/mollie_klarnapaylater.php | 4 + .../en-gb/payment/mollie_klarnasliceit.php | 4 + .../payment/mollie_klarnapaylater.php | 2 + .../payment/mollie_klarnasliceit.php | 2 + admin/language/english/payment/mollie.php | 9 + .../english/payment/mollie_klarnapaylater.php | 4 + .../english/payment/mollie_klarnasliceit.php | 4 + .../payment/mollie_klarnapaylater.php | 2 + .../payment/mollie_klarnasliceit.php | 2 + admin/language/es-es/payment/mollie.php | 9 + .../es-es/payment/mollie_klarnapaylater.php | 4 + .../es-es/payment/mollie_klarnasliceit.php | 4 + .../payment/mollie_klarnapaylater.php | 2 + .../payment/mollie_klarnasliceit.php | 2 + admin/language/fr-fr/payment/mollie.php | 9 + .../fr-fr/payment/mollie_klarnapaylater.php | 4 + .../fr-fr/payment/mollie_klarnasliceit.php | 4 + .../payment/mollie_klarnapaylater.php | 2 + .../payment/mollie_klarnasliceit.php | 2 + admin/language/french/payment/mollie.php | 9 + .../french/payment/mollie_klarnapaylater.php | 4 + .../french/payment/mollie_klarnasliceit.php | 4 + .../payment/mollie_klarnapaylater.php | 2 + .../payment/mollie_klarnasliceit.php | 2 + admin/language/german/payment/mollie.php | 9 + .../german/payment/mollie_klarnapaylater.php | 4 + .../german/payment/mollie_klarnasliceit.php | 4 + .../payment/mollie_klarnapaylater.php | 2 + .../payment/mollie_klarnasliceit.php | 2 + admin/language/nl-nl/payment/mollie.php | 9 + .../nl-nl/payment/mollie_klarnapaylater.php | 4 + .../nl-nl/payment/mollie_klarnasliceit.php | 4 + .../payment/mollie_klarnapaylater.php | 2 + .../payment/mollie_klarnasliceit.php | 2 + admin/language/spanish/payment/mollie.php | 9 + .../spanish/payment/mollie_klarnapaylater.php | 4 + .../spanish/payment/mollie_klarnasliceit.php | 4 + .../template/payment/mollie(max_1.5.6.4).tpl | 53 +++ admin/view/template/payment/mollie.tpl | 53 +++ .../payment/mollie_klarnapaylater.php | 5 + .../payment/mollie_klarnasliceit.php | 5 + .../src/Endpoints/CustomerEndpoint.php | 9 +- .../Endpoints/CustomerPaymentsEndpoint.php | 4 +- .../src/Endpoints/EndpointAbstract.php | 20 +- .../src/Endpoints/InvoiceEndpoint.php | 4 +- .../src/Endpoints/MandateEndpoint.php | 10 +- .../src/Endpoints/MethodEndpoint.php | 2 +- .../src/Endpoints/OrderEndpoint.php | 101 +++++ .../src/Endpoints/OrderLineEndpoint.php | 61 +++ .../src/Endpoints/OrderRefundEndpoint.php | 47 +++ .../src/Endpoints/OrganizationEndpoint.php | 73 ++++ .../src/Endpoints/PaymentCaptureEndpoint.php | 43 +++ .../Endpoints/PaymentChargebackEndpoint.php | 44 +++ .../src/Endpoints/PaymentEndpoint.php | 18 +- .../src/Endpoints/PaymentRefundEndpoint.php | 4 +- .../src/Endpoints/PermissionEndpoint.php | 60 +++ .../src/Endpoints/ProfileEndpoint.php | 9 +- .../src/Endpoints/RefundEndpoint.php | 4 +- .../src/Endpoints/SettlementsEndpoint.php | 4 +- .../src/Endpoints/ShipmentEndpoint.php | 79 ++++ .../src/Endpoints/SubscriptionEndpoint.php | 10 +- .../mollie-api-client/src/MollieApiClient.php | 98 ++++- .../src/Resources/BaseCollection.php | 2 +- .../src/Resources/Capture.php | 61 +++ .../src/Resources/CaptureCollection.php | 21 + .../src/Resources/Customer.php | 4 +- .../src/Resources/Mandate.php | 10 +- .../mollie-api-client/src/Resources/Order.php | 358 ++++++++++++++++++ .../src/Resources/OrderCollection.php | 21 + .../src/Resources/OrderLine.php | 245 ++++++++++++ .../src/Resources/OrderLineCollection.php | 30 ++ .../src/Resources/Organization.php | 43 +++ .../src/Resources/OrganizationCollection.php | 21 + .../src/Resources/Payment.php | 95 ++++- .../src/Resources/Permission.php | 28 ++ .../src/Resources/PermissionCollection.php | 14 + .../src/Resources/Refund.php | 24 +- .../src/Resources/Settlement.php | 6 + .../src/Resources/Shipment.php | 115 ++++++ .../src/Resources/ShipmentCollection.php | 14 + .../src/Resources/Subscription.php | 12 +- .../src/Types/OrderLineStatus.php | 35 ++ .../src/Types/OrderLineType.php | 14 + .../src/Types/OrderStatus.php | 39 ++ .../src/Types/PaymentMethod.php | 8 + .../src/Types/PaymentStatus.php | 9 + .../mollie-api-client/vendor/autoload.php | 15 +- .../vendor/composer-autoload.php | 2 +- .../vendor/composer/autoload_classmap.php | 232 +++++++----- .../vendor/composer/autoload_psr4.php | 12 +- .../vendor/composer/autoload_real.php | 14 +- .../vendor/composer/autoload_static.php | 264 +++++++------ .../vendor/composer/ca-bundle/composer.json | 4 +- .../composer/ca-bundle/src/CaBundle.php | 14 +- .../vendor/composer/installed.json | 10 +- .../vendor/guzzlehttp/guzzle/composer.json | 4 +- .../vendor/guzzlehttp/guzzle/src/Client.php | 68 ++-- .../guzzlehttp/guzzle/src/ClientInterface.php | 16 +- .../guzzle/src/Cookie/CookieJar.php | 38 +- .../guzzle/src/Cookie/CookieJarInterface.php | 12 +- .../guzzle/src/Cookie/FileCookieJar.php | 12 +- .../guzzle/src/Cookie/SessionCookieJar.php | 8 +- .../guzzle/src/Cookie/SetCookie.php | 4 +- .../src/Exception/BadResponseException.php | 10 +- .../guzzle/src/Exception/ClientException.php | 4 +- .../guzzle/src/Exception/ConnectException.php | 8 +- .../guzzle/src/Exception/GuzzleException.php | 2 +- .../guzzle/src/Exception/RequestException.php | 28 +- .../guzzle/src/Exception/SeekException.php | 8 +- .../guzzle/src/Exception/ServerException.php | 4 +- .../Exception/TooManyRedirectsException.php | 4 +- .../src/Exception/TransferException.php | 4 +- .../guzzle/src/Handler/CurlFactory.php | 66 ++-- .../src/Handler/CurlFactoryInterface.php | 8 +- .../guzzle/src/Handler/CurlHandler.php | 12 +- .../guzzle/src/Handler/CurlMultiHandler.php | 22 +- .../guzzle/src/Handler/EasyHandle.php | 16 +- .../guzzle/src/Handler/MockHandler.php | 36 +- .../guzzlehttp/guzzle/src/Handler/Proxy.php | 12 +- .../guzzle/src/Handler/StreamHandler.php | 86 ++--- .../guzzlehttp/guzzle/src/HandlerStack.php | 14 +- .../guzzle/src/MessageFormatter.php | 16 +- .../guzzlehttp/guzzle/src/Middleware.php | 38 +- .../vendor/guzzlehttp/guzzle/src/Pool.php | 20 +- .../guzzle/src/PrepareBodyMiddleware.php | 16 +- .../guzzle/src/RedirectMiddleware.php | 42 +- .../guzzlehttp/guzzle/src/RequestOptions.php | 2 +- .../guzzlehttp/guzzle/src/RetryMiddleware.php | 22 +- .../guzzlehttp/guzzle/src/TransferStats.php | 10 +- .../guzzlehttp/guzzle/src/UriTemplate.php | 2 +- .../guzzlehttp/guzzle/src/functions.php | 24 +- .../guzzle/src/functions_include.php | 4 +- .../vendor/guzzlehttp/promises/composer.json | 2 +- .../promises/src/AggregateException.php | 4 +- .../promises/src/CancellationException.php | 4 +- .../guzzlehttp/promises/src/Coroutine.php | 6 +- .../guzzlehttp/promises/src/EachPromise.php | 10 +- .../promises/src/FulfilledPromise.php | 6 +- .../guzzlehttp/promises/src/Promise.php | 18 +- .../promises/src/PromiseInterface.php | 2 +- .../promises/src/PromisorInterface.php | 2 +- .../promises/src/RejectedPromise.php | 6 +- .../promises/src/RejectionException.php | 2 +- .../guzzlehttp/promises/src/TaskQueue.php | 4 +- .../promises/src/TaskQueueInterface.php | 2 +- .../guzzlehttp/promises/src/functions.php | 64 ++-- .../promises/src/functions_include.php | 4 +- .../vendor/guzzlehttp/psr7/composer.json | 2 +- .../guzzlehttp/psr7/src/AppendStream.php | 8 +- .../guzzlehttp/psr7/src/BufferStream.php | 6 +- .../guzzlehttp/psr7/src/CachingStream.php | 12 +- .../guzzlehttp/psr7/src/DroppingStream.php | 8 +- .../vendor/guzzlehttp/psr7/src/FnStream.php | 8 +- .../guzzlehttp/psr7/src/InflateStream.php | 16 +- .../guzzlehttp/psr7/src/LazyOpenStream.php | 6 +- .../guzzlehttp/psr7/src/LimitStream.php | 8 +- .../guzzlehttp/psr7/src/MessageTrait.php | 6 +- .../guzzlehttp/psr7/src/MultipartStream.php | 12 +- .../guzzlehttp/psr7/src/NoSeekStream.php | 6 +- .../vendor/guzzlehttp/psr7/src/PumpStream.php | 8 +- .../vendor/guzzlehttp/psr7/src/Request.php | 16 +- .../vendor/guzzlehttp/psr7/src/Response.php | 8 +- .../guzzlehttp/psr7/src/ServerRequest.php | 24 +- .../vendor/guzzlehttp/psr7/src/Stream.php | 6 +- .../psr7/src/StreamDecoratorTrait.php | 6 +- .../guzzlehttp/psr7/src/StreamWrapper.php | 6 +- .../guzzlehttp/psr7/src/UploadedFile.php | 20 +- .../vendor/guzzlehttp/psr7/src/Uri.php | 32 +- .../guzzlehttp/psr7/src/UriNormalizer.php | 18 +- .../guzzlehttp/psr7/src/UriResolver.php | 14 +- .../vendor/guzzlehttp/psr7/src/functions.php | 58 +-- .../guzzlehttp/psr7/src/functions_include.php | 4 +- .../vendor/psr/http-message/composer.json | 2 +- .../psr/http-message/src/MessageInterface.php | 4 +- .../psr/http-message/src/RequestInterface.php | 6 +- .../http-message/src/ResponseInterface.php | 4 +- .../src/ServerRequestInterface.php | 4 +- .../psr/http-message/src/StreamInterface.php | 2 +- .../src/UploadedFileInterface.php | 2 +- .../psr/http-message/src/UriInterface.php | 2 +- catalog/controller/payment/mollie/base.php | 238 ++++++++++-- catalog/controller/payment/mollie/helper.php | 6 +- .../payment/mollie_klarnapaylater.php | 7 + .../payment/mollie_klarnasliceit.php | 7 + catalog/language/de-de/payment/mollie.php | 3 + catalog/language/dutch/payment/mollie.php | 3 + catalog/language/en-gb/payment/mollie.php | 3 + catalog/language/english/payment/mollie.php | 3 + catalog/language/es-es/payment/mollie.php | 3 + catalog/language/fr-fr/payment/mollie.php | 3 + catalog/language/french/payment/mollie.php | 3 + catalog/language/german/payment/mollie.php | 3 + catalog/language/nl-nl/payment/mollie.php | 3 + catalog/language/spanish/payment/mollie.php | 3 + .../payment/mollie_klarnapaylater.php | 5 + .../payment/mollie_klarnasliceit.php | 5 + catalog/model/payment/mollie/base.php | 38 +- .../model/payment/mollie_klarnapaylater.php | 7 + .../model/payment/mollie_klarnasliceit.php | 7 + system/comercia/load.php | 4 + 218 files changed, 3461 insertions(+), 992 deletions(-) create mode 100644 admin/controller/extension/payment/mollie_klarnapaylater.php create mode 100644 admin/controller/extension/payment/mollie_klarnasliceit.php create mode 100644 admin/controller/payment/mollie_klarnapaylater.php create mode 100644 admin/controller/payment/mollie_klarnasliceit.php create mode 100644 admin/language/de-de/extension/payment/mollie_klarnapaylater.php create mode 100644 admin/language/de-de/extension/payment/mollie_klarnasliceit.php create mode 100644 admin/language/de-de/payment/mollie_klarnapaylater.php create mode 100644 admin/language/de-de/payment/mollie_klarnasliceit.php create mode 100644 admin/language/dutch/extension/payment/mollie_klarnapaylater.php create mode 100644 admin/language/dutch/extension/payment/mollie_klarnasliceit.php create mode 100644 admin/language/dutch/payment/mollie_klarnapaylater.php create mode 100644 admin/language/dutch/payment/mollie_klarnasliceit.php create mode 100644 admin/language/en-gb/extension/payment/mollie_klarnapaylater.php create mode 100644 admin/language/en-gb/extension/payment/mollie_klarnasliceit.php create mode 100644 admin/language/en-gb/payment/mollie_klarnapaylater.php create mode 100644 admin/language/en-gb/payment/mollie_klarnasliceit.php create mode 100644 admin/language/english/extension/payment/mollie_klarnapaylater.php create mode 100644 admin/language/english/extension/payment/mollie_klarnasliceit.php create mode 100644 admin/language/english/payment/mollie_klarnapaylater.php create mode 100644 admin/language/english/payment/mollie_klarnasliceit.php create mode 100644 admin/language/es-es/extension/payment/mollie_klarnapaylater.php create mode 100644 admin/language/es-es/extension/payment/mollie_klarnasliceit.php create mode 100644 admin/language/es-es/payment/mollie_klarnapaylater.php create mode 100644 admin/language/es-es/payment/mollie_klarnasliceit.php create mode 100644 admin/language/fr-fr/extension/payment/mollie_klarnapaylater.php create mode 100644 admin/language/fr-fr/extension/payment/mollie_klarnasliceit.php create mode 100644 admin/language/fr-fr/payment/mollie_klarnapaylater.php create mode 100644 admin/language/fr-fr/payment/mollie_klarnasliceit.php create mode 100644 admin/language/french/extension/payment/mollie_klarnapaylater.php create mode 100644 admin/language/french/extension/payment/mollie_klarnasliceit.php create mode 100644 admin/language/french/payment/mollie_klarnapaylater.php create mode 100644 admin/language/french/payment/mollie_klarnasliceit.php create mode 100644 admin/language/german/extension/payment/mollie_klarnapaylater.php create mode 100644 admin/language/german/extension/payment/mollie_klarnasliceit.php create mode 100644 admin/language/german/payment/mollie_klarnapaylater.php create mode 100644 admin/language/german/payment/mollie_klarnasliceit.php create mode 100644 admin/language/nl-nl/extension/payment/mollie_klarnapaylater.php create mode 100644 admin/language/nl-nl/extension/payment/mollie_klarnasliceit.php create mode 100644 admin/language/nl-nl/payment/mollie_klarnapaylater.php create mode 100644 admin/language/nl-nl/payment/mollie_klarnasliceit.php create mode 100644 admin/language/spanish/extension/payment/mollie_klarnapaylater.php create mode 100644 admin/language/spanish/extension/payment/mollie_klarnasliceit.php create mode 100644 admin/language/spanish/payment/mollie_klarnapaylater.php create mode 100644 admin/language/spanish/payment/mollie_klarnasliceit.php create mode 100644 catalog/controller/extension/payment/mollie_klarnapaylater.php create mode 100644 catalog/controller/extension/payment/mollie_klarnasliceit.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/OrderEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/OrderLineEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/OrderRefundEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/OrganizationEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentCaptureEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentChargebackEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/PermissionEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Endpoints/ShipmentEndpoint.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Capture.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/CaptureCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Order.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/OrderCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/OrderLine.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/OrderLineCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Organization.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/OrganizationCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Permission.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/PermissionCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/Shipment.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Resources/ShipmentCollection.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/OrderLineStatus.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/OrderLineType.php create mode 100644 catalog/controller/payment/mollie-api-client/src/Types/OrderStatus.php create mode 100644 catalog/controller/payment/mollie_klarnapaylater.php create mode 100644 catalog/controller/payment/mollie_klarnasliceit.php create mode 100644 catalog/model/extension/payment/mollie_klarnapaylater.php create mode 100644 catalog/model/extension/payment/mollie_klarnasliceit.php create mode 100644 catalog/model/payment/mollie_klarnapaylater.php create mode 100644 catalog/model/payment/mollie_klarnasliceit.php diff --git a/admin/controller/extension/payment/mollie_klarnapaylater.php b/admin/controller/extension/payment/mollie_klarnapaylater.php new file mode 100644 index 00000000..fd1d1f34 --- /dev/null +++ b/admin/controller/extension/payment/mollie_klarnapaylater.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/admin/controller/extension/payment/mollie_klarnasliceit.php b/admin/controller/extension/payment/mollie_klarnasliceit.php new file mode 100644 index 00000000..26bd2ae4 --- /dev/null +++ b/admin/controller/extension/payment/mollie_klarnasliceit.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/admin/controller/payment/mollie/base.php b/admin/controller/payment/mollie/base.php index 9642ed2b..d1935a7f 100644 --- a/admin/controller/payment/mollie/base.php +++ b/admin/controller/payment/mollie/base.php @@ -91,11 +91,12 @@ public function install () "CREATE TABLE IF NOT EXISTS `%smollie_payments` ( `order_id` int(11) unsigned NOT NULL, `method` enum('idl') NOT NULL DEFAULT 'idl', + `mollie_order_id` varchar(32) NOT NULL, `transaction_id` varchar(32) NOT NULL, `bank_account` varchar(15) NOT NULL, `bank_status` varchar(20) NOT NULL, PRIMARY KEY (`order_id`), - UNIQUE KEY `transaction_id` (`transaction_id`) + UNIQUE KEY `mollie_order_id` (`mollie_order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8", DB_PREFIX )); @@ -105,6 +106,17 @@ public function install () // Just install all modules while we're at it. $this->installAllModules(); $this->cleanUp(); + + //Add event to create shipment + $modelEvent = Util::load()->model('extension/event'); + if (MollieHelper::isOpenCart3x()) { + $modelEvent->deleteEventByCode('mollie_create_shipment'); + } + else { + $modelEvent->deleteEvent('mollie_create_shipment'); + } + + $modelEvent->addEvent('mollie_create_shipment', 'catalog/model/checkout/order/addOrderHistory/after', 'payment/mollie/base/createShipment'); } /** @@ -122,26 +134,32 @@ public function cleanUp() } if (MollieHelper::isOpenCart3x()) { - unlink($adminThemeDir . 'extension/payment/mollie(max_1.5.6.4).tpl'); - unlink($adminThemeDir . 'payment/mollie(max_1.5.6.4).tpl'); - unlink($catalogThemeDir . 'extension/payment/mollie_return.tpl'); - unlink($catalogThemeDir . 'payment/mollie_return.tpl'); - unlink($catalogThemeDir . 'extension/payment/mollie_checkout_form.tpl'); - unlink($catalogThemeDir . 'payment/mollie_checkout_form.tpl'); + if(file_exists($adminThemeDir . 'extension/payment/mollie(max_1.5.6.4).tpl')) { + unlink($adminThemeDir . 'extension/payment/mollie(max_1.5.6.4).tpl'); + unlink($adminThemeDir . 'payment/mollie(max_1.5.6.4).tpl'); + unlink($catalogThemeDir . 'extension/payment/mollie_return.tpl'); + unlink($catalogThemeDir . 'payment/mollie_return.tpl'); + unlink($catalogThemeDir . 'extension/payment/mollie_checkout_form.tpl'); + unlink($catalogThemeDir . 'payment/mollie_checkout_form.tpl'); + } } elseif (MollieHelper::isOpenCart2x()) { - unlink($adminThemeDir . 'extension/payment/mollie(max_1.5.6.4).tpl'); - unlink($adminThemeDir . 'payment/mollie(max_1.5.6.4).tpl'); - unlink($catalogThemeDir . 'extension/payment/mollie_return.twig'); - unlink($catalogThemeDir . 'payment/mollie_return.twig'); - unlink($catalogThemeDir . 'extension/payment/mollie_checkout_form.twig'); - unlink($catalogThemeDir . 'payment/mollie_checkout_form.twig'); + if(file_exists($adminThemeDir . 'extension/payment/mollie(max_1.5.6.4).tpl')) { + unlink($adminThemeDir . 'extension/payment/mollie(max_1.5.6.4).tpl'); + unlink($adminThemeDir . 'payment/mollie(max_1.5.6.4).tpl'); + unlink($catalogThemeDir . 'extension/payment/mollie_return.twig'); + unlink($catalogThemeDir . 'payment/mollie_return.twig'); + unlink($catalogThemeDir . 'extension/payment/mollie_checkout_form.twig'); + unlink($catalogThemeDir . 'payment/mollie_checkout_form.twig'); + } } else { - unlink($adminThemeDir . 'extension/payment/mollie.tpl'); - unlink($adminThemeDir . 'payment/mollie.tpl'); - unlink($catalogThemeDir . 'extension/payment/mollie_return.twig'); - unlink($catalogThemeDir . 'payment/mollie_return.twig'); - unlink($catalogThemeDir . 'extension/payment/mollie_checkout_form.twig'); - unlink($catalogThemeDir . 'payment/mollie_checkout_form.twig'); + if(file_exists($adminThemeDir . 'extension/payment/mollie.tpl')) { + unlink($adminThemeDir . 'extension/payment/mollie.tpl'); + unlink($adminThemeDir . 'payment/mollie.tpl'); + unlink($catalogThemeDir . 'extension/payment/mollie_return.twig'); + unlink($catalogThemeDir . 'payment/mollie_return.twig'); + unlink($catalogThemeDir . 'extension/payment/mollie_checkout_form.twig'); + unlink($catalogThemeDir . 'payment/mollie_checkout_form.twig'); + } } } @@ -197,13 +215,13 @@ protected function uninstallAllModules () public function index () { // Double-check if clean-up has been done - For upgrades - $adminThemeDir = DIR_APPLICATION . 'view/template/extension/payment/'; + $adminThemeDir = DIR_APPLICATION . 'view/template/'; if (MollieHelper::isOpenCart3x() || MollieHelper::isOpenCart2x()) { - if(file_exists($adminThemeDir . 'mollie(max_1.5.6.4).tpl')) { + if(file_exists($adminThemeDir . 'extension/payment/mollie(max_1.5.6.4).tpl')) { $this->cleanUp(); } } else { - if(file_exists($adminThemeDir . 'mollie.tpl')) { + if(file_exists($adminThemeDir . 'extension/payment/mollie.tpl')) { $this->cleanUp(); } } @@ -265,7 +283,7 @@ public function index () $paymentGeoZone[] = $code . '_' . $module_name . '_geo_zone'; } - $fields = array("show_icons", "show_order_canceled_page", "ideal_description", "api_key", "ideal_processing_status_id", "ideal_expired_status_id", "ideal_canceled_status_id", "ideal_failed_status_id", "ideal_pending_status_id"); + $fields = array("show_icons", "show_order_canceled_page", "ideal_description", "api_key", "ideal_processing_status_id", "ideal_expired_status_id", "ideal_canceled_status_id", "ideal_failed_status_id", "ideal_pending_status_id", "ideal_shipping_status_id", "create_shipment_status_id", "create_shipment"); $settingFields = Util::arrayHelper()->prefixAllValues($code . '_', $fields); $storeFormFields = array_merge($settingFields, $paymentStatus, $paymentSortOrder, $paymentGeoZone); @@ -311,6 +329,9 @@ public function index () $code . "_ideal_canceled_status_id" => 7, $code . "_ideal_failed_status_id" => 10, $code . "_ideal_expired_status_id" => 14, + $code . "_ideal_shipping_status_id" => 3, + $code . "_create_shipment_status_id" => 3, + $code . "_create_shipment" => FALSE, ); foreach($data['shops'] as &$store) @@ -346,7 +367,7 @@ public function index () $allowed_methods = array(); try { - $api_methods = $this->getAPIClient()->methods->all(); + $api_methods = $this->getAPIClient()->methods->all(array('resource' => 'orders')); foreach ($api_methods as $api_method) { diff --git a/admin/controller/payment/mollie_klarnapaylater.php b/admin/controller/payment/mollie_klarnapaylater.php new file mode 100644 index 00000000..1afd087d --- /dev/null +++ b/admin/controller/payment/mollie_klarnapaylater.php @@ -0,0 +1,7 @@ +
+
+ +
+ +
+
@@ -224,6 +238,34 @@
+
+ +
+ +
+
+
+ +
+ +
+
@@ -355,7 +397,18 @@ validateAPIKey(this.value, $(this).siblings('.input-group-addon'), $(this).attr('store')); }); + var elem = document.getElementById('-create-shipment'); + var hiddenDiv = document.getElementById('-create-shipment-status'); + if(elem.value == 1) { + hiddenDiv.style.display = "none"; + } + + elem.onchange = function(){ + hiddenDiv.style.display = (this.value == "1") ? "none":"block"; + }; + + })(); diff --git a/admin/view/template/payment/mollie.tpl b/admin/view/template/payment/mollie.tpl index 04c2ca76..5ddecf00 100644 --- a/admin/view/template/payment/mollie.tpl +++ b/admin/view/template/payment/mollie.tpl @@ -183,6 +183,20 @@
+
+ +
+ +
+
@@ -235,6 +249,34 @@
+
+ +
+ +
+
+
+ +
+ +
+
@@ -394,6 +436,17 @@ validateAPIKey(this.value, $(this).siblings('.input-group-addon'), $(this).attr('store')); }); + var elem = document.getElementById('-create-shipment'); + var hiddenDiv = document.getElementById('-create-shipment-status'); + if(elem.value == 1) { + hiddenDiv.style.display = "none"; + } + + elem.onchange = function(){ + hiddenDiv.style.display = (this.value == "1") ? "none":"block"; + }; + + })(); diff --git a/catalog/controller/extension/payment/mollie_klarnapaylater.php b/catalog/controller/extension/payment/mollie_klarnapaylater.php new file mode 100644 index 00000000..26106aee --- /dev/null +++ b/catalog/controller/extension/payment/mollie_klarnapaylater.php @@ -0,0 +1,5 @@ +api); + return new \Mollie\Api\Resources\Customer($this->client); } /** * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. @@ -27,7 +27,7 @@ protected function getResourceObject() */ protected function getResourceCollectionObject($count, $_links) { - return new \Mollie\Api\Resources\CustomerCollection($this->api, $count, $_links); + return new \Mollie\Api\Resources\CustomerCollection($this->client, $count, $_links); } /** * Creates a customer in Mollie. @@ -64,12 +64,13 @@ public function get($customerId, array $parameters = []) * * @param string $customerId * + * @param array $data * @return null * @throws ApiException */ - public function delete($customerId) + public function delete($customerId, array $data = []) { - return $this->rest_delete($customerId); + return $this->rest_delete($customerId, $data); } /** * Retrieves a collection of Customers from Mollie. diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerPaymentsEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerPaymentsEndpoint.php index b2a42698..3b594e5e 100644 --- a/catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerPaymentsEndpoint.php +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/CustomerPaymentsEndpoint.php @@ -16,7 +16,7 @@ class CustomerPaymentsEndpoint extends \Mollie\Api\Endpoints\EndpointAbstract */ protected function getResourceObject() { - return new \Mollie\Api\Resources\Payment($this->api); + return new \Mollie\Api\Resources\Payment($this->client); } /** * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. @@ -28,7 +28,7 @@ protected function getResourceObject() */ protected function getResourceCollectionObject($count, $_links) { - return new \Mollie\Api\Resources\PaymentCollection($this->api, $count, $_links); + return new \Mollie\Api\Resources\PaymentCollection($this->client, $count, $_links); } /** * Create a subscription for a Customer diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/EndpointAbstract.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/EndpointAbstract.php index 7ce8a010..cc484dc2 100644 --- a/catalog/controller/payment/mollie-api-client/src/Endpoints/EndpointAbstract.php +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/EndpointAbstract.php @@ -7,7 +7,6 @@ use Mollie\Api\Resources\BaseCollection; use Mollie\Api\Resources\BaseResource; use Mollie\Api\Resources\ResourceFactory; -use _PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface; abstract class EndpointAbstract { const REST_CREATE = \Mollie\Api\MollieApiClient::HTTP_POST; @@ -18,7 +17,7 @@ abstract class EndpointAbstract /** * @var MollieApiClient */ - protected $api; + protected $client; /** * @var string */ @@ -32,7 +31,7 @@ abstract class EndpointAbstract */ public function __construct(\Mollie\Api\MollieApiClient $api) { - $this->api = $api; + $this->client = $api; } /** * @param array $filters @@ -61,7 +60,7 @@ private function buildQueryString(array $filters) */ protected function rest_create(array $body, array $filters) { - $result = $this->api->performHttpCall(self::REST_CREATE, $this->getResourcePath() . $this->buildQueryString($filters), $this->parseRequestBody($body)); + $result = $this->client->performHttpCall(self::REST_CREATE, $this->getResourcePath() . $this->buildQueryString($filters), $this->parseRequestBody($body)); return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, $this->getResourceObject()); } /** @@ -78,24 +77,25 @@ protected function rest_read($id, array $filters) throw new \Mollie\Api\Exceptions\ApiException("Invalid resource id."); } $id = \urlencode($id); - $result = $this->api->performHttpCall(self::REST_READ, "{$this->getResourcePath()}/{$id}" . $this->buildQueryString($filters)); + $result = $this->client->performHttpCall(self::REST_READ, "{$this->getResourcePath()}/{$id}" . $this->buildQueryString($filters)); return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, $this->getResourceObject()); } /** * Sends a DELETE request to a single Molle API object. * * @param string $id + * @param array $body * * @return BaseResource * @throws ApiException */ - protected function rest_delete($id) + protected function rest_delete($id, array $body = []) { if (empty($id)) { throw new \Mollie\Api\Exceptions\ApiException("Invalid resource id."); } $id = \urlencode($id); - $result = $this->api->performHttpCall(self::REST_DELETE, "{$this->getResourcePath()}/{$id}"); + $result = $this->client->performHttpCall(self::REST_DELETE, "{$this->getResourcePath()}/{$id}", $this->parseRequestBody($body)); if ($result === null) { return null; } @@ -115,7 +115,7 @@ protected function rest_list($from = null, $limit = null, array $filters) { $filters = \array_merge(["from" => $from, "limit" => $limit], $filters); $apiPath = $this->getResourcePath() . $this->buildQueryString($filters); - $result = $this->api->performHttpCall(self::REST_LIST, $apiPath); + $result = $this->client->performHttpCall(self::REST_LIST, $apiPath); /** @var BaseCollection $collection */ $collection = $this->getResourceCollectionObject($result->count, $result->_links); foreach ($result->_embedded->{$collection->getCollectionResourceName()} as $dataResult) { @@ -165,13 +165,13 @@ public function getResourcePath() * @return null|string * @throws ApiException */ - private function parseRequestBody(array $body) + protected function parseRequestBody(array $body) { if (empty($body)) { return null; } try { - $encoded = \_PhpScoper5b87e821469bb\GuzzleHttp\json_encode($body); + $encoded = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\json_encode($body); } catch (\InvalidArgumentException $e) { throw new \Mollie\Api\Exceptions\ApiException("Error encoding parameters into JSON: '" . $e->getMessage() . "'."); } diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/InvoiceEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/InvoiceEndpoint.php index 287d9048..14798e4e 100644 --- a/catalog/controller/payment/mollie-api-client/src/Endpoints/InvoiceEndpoint.php +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/InvoiceEndpoint.php @@ -15,7 +15,7 @@ class InvoiceEndpoint extends \Mollie\Api\Endpoints\EndpointAbstract */ protected function getResourceObject() { - return new \Mollie\Api\Resources\Invoice($this->api); + return new \Mollie\Api\Resources\Invoice($this->client); } /** * Get the collection object that is used by this API. Every API uses one type of collection object. @@ -27,7 +27,7 @@ protected function getResourceObject() */ protected function getResourceCollectionObject($count, $_links) { - return new \Mollie\Api\Resources\InvoiceCollection($this->api, $count, $_links); + return new \Mollie\Api\Resources\InvoiceCollection($this->client, $count, $_links); } /** * Retrieve an Invoice from Mollie. diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/MandateEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/MandateEndpoint.php index a0429c25..840cdc5b 100644 --- a/catalog/controller/payment/mollie-api-client/src/Endpoints/MandateEndpoint.php +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/MandateEndpoint.php @@ -16,7 +16,7 @@ class MandateEndpoint extends \Mollie\Api\Endpoints\EndpointAbstract */ protected function getResourceObject() { - return new \Mollie\Api\Resources\Mandate($this->api); + return new \Mollie\Api\Resources\Mandate($this->client); } /** * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. @@ -28,7 +28,7 @@ protected function getResourceObject() */ protected function getResourceCollectionObject($count, $_links) { - return new \Mollie\Api\Resources\MandateCollection($this->api, $count, $_links); + return new \Mollie\Api\Resources\MandateCollection($this->client, $count, $_links); } /** * @param Customer $customer @@ -71,11 +71,13 @@ public function listFor(\Mollie\Api\Resources\Customer $customer, $from = null, * @param Customer $customer * @param string $mandateId * + * @param array $data * @return null + * @throws \Mollie\Api\Exceptions\ApiException */ - public function revokeFor(\Mollie\Api\Resources\Customer $customer, $mandateId) + public function revokeFor(\Mollie\Api\Resources\Customer $customer, $mandateId, $data = []) { $this->parentId = $customer->id; - return parent::rest_delete($mandateId); + return parent::rest_delete($mandateId, $data); } } diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/MethodEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/MethodEndpoint.php index 9df9690d..ec6af81a 100644 --- a/catalog/controller/payment/mollie-api-client/src/Endpoints/MethodEndpoint.php +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/MethodEndpoint.php @@ -13,7 +13,7 @@ class MethodEndpoint extends \Mollie\Api\Endpoints\EndpointAbstract */ protected function getResourceObject() { - return new \Mollie\Api\Resources\Method($this->api); + return new \Mollie\Api\Resources\Method($this->client); } /** * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/OrderEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/OrderEndpoint.php new file mode 100644 index 00000000..99e72d46 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/OrderEndpoint.php @@ -0,0 +1,101 @@ +client); + } + /** + * Get the collection object that is used by this API endpoint. Every API + * endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return OrderCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\OrderCollection($this->client, $count, $_links); + } + /** + * Creates a order in Mollie. + * + * @param array $data An array containing details on the order. + * @param array $filters + * + * @return Order + * @throws ApiException + */ + public function create(array $data = [], array $filters = []) + { + return $this->rest_create($data, $filters); + } + /** + * Retrieve a single order from Mollie. + * + * Will throw a ApiException if the order id is invalid or the resource cannot + * be found. + * + * @param string $paymentId + * @param array $parameters + * @return Order + * @throws ApiException + */ + public function get($orderId, array $parameters = []) + { + if (empty($orderId) || \strpos($orderId, self::RESOURCE_ID_PREFIX) !== 0) { + throw new \Mollie\Api\Exceptions\ApiException("Invalid order ID: '{$orderId}'. An order ID should start with '" . self::RESOURCE_ID_PREFIX . "'."); + } + return parent::rest_read($orderId, $parameters); + } + /** + * Cancel the given Order. + * + * If the order was partially shipped, the status will be "completed" instead of + * "canceled". + * Will throw a ApiException if the order id is invalid or the resource cannot + * be found. + * Returns the canceled order with HTTP status 200. + * + * @param string $orderId + * + * @return Order + * @throws ApiException + */ + public function cancel($orderId) + { + return $this->rest_delete($orderId); + } + /** + * Retrieves a collection of Orders from Mollie. + * + * @param string $from The first order ID you want to include in your list. + * @param int $limit + * @param array $parameters + * + * @return OrderCollection + * @throws ApiException + */ + public function page($from = null, $limit = null, array $parameters = []) + { + return $this->rest_list($from, $limit, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/OrderLineEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/OrderLineEndpoint.php new file mode 100644 index 00000000..29f97d36 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/OrderLineEndpoint.php @@ -0,0 +1,61 @@ +client); + } + /** + * Get the collection object that is used by this API endpoint. Every API + * endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return OrderLineCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\OrderLineCollection($count, $_links); + } + /** + * Cancel lines for the provided order. + * The data array must contain a lines array. + * You can pass an empty lines array if you want to cancel all eligible lines. + * Returns null if successful. + * + * @param Order $order + * @param array $data + * + * @return null + * @throws ApiException + */ + public function cancelFor(\Mollie\Api\Resources\Order $order, array $data) + { + if (!isset($data, $data['lines']) || !\is_array($data['lines'])) { + throw new \Mollie\Api\Exceptions\ApiException("A lines array is required."); + } + $this->parentId = $order->id; + $this->client->performHttpCall(self::REST_DELETE, "{$this->getResourcePath()}", $this->parseRequestBody($data)); + return null; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/OrderRefundEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/OrderRefundEndpoint.php new file mode 100644 index 00000000..249016a0 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/OrderRefundEndpoint.php @@ -0,0 +1,47 @@ +client); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return RefundCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\RefundCollection($this->client, $count, $_links); + } + /** + * Refund some order lines. You can provide an empty array for the + * "lines" data to refund all eligable lines for this order. + * + * @param Order $order + * @param array $data + * @param array $filters + * + * @return Refund + */ + public function createFor(\Mollie\Api\Resources\Order $order, array $data, array $filters = []) + { + $this->parentId = $order->id; + return parent::rest_create($data, $filters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/OrganizationEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/OrganizationEndpoint.php new file mode 100644 index 00000000..42c7fbfb --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/OrganizationEndpoint.php @@ -0,0 +1,73 @@ +client); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return OrganizationCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\OrganizationCollection($this->client, $count, $_links); + } + /** + * Retrieve an organization from Mollie. + * + * Will throw a ApiException if the organization id is invalid or the resource cannot be found. + * + * @param string $organizationId + * @param array $parameters + * @return Method + * @throws ApiException + */ + public function get($organizationId, array $parameters = []) + { + if (empty($organizationId)) { + throw new \Mollie\Api\Exceptions\ApiException("Organization ID is empty."); + } + return parent::rest_read($organizationId, $parameters); + } + /** + * Retrieve the current organization from Mollie. + * + * @param array $parameters + * @return Method + * @throws ApiException + */ + public function current(array $parameters = []) + { + return parent::rest_read('me', $parameters); + } + /** + * Retrieves a collection of Organizations from Mollie. + * + * @param string $from The first organization ID you want to include in your list. + * @param int $limit + * @param array $parameters + * + * @return OrganizationCollection + * @throws ApiException + */ + public function page($from = null, $limit = null, array $parameters = []) + { + return $this->rest_list($from, $limit, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentCaptureEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentCaptureEndpoint.php new file mode 100644 index 00000000..718c3cdd --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentCaptureEndpoint.php @@ -0,0 +1,43 @@ +client); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return CaptureCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Endpoints\CaptureCollection($this->client, $count, $_links); + } + /** + * @param Payment $payment + * @param string $captureId + * @param array $parameters + * + * @return Capture + */ + public function getFor(\Mollie\Api\Resources\Payment $payment, $captureId, array $parameters = []) + { + $this->parentId = $payment->id; + return parent::rest_read($captureId, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentChargebackEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentChargebackEndpoint.php new file mode 100644 index 00000000..b1be234c --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentChargebackEndpoint.php @@ -0,0 +1,44 @@ +client); + } + /** + * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return ChargebackCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\ChargebackCollection($this->client, $count, $_links); + } + /** + * @param Payment $payment + * @param string $chargebackId + * @param array $parameters + * + * @return Chargeback + */ + public function getFor(\Mollie\Api\Resources\Payment $payment, $chargebackId, array $parameters = []) + { + $this->parentId = $payment->id; + return parent::rest_read($chargebackId, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentEndpoint.php index a11c19fe..69f1e793 100644 --- a/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentEndpoint.php +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentEndpoint.php @@ -19,7 +19,7 @@ class PaymentEndpoint extends \Mollie\Api\Endpoints\EndpointAbstract */ protected function getResourceObject() { - return new \Mollie\Api\Resources\Payment($this->api); + return new \Mollie\Api\Resources\Payment($this->client); } /** * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. @@ -31,7 +31,7 @@ protected function getResourceObject() */ protected function getResourceCollectionObject($count, $_links) { - return new \Mollie\Api\Resources\PaymentCollection($this->api, $count, $_links); + return new \Mollie\Api\Resources\PaymentCollection($this->client, $count, $_links); } /** * Creates a payment in Mollie. @@ -71,12 +71,13 @@ public function get($paymentId, array $parameters = []) * * @param string $paymentId * + * @param array $data * @return Payment * @throws ApiException */ - public function delete($paymentId) + public function delete($paymentId, array $data = []) { - return $this->rest_delete($paymentId); + return $this->rest_delete($paymentId, $data); } /** * Cancel the given Payment. This is just an alias of the 'delete' method. @@ -86,12 +87,13 @@ public function delete($paymentId) * * @param string $paymentId * + * @param array $data * @return Payment * @throws ApiException */ - public function cancel($paymentId) + public function cancel($paymentId, array $data = []) { - return $this->rest_delete($paymentId); + return $this->rest_delete($paymentId, $data); } /** * Retrieves a collection of Payments from Mollie. @@ -126,7 +128,7 @@ public function refund(\Mollie\Api\Resources\Payment $payment, $data = []) if (\count($data) > 0) { $body = \json_encode($data); } - $result = $this->api->performHttpCall(self::REST_CREATE, $resource, $body); - return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, new \Mollie\Api\Resources\Refund($this->api)); + $result = $this->client->performHttpCall(self::REST_CREATE, $resource, $body); + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, new \Mollie\Api\Resources\Refund($this->client)); } } diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentRefundEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentRefundEndpoint.php index 50a8c706..d4080a7d 100644 --- a/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentRefundEndpoint.php +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/PaymentRefundEndpoint.php @@ -15,7 +15,7 @@ class PaymentRefundEndpoint extends \Mollie\Api\Endpoints\EndpointAbstract */ protected function getResourceObject() { - return new \Mollie\Api\Resources\Refund($this->api); + return new \Mollie\Api\Resources\Refund($this->client); } /** * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. @@ -27,7 +27,7 @@ protected function getResourceObject() */ protected function getResourceCollectionObject($count, $_links) { - return new \Mollie\Api\Resources\RefundCollection($this->api, $count, $_links); + return new \Mollie\Api\Resources\RefundCollection($this->client, $count, $_links); } /** * @param Payment $payment diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/PermissionEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/PermissionEndpoint.php new file mode 100644 index 00000000..b30eaa9c --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/PermissionEndpoint.php @@ -0,0 +1,60 @@ +client); + } + /** + * Get the collection object that is used by this API endpoint. Every API + * endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return PermissionCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\PermissionCollection($this->client, $count, $_links); + } + /** + * Retrieve a single Permission from Mollie. + * + * Will throw an ApiException if the permission id is invalid. + * + * @param string $permissionId + * @param array $parameters + * @return Permission + * @throws ApiException + */ + public function get($permissionId, array $parameters = []) + { + return $this->rest_read($permissionId, $parameters); + } + /** + * Retrieve all permissions. + * + * @param array $parameters + * + * @return PermissionCollection + * @throws ApiException + */ + public function all(array $parameters = []) + { + return parent::rest_list(null, null, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/ProfileEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/ProfileEndpoint.php index 293d970b..63515c91 100644 --- a/catalog/controller/payment/mollie-api-client/src/Endpoints/ProfileEndpoint.php +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/ProfileEndpoint.php @@ -15,7 +15,7 @@ class ProfileEndpoint extends \Mollie\Api\Endpoints\EndpointAbstract */ protected function getResourceObject() { - return new \Mollie\Api\Resources\Profile($this->api); + return new \Mollie\Api\Resources\Profile($this->client); } /** * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. @@ -27,7 +27,7 @@ protected function getResourceObject() */ protected function getResourceCollectionObject($count, $_links) { - return new \Mollie\Api\Resources\ProfileCollection($this->api, $count, $_links); + return new \Mollie\Api\Resources\ProfileCollection($this->client, $count, $_links); } /** * Creates a Profile in Mollie. @@ -65,12 +65,13 @@ public function get($profileId, array $parameters = []) * * @param string $profileId * + * @param array $data * @return Profile * @throws ApiException */ - public function delete($profileId) + public function delete($profileId, array $data = []) { - return $this->rest_delete($profileId); + return $this->rest_delete($profileId, $data); } /** * Retrieves a collection of Profiles from Mollie. diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/RefundEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/RefundEndpoint.php index 35d62535..318c8b8a 100644 --- a/catalog/controller/payment/mollie-api-client/src/Endpoints/RefundEndpoint.php +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/RefundEndpoint.php @@ -15,7 +15,7 @@ class RefundEndpoint extends \Mollie\Api\Endpoints\EndpointAbstract */ protected function getResourceObject() { - return new \Mollie\Api\Resources\Refund($this->api); + return new \Mollie\Api\Resources\Refund($this->client); } /** * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. @@ -27,7 +27,7 @@ protected function getResourceObject() */ protected function getResourceCollectionObject($count, $_links) { - return new \Mollie\Api\Resources\RefundCollection($this->api, $count, $_links); + return new \Mollie\Api\Resources\RefundCollection($this->client, $count, $_links); } /** * Retrieves a collection of Refunds from Mollie. diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/SettlementsEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/SettlementsEndpoint.php index 1d4eb782..d17600ab 100644 --- a/catalog/controller/payment/mollie-api-client/src/Endpoints/SettlementsEndpoint.php +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/SettlementsEndpoint.php @@ -15,7 +15,7 @@ class SettlementsEndpoint extends \Mollie\Api\Endpoints\EndpointAbstract */ protected function getResourceObject() { - return new \Mollie\Api\Resources\Settlement($this->api); + return new \Mollie\Api\Resources\Settlement($this->client); } /** * Get the collection object that is used by this API. Every API uses one type of collection object. @@ -27,7 +27,7 @@ protected function getResourceObject() */ protected function getResourceCollectionObject($count, $_links) { - return new \Mollie\Api\Resources\SettlementCollection($this->api, $count, $_links); + return new \Mollie\Api\Resources\SettlementCollection($this->client, $count, $_links); } /** * Retrieve a single settlement from Mollie. diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/ShipmentEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/ShipmentEndpoint.php new file mode 100644 index 00000000..64b95c19 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/ShipmentEndpoint.php @@ -0,0 +1,79 @@ +client); + } + /** + * Get the collection object that is used by this API endpoint. Every API + * endpoint uses one type of collection object. + * + * @param int $count + * @param object[] $_links + * + * @return ShipmentCollection + */ + protected function getResourceCollectionObject($count, $_links) + { + return new \Mollie\Api\Resources\ShipmentCollection($this->client, $count, $_links); + } + /** + * Create a shipment for some order lines. You can provide an empty array for the + * "lines" option to include all unshipped lines for this order. + * + * @param Order $order + * @param array $options + * @param array $filters + * + * @return Shipment + */ + public function createFor(\Mollie\Api\Resources\Order $order, array $options = [], array $filters = []) + { + $this->parentId = $order->id; + return parent::rest_create($options, $filters); + } + /** + * Retrieve a single shipment and the order lines shipped by a shipment’s ID. + * + * @param Order $order + * @param string $shipmentId + * @param array $parameters + * + * @return Shipment + */ + public function getFor(\Mollie\Api\Resources\Order $order, $shipmentId, array $parameters = []) + { + $this->parentId = $order->id; + return parent::rest_read($shipmentId, $parameters); + } + /** + * Return all shipments for the Order provided. + * + * @param Order $order + * @param array $parameters + * + * @return ShipmentCollection + */ + public function listFor(\Mollie\Api\Resources\Order $order, array $parameters = []) + { + $this->parentId = $order->id; + return parent::rest_list(null, null, $parameters); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Endpoints/SubscriptionEndpoint.php b/catalog/controller/payment/mollie-api-client/src/Endpoints/SubscriptionEndpoint.php index d51b70fc..ebb9c8ec 100644 --- a/catalog/controller/payment/mollie-api-client/src/Endpoints/SubscriptionEndpoint.php +++ b/catalog/controller/payment/mollie-api-client/src/Endpoints/SubscriptionEndpoint.php @@ -17,7 +17,7 @@ class SubscriptionEndpoint extends \Mollie\Api\Endpoints\EndpointAbstract */ protected function getResourceObject() { - return new \Mollie\Api\Resources\Subscription($this->api); + return new \Mollie\Api\Resources\Subscription($this->client); } /** * Get the collection object that is used by this API endpoint. Every API endpoint uses one type of collection object. @@ -29,7 +29,7 @@ protected function getResourceObject() */ protected function getResourceCollectionObject($count, $_links) { - return new \Mollie\Api\Resources\SubscriptionCollection($this->api, $count, $_links); + return new \Mollie\Api\Resources\SubscriptionCollection($this->client, $count, $_links); } /** * Create a subscription for a Customer @@ -74,11 +74,13 @@ public function listFor(\Mollie\Api\Resources\Customer $customer, $from = null, * @param Customer $customer * @param string $subscriptionId * + * @param array $data * @return null + * @throws \Mollie\Api\Exceptions\ApiException */ - public function cancelFor(\Mollie\Api\Resources\Customer $customer, $subscriptionId) + public function cancelFor(\Mollie\Api\Resources\Customer $customer, $subscriptionId, array $data = []) { $this->parentId = $customer->id; - return parent::rest_delete($subscriptionId); + return parent::rest_delete($subscriptionId, $data); } } diff --git a/catalog/controller/payment/mollie-api-client/src/MollieApiClient.php b/catalog/controller/payment/mollie-api-client/src/MollieApiClient.php index 8a3ed155..aaf17ab5 100644 --- a/catalog/controller/payment/mollie-api-client/src/MollieApiClient.php +++ b/catalog/controller/payment/mollie-api-client/src/MollieApiClient.php @@ -2,31 +2,39 @@ namespace Mollie\Api; -use _PhpScoper5b87e821469bb\GuzzleHttp\Client; -use _PhpScoper5b87e821469bb\GuzzleHttp\ClientInterface; -use _PhpScoper5b87e821469bb\GuzzleHttp\Exception\GuzzleException; -use _PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Request; +use _PhpScoper5bbb1f4b001f3\GuzzleHttp\Client; +use _PhpScoper5bbb1f4b001f3\GuzzleHttp\ClientInterface; +use _PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\GuzzleException; +use _PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Request; use Mollie\Api\Endpoints\CustomerEndpoint; use Mollie\Api\Endpoints\CustomerPaymentsEndpoint; use Mollie\Api\Endpoints\InvoiceEndpoint; use Mollie\Api\Endpoints\MandateEndpoint; use Mollie\Api\Endpoints\MethodEndpoint; +use Mollie\Api\Endpoints\OrderEndpoint; +use Mollie\Api\Endpoints\OrderLineEndpoint; +use Mollie\Api\Endpoints\OrderRefundEndpoint; +use Mollie\Api\Endpoints\PaymentCaptureEndpoint; +use Mollie\Api\Endpoints\OrganizationEndpoint; +use Mollie\Api\Endpoints\PaymentChargebackEndpoint; use Mollie\Api\Endpoints\PaymentEndpoint; use Mollie\Api\Endpoints\PaymentRefundEndpoint; +use Mollie\Api\Endpoints\PermissionEndpoint; use Mollie\Api\Endpoints\ProfileEndpoint; use Mollie\Api\Endpoints\RefundEndpoint; use Mollie\Api\Endpoints\SettlementsEndpoint; +use Mollie\Api\Endpoints\ShipmentEndpoint; use Mollie\Api\Endpoints\SubscriptionEndpoint; use Mollie\Api\Exceptions\ApiException; use Mollie\Api\Exceptions\IncompatiblePlatform; -use _PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface; -use _PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface; +use _PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface; +use _PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface; class MollieApiClient { /** * Version of our client. */ - const CLIENT_VERSION = '2.0.13'; + const CLIENT_VERSION = '2.1.2'; /** * Endpoint of the remote API. */ @@ -46,6 +54,10 @@ class MollieApiClient * HTTP status codes */ const HTTP_NO_CONTENT = 204; + /** + * Default response timeout (in seconds). + */ + const TIMEOUT = 10; /** * @var ClientInterface */ @@ -98,12 +110,42 @@ class MollieApiClient * @var ProfileEndpoint */ public $profiles; + /** + * RESTful Organization resource. + * + * @var OrganizationEndpoint + */ + public $organizations; + /** + * RESTful Permission resource. + * + * @var PermissionEndpoint + */ + public $permissions; /** * RESTful Invoice resource. * * @var InvoiceEndpoint */ public $invoices; + /** + * RESTful Order resource. + * + * @var OrderEndpoint + */ + public $orders; + /** + * RESTful OrderLine resource. + * + * @var OrderLineEndpoint + */ + public $orderLines; + /** + * RESTful Shipment resource. + * + * @var ShipmentEndpoint + */ + public $shipments; /** * RESTful Refunds resource. * @@ -111,11 +153,29 @@ class MollieApiClient */ public $refunds; /** - * RESTful Refunds resource. + * RESTful Payment Refunds resource. * * @var PaymentRefundEndpoint */ public $paymentRefunds; + /** + * RESTful Payment Captures resource. + * + * @var PaymentCaptureEndpoint + */ + public $paymentCaptures; + /** + * RESTful Payment Chargebacks resource. + * + * @var PaymentChargebacksEndpoint + */ + public $paymentChargebacks; + /** + * RESTful Order Refunds resource. + * + * @var OrderRefundEndpoint + */ + public $orderRefunds; /** * @var string */ @@ -139,15 +199,15 @@ class MollieApiClient * * @throws IncompatiblePlatform */ - public function __construct(\_PhpScoper5b87e821469bb\GuzzleHttp\ClientInterface $httpClient = null) + public function __construct(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\ClientInterface $httpClient = null) { - $this->httpClient = $httpClient ? $httpClient : new \_PhpScoper5b87e821469bb\GuzzleHttp\Client([\_PhpScoper5b87e821469bb\GuzzleHttp\RequestOptions::VERIFY => \_PhpScoper5b87e821469bb\Composer\CaBundle\CaBundle::getBundledCaBundlePath()]); + $this->httpClient = $httpClient ? $httpClient : new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Client([\_PhpScoper5bbb1f4b001f3\GuzzleHttp\RequestOptions::VERIFY => \_PhpScoper5bbb1f4b001f3\Composer\CaBundle\CaBundle::getBundledCaBundlePath(), \_PhpScoper5bbb1f4b001f3\GuzzleHttp\RequestOptions::TIMEOUT => self::TIMEOUT]); $compatibilityChecker = new \Mollie\Api\CompatibilityChecker(); $compatibilityChecker->checkCompatibility(); $this->initializeEndpoints(); $this->addVersionString("Mollie/" . self::CLIENT_VERSION); $this->addVersionString("PHP/" . \phpversion()); - $this->addVersionString("Guzzle/" . \_PhpScoper5b87e821469bb\GuzzleHttp\ClientInterface::VERSION); + $this->addVersionString("Guzzle/" . \_PhpScoper5bbb1f4b001f3\GuzzleHttp\ClientInterface::VERSION); } public function initializeEndpoints() { @@ -159,9 +219,17 @@ public function initializeEndpoints() $this->customerPayments = new \Mollie\Api\Endpoints\CustomerPaymentsEndpoint($this); $this->mandates = new \Mollie\Api\Endpoints\MandateEndpoint($this); $this->invoices = new \Mollie\Api\Endpoints\InvoiceEndpoint($this); + $this->permissions = new \Mollie\Api\Endpoints\PermissionEndpoint($this); $this->profiles = new \Mollie\Api\Endpoints\ProfileEndpoint($this); + $this->organizations = new \Mollie\Api\Endpoints\OrganizationEndpoint($this); + $this->orders = new \Mollie\Api\Endpoints\OrderEndpoint($this); + $this->orderLines = new \Mollie\Api\Endpoints\OrderLineEndpoint($this); + $this->orderRefunds = new \Mollie\Api\Endpoints\OrderRefundEndpoint($this); + $this->shipments = new \Mollie\Api\Endpoints\ShipmentEndpoint($this); $this->refunds = new \Mollie\Api\Endpoints\RefundEndpoint($this); $this->paymentRefunds = new \Mollie\Api\Endpoints\PaymentRefundEndpoint($this); + $this->paymentCaptures = new \Mollie\Api\Endpoints\PaymentCaptureEndpoint($this); + $this->paymentChargebacks = new \Mollie\Api\Endpoints\PaymentChargebackEndpoint($this); } /** * @param string $url @@ -280,10 +348,10 @@ public function performHttpCallToFullUrl($httpMethod, $url, $httpBody = null) if (\function_exists("php_uname")) { $headers['X-Mollie-Client-Info'] = \php_uname(); } - $request = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Request($httpMethod, $url, $headers, $httpBody); + $request = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Request($httpMethod, $url, $headers, $httpBody); try { $response = $this->httpClient->send($request, ['http_errors' => \false]); - } catch (\_PhpScoper5b87e821469bb\GuzzleHttp\Exception\GuzzleException $e) { + } catch (\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\GuzzleException $e) { throw new \Mollie\Api\Exceptions\ApiException($e->getMessage(), $e->getCode(), $e); } if (!$response) { @@ -298,9 +366,9 @@ public function performHttpCallToFullUrl($httpMethod, $url, $httpBody = null) * @return object|null * @throws ApiException */ - private function parseResponseBody(\_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) + private function parseResponseBody(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response) { - $body = $response->getBody()->getContents(); + $body = (string) $response->getBody(); if (empty($body)) { if ($response->getStatusCode() === self::HTTP_NO_CONTENT) { return null; diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/BaseCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/BaseCollection.php index a6cd2e06..18385f6b 100644 --- a/catalog/controller/payment/mollie-api-client/src/Resources/BaseCollection.php +++ b/catalog/controller/payment/mollie-api-client/src/Resources/BaseCollection.php @@ -24,7 +24,7 @@ public function __construct($count, $_links) $this->_links = $_links; } /** - * @return string + * @return string|null */ public abstract function getCollectionResourceName(); } diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Capture.php b/catalog/controller/payment/mollie-api-client/src/Resources/Capture.php new file mode 100644 index 00000000..e8e28b49 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Capture.php @@ -0,0 +1,61 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Customer.php b/catalog/controller/payment/mollie-api-client/src/Resources/Customer.php index 4acdc2b6..d70829f9 100644 --- a/catalog/controller/payment/mollie-api-client/src/Resources/Customer.php +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Customer.php @@ -107,7 +107,7 @@ public function getSubscription($subscriptionId, array $parameters = []) */ public function cancelSubscription($subscriptionId) { - return $this->client->subscriptions->cancelFor($this, $subscriptionId); + return $this->client->subscriptions->cancelFor($this, $subscriptionId, $this->getPresetOptions()); } /** * Get all subscriptions for this customer @@ -145,7 +145,7 @@ public function getMandate($mandateId, array $parameters = []) */ public function revokeMandate($mandateId) { - return $this->client->mandates->revokeFor($this, $mandateId); + return $this->client->mandates->revokeFor($this, $mandateId, $this->getPresetOptions()); } /** * Get all mandates for this customer diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Mandate.php b/catalog/controller/payment/mollie-api-client/src/Resources/Mandate.php index e8881660..0bbd9f3c 100644 --- a/catalog/controller/payment/mollie-api-client/src/Resources/Mandate.php +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Mandate.php @@ -18,6 +18,10 @@ class Mandate extends \Mollie\Api\Resources\BaseResource * @var string */ public $status; + /** + * @var string + */ + public $mode; /** * @var string */ @@ -79,7 +83,11 @@ public function revoke() if (!isset($this->_links->self->href)) { return $this; } - $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_DELETE, $this->_links->self->href); + $body = null; + if ($this->client->usesOAuth()) { + $body = \json_encode(["testmode" => $this->mode === "test" ? \true : \false]); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_DELETE, $this->_links->self->href, $body); return $result; } } diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Order.php b/catalog/controller/payment/mollie-api-client/src/Resources/Order.php new file mode 100644 index 00000000..7a2fa5d3 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Order.php @@ -0,0 +1,358 @@ +status === \Mollie\Api\Types\OrderStatus::STATUS_CREATED; + } + /** + * Is this order paid for? + * + * @return bool + */ + public function isPaid() + { + return $this->status === \Mollie\Api\Types\OrderStatus::STATUS_PAID; + } + /** + * Is this order authorized? + * + * @return bool + */ + public function isAuthorized() + { + return $this->status === \Mollie\Api\Types\OrderStatus::STATUS_AUTHORIZED; + } + /** + * Is this order canceled? + * + * @return bool + */ + public function isCanceled() + { + return $this->status === \Mollie\Api\Types\OrderStatus::STATUS_CANCELED; + } + /** + * Is this order refunded? + * + * @return bool + */ + public function isRefunded() + { + return $this->status === \Mollie\Api\Types\OrderStatus::STATUS_REFUNDED; + } + /** + * Is this order shipping? + * + * @return bool + */ + public function isShipping() + { + return $this->status === \Mollie\Api\Types\OrderStatus::STATUS_SHIPPING; + } + /** + * Is this order completed? + * + * @return bool + */ + public function isCompleted() + { + return $this->status === \Mollie\Api\Types\OrderStatus::STATUS_COMPLETED; + } + /** + * Is this order expired? + * + * @return bool + */ + public function isExpired() + { + return $this->status === \Mollie\Api\Types\OrderStatus::STATUS_EXPIRED; + } + /** + * Cancels this order. + * If the order was partially shipped, the status will be "completed" instead of + * "canceled". + * Will throw a ApiException if the order id is invalid or the resource cannot + * be found. + * + * @return Order + * @throws ApiException + */ + public function cancel() + { + return $this->client->orders->cancel($this->id); + } + /** + * Cancel a line for this order. + * The data array must contain a lines array. + * You can pass an empty lines array if you want to cancel all eligible lines. + * Returns null if successful. + * + * @param array|null $data + * @return null + */ + public function cancelLines(array $data) + { + return $this->client->orderLines->cancelFor($this, $data); + } + /** + * Cancels all eligible lines for this order. + * Returns null if successful. + * + * @param array|null $data + * @return null + */ + public function cancelAllLines($data = []) + { + $data['lines'] = []; + return $this->client->orderLines->cancelFor($this, $data); + } + /** + * Get the line value objects + * + * @return OrderLineCollection + */ + public function lines() + { + $lines = new \Mollie\Api\Resources\OrderLineCollection(\count($this->lines), null); + foreach ($this->lines as $line) { + $lines->append(\Mollie\Api\Resources\ResourceFactory::createFromApiResult($line, new \Mollie\Api\Resources\OrderLine($this->client))); + } + return $lines; + } + /** + * Create a shipment for some order lines. You can provide an empty array for the + * "lines" option to include all unshipped lines for this order. + * + * @param array $options + * + * @return Shipment + */ + public function createShipment(array $options = []) + { + return $this->client->shipments->createFor($this, $options); + } + /** + * Create a shipment for all unshipped order lines. + * + * @param array $options + * + * @return Shipment + */ + public function shipAll(array $options = []) + { + $options['lines'] = []; + return $this->createShipment($options); + } + /** + * Retrieve a specific shipment for this order. + * + * @param string $shipmentId + * @param array $parameters + * + * @return Shipment + */ + public function getShipment($shipmentId, array $parameters = []) + { + return $this->client->shipments->getFor($this, $shipmentId, $parameters); + } + /** + * Get all shipments for this order. + * + * @param array $parameters + * + * @return ShipmentCollection + */ + public function shipments(array $parameters = []) + { + return $this->client->shipments->listFor($this, $parameters); + } + /** + * Get the checkout URL where the customer can complete the payment. + * + * @return string|null + */ + public function getCheckoutUrl() + { + if (empty($this->_links->checkout)) { + return null; + } + return $this->_links->checkout->href; + } + /** + * Refund specific order lines. + * + * @param array $data + * @return Refund + */ + public function refund(array $data) + { + return $this->client->orderRefunds->createFor($this, $data); + } + /** + * Refund all eligible order lines. + * + * @param array $data + * @return Refund + */ + public function refundAll(array $data = []) + { + $data['lines'] = []; + return $this->refund($data); + } + /** + * Retrieves all refunds associated with this order + * + * @return RefundCollection + * @throws ApiException + */ + public function refunds() + { + if (!isset($this->_links->refunds->href)) { + return new \Mollie\Api\Resources\RefundCollection($this->client, 0, null); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->refunds->href); + $resourceCollection = new \Mollie\Api\Resources\RefundCollection($this->client, $result->count, $result->_links); + foreach ($result->_embedded->refunds as $dataResult) { + $resourceCollection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new \Mollie\Api\Resources\Refund($this->client)); + } + return $resourceCollection; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/OrderCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/OrderCollection.php new file mode 100644 index 00000000..ccbf529b --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/OrderCollection.php @@ -0,0 +1,21 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/OrderLine.php b/catalog/controller/payment/mollie-api-client/src/Resources/OrderLine.php new file mode 100644 index 00000000..3d4db891 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/OrderLine.php @@ -0,0 +1,245 @@ +status === \Mollie\Api\Types\OrderLineStatus::STATUS_CREATED; + } + /** + * Is this order line paid for? + * + * @return bool + */ + public function isPaid() + { + return $this->status === \Mollie\Api\Types\OrderLineStatus::STATUS_PAID; + } + /** + * Is this order line authorized? + * + * @return bool + */ + public function isAuthorized() + { + return $this->status === \Mollie\Api\Types\OrderLineStatus::STATUS_AUTHORIZED; + } + /** + * Is this order line canceled? + * + * @return bool + */ + public function isCanceled() + { + return $this->status === \Mollie\Api\Types\OrderLineStatus::STATUS_CANCELED; + } + /** + * Is this order line refunded? + * + * @return bool + */ + public function isRefunded() + { + return $this->status === \Mollie\Api\Types\OrderLineStatus::STATUS_REFUNDED; + } + /** + * Is this order line shipping? + * + * @return bool + */ + public function isShipping() + { + return $this->status === \Mollie\Api\Types\OrderLineStatus::STATUS_SHIPPING; + } + /** + * Is this order line completed? + * + * @return bool + */ + public function isCompleted() + { + return $this->status === \Mollie\Api\Types\OrderLineStatus::STATUS_COMPLETED; + } + /** + * Is this order line for a physical product? + * + * @return bool + */ + public function isPhysical() + { + return $this->type === \Mollie\Api\Types\OrderLineType::TYPE_PHYSICAL; + } + /** + * Is this order line for applying a discount? + * + * @return bool + */ + public function isDiscount() + { + return $this->type === \Mollie\Api\Types\OrderLineType::TYPE_DISCOUNT; + } + /** + * Is this order line for a digital product? + * + * @return bool + */ + public function isDigital() + { + return $this->type === \Mollie\Api\Types\OrderLineType::TYPE_DIGITAL; + } + /** + * Is this order line for applying a shipping fee? + * + * @return bool + */ + public function isShippingFee() + { + return $this->type === \Mollie\Api\Types\OrderLineType::TYPE_SHIPPING_FEE; + } + /** + * Is this order line for store credit? + * + * @return bool + */ + public function isStoreCredit() + { + return $this->type === \Mollie\Api\Types\OrderLineType::TYPE_STORE_CREDIT; + } + /** + * Is this order line for a gift card? + * + * @return bool + */ + public function isGiftCard() + { + return $this->type === \Mollie\Api\Types\OrderLineType::TYPE_GIFT_CARD; + } + /** + * Is this order line for a surcharge? + * + * @return bool + */ + public function isSurcharge() + { + return $this->type === \Mollie\Api\Types\OrderLineType::TYPE_SURCHARGE; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/OrderLineCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/OrderLineCollection.php new file mode 100644 index 00000000..74b7ee93 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/OrderLineCollection.php @@ -0,0 +1,30 @@ +id === $lineId) { + return $line; + } + } + return null; + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Organization.php b/catalog/controller/payment/mollie-api-client/src/Resources/Organization.php new file mode 100644 index 00000000..588661c4 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Organization.php @@ -0,0 +1,43 @@ +client); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Payment.php b/catalog/controller/payment/mollie-api-client/src/Resources/Payment.php index 4c62588d..5fe1ced2 100644 --- a/catalog/controller/payment/mollie-api-client/src/Resources/Payment.php +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Payment.php @@ -19,7 +19,8 @@ class Payment extends \Mollie\Api\Resources\BaseResource */ public $id; /** - * Mode of the payment, either "live" or "test" depending on the API Key that was used. + * Mode of the payment, either "live" or "test" depending on the API Key that was + * used. * * @var string */ @@ -37,31 +38,33 @@ class Payment extends \Mollie\Api\Resources\BaseResource */ public $settlementAmount; /** - * The amount of the payment that has been refunded to the consumer, in EURO with 2 decimals. This field will be - * null if the payment can not be refunded. + * The amount of the payment that has been refunded to the consumer, in EURO with + * 2 decimals. This field will be null if the payment can not be refunded. * * @var object|null */ public $amountRefunded; /** - * The amount of a refunded payment that can still be refunded, in EURO with 2 decimals. This field will be - * null if the payment can not be refunded. + * The amount of a refunded payment that can still be refunded, in EURO with 2 + * decimals. This field will be null if the payment can not be refunded. * - * For some payment methods this amount can be higher than the payment amount. This is possible to reimburse - * the costs for a return shipment to your customer for example. + * For some payment methods this amount can be higher than the payment amount. + * This is possible to reimburse the costs for a return shipment to your customer + * for example. * * @var object|null */ public $amountRemaining; /** - * Description of the payment that is shown to the customer during the payment, and - * possibly on the bank or credit card statement. + * Description of the payment that is shown to the customer during the payment, + * and possibly on the bank or credit card statement. * * @var string */ public $description; /** - * If method is empty/null, the customer can pick his/her preferred payment method. + * If method is empty/null, the customer can pick his/her preferred payment + * method. * * @see Method * @var string|null @@ -145,6 +148,13 @@ class Payment extends \Mollie\Api\Resources\BaseResource * @var string|null */ public $subscriptionId; + /** + * The order ID this payment belongs to. + * + * @example ord_pbjz8x + * @var string|null + */ + public $orderId; /** * The settlement ID this payment belongs to. * @@ -218,6 +228,15 @@ public function isPending() { return $this->status === \Mollie\Api\Types\PaymentStatus::STATUS_PENDING; } + /** + * Is this payment authorized? + * + * @return bool + */ + public function isAuthorized() + { + return $this->status === \Mollie\Api\Types\PaymentStatus::STATUS_AUTHORIZED; + } /** * Is this payment paid for? * @@ -255,8 +274,9 @@ public function isFailed() return $this->status === \Mollie\Api\Types\PaymentStatus::STATUS_FAILED; } /** - * Check whether 'sequenceType' is set to 'first'. If a 'first' payment has been completed successfully, the - * consumer's account may be charged automatically using recurring payments. + * Check whether 'sequenceType' is set to 'first'. If a 'first' payment has been + * completed successfully, the consumer's account may be charged automatically + * using recurring payments. * * @return bool */ @@ -265,7 +285,8 @@ public function hasSequenceTypeFirst() return $this->sequenceType === \Mollie\Api\Types\SequenceType::SEQUENCETYPE_FIRST; } /** - * Check whether 'sequenceType' is set to 'recurring'. This type of payment is processed without involving + * Check whether 'sequenceType' is set to 'recurring'. This type of payment is + * processed without involving * the consumer. * * @return bool @@ -313,8 +334,9 @@ public function getAmountRefunded() return 0.0; } /** - * Get the remaining amount that can be refunded. For some payment methods this amount can be higher than - * the payment amount. This is possible to reimburse the costs for a return shipment to your customer for example. + * Get the remaining amount that can be refunded. For some payment methods this + * amount can be higher than the payment amount. This is possible to reimburse + * the costs for a return shipment to your customer for example. * * @return float */ @@ -353,6 +375,34 @@ public function getRefund($refundId, array $parameters = []) { return $this->client->paymentRefunds->getFor($this, $refundId, $parameters); } + /** + * Retrieves all captures associated with this payment + * + * @return CaptureCollection + * @throws ApiException + */ + public function captures() + { + if (!isset($this->_links->captures->href)) { + return new \Mollie\Api\Resources\CaptureCollection($this->client, 0, null); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_GET, $this->_links->captures->href); + $resourceCollection = new \Mollie\Api\Resources\CaptureCollection($this->client, $result->count, $result->_links); + foreach ($result->_embedded->captures as $dataResult) { + $resourceCollection[] = \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new \Mollie\Api\Resources\Capture($this->client)); + } + return $resourceCollection; + } + /** + * @param string $captureId + * @param array $parameters + * + * @return Capture + */ + public function getCapture($captureId, array $parameters = []) + { + return $this->client->paymentCaptures->getFor($this, $captureId, $parameters); + } /** * Retrieves all chargebacks associated with this payment * @@ -371,10 +421,23 @@ public function chargebacks() } return $resourceCollection; } + /** + * Retrieves a specific chargeback for this payment. + * + * @param string $chargebackId + * @param array $parameters + * + * @return Chargeback + */ + public function getChargeback($chargebackId, array $parameters = []) + { + return $this->client->paymentChargebacks->getFor($this, $chargebackId, $parameters); + } /** * Issue a refund for this payment. * - * The $data parameter may either be an array of endpoint parameters or empty to do a full refund. + * The $data parameter may either be an array of endpoint parameters or empty to + * do a full refund. * * @param array|null $data * diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Permission.php b/catalog/controller/payment/mollie-api-client/src/Resources/Permission.php new file mode 100644 index 00000000..b8379010 --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Permission.php @@ -0,0 +1,28 @@ +status === \Mollie\Api\Types\RefundStatus::STATUS_REFUNDED; } /** - * Cancel the refund + * Cancel the refund. + * Returns null if successful. * - * @return BaseResource + * @return null + * @throws ApiException */ public function cancel() { - $dataResult = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_DELETE, $this->_links->self->href); - return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($dataResult, new self($this->client)); + $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_DELETE, $this->_links->self->href); + return null; } } diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Settlement.php b/catalog/controller/payment/mollie-api-client/src/Resources/Settlement.php index 33d5fcda..b38fe912 100644 --- a/catalog/controller/payment/mollie-api-client/src/Resources/Settlement.php +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Settlement.php @@ -48,6 +48,12 @@ class Settlement extends \Mollie\Api\Resources\BaseResource * @var object */ public $periods; + /** + * The ID of the invoice on which this settlement is invoiced, if it has been invoiced. + * + * @var string|null + */ + public $invoiceId; /** * @var object[] */ diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/Shipment.php b/catalog/controller/payment/mollie-api-client/src/Resources/Shipment.php new file mode 100644 index 00000000..f877c78e --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/Shipment.php @@ -0,0 +1,115 @@ +tracking !== null; + } + /** + * Does this shipment offer a track and trace code? + * + * @return bool + */ + public function hasTrackingUrl() + { + return $this->hasTracking() && !empty($this->tracking->url); + } + /** + * Retrieve the track and trace url. Returns null if there is no url available. + * + * @return string|null + */ + public function getTrackingUrl() + { + if (!$this->hasTrackingUrl()) { + return null; + } + return $this->tracking->url; + } + /** + * Get the line value objects + * + * @return OrderLineCollection + */ + public function lines() + { + $lines = new \Mollie\Api\Resources\OrderLineCollection(\count($this->lines), null); + foreach ($this->lines as $line) { + $lines->append(\Mollie\Api\Resources\ResourceFactory::createFromApiResult($line, new \Mollie\Api\Resources\OrderLine($this->client))); + } + return $lines; + } + /** + * Get the Order object for this shipment + * + * @return Order + */ + public function order() + { + return $this->client->orders->get($this->orderId); + } + /** + * Save changes made to this shipment. + * + * @return BaseResource|Shipment + * @throws \Mollie\Api\Exceptions\ApiException + */ + public function update() + { + if (!isset($this->_links->self->href)) { + return $this; + } + $body = \json_encode(["tracking" => $this->tracking]); + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_PATCH, $this->_links->self->href, $body); + return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, new \Mollie\Api\Resources\Shipment($this->client)); + } +} diff --git a/catalog/controller/payment/mollie-api-client/src/Resources/ShipmentCollection.php b/catalog/controller/payment/mollie-api-client/src/Resources/ShipmentCollection.php new file mode 100644 index 00000000..3029c84f --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Resources/ShipmentCollection.php @@ -0,0 +1,14 @@ +_links->self->href)) { return $this; } - $body = \json_encode(["amount" => $this->amount, "times" => $this->times, "startDate" => $this->startDate, "webhookUrl" => $this->webhookUrl, "description" => $this->description]); + $body = \json_encode(["amount" => $this->amount, "times" => $this->times, "startDate" => $this->startDate, "webhookUrl" => $this->webhookUrl, "description" => $this->description, "mandateId" => $this->mandateId]); $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_PATCH, $this->_links->self->href, $body); return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, new \Mollie\Api\Resources\Subscription($this->client)); } @@ -144,7 +148,11 @@ public function cancel() if (!isset($this->_links->self->href)) { return $this; } - $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_DELETE, $this->_links->self->href); + $body = null; + if ($this->client->usesOAuth()) { + $body = \json_encode(["testmode" => $this->mode === "test" ? \true : \false]); + } + $result = $this->client->performHttpCallToFullUrl(\Mollie\Api\MollieApiClient::HTTP_DELETE, $this->_links->self->href, $body); return \Mollie\Api\Resources\ResourceFactory::createFromApiResult($result, new \Mollie\Api\Resources\Subscription($this->client)); } } diff --git a/catalog/controller/payment/mollie-api-client/src/Types/OrderLineStatus.php b/catalog/controller/payment/mollie-api-client/src/Types/OrderLineStatus.php new file mode 100644 index 00000000..470ee50c --- /dev/null +++ b/catalog/controller/payment/mollie-api-client/src/Types/OrderLineStatus.php @@ -0,0 +1,35 @@ + $baseDir . '/src/Endpoints/InvoiceEndpoint.php', 'Mollie\\Api\\Endpoints\\MandateEndpoint' => $baseDir . '/src/Endpoints/MandateEndpoint.php', 'Mollie\\Api\\Endpoints\\MethodEndpoint' => $baseDir . '/src/Endpoints/MethodEndpoint.php', + 'Mollie\\Api\\Endpoints\\OrderEndpoint' => $baseDir . '/src/Endpoints/OrderEndpoint.php', + 'Mollie\\Api\\Endpoints\\OrderLineEndpoint' => $baseDir . '/src/Endpoints/OrderLineEndpoint.php', + 'Mollie\\Api\\Endpoints\\OrderRefundEndpoint' => $baseDir . '/src/Endpoints/OrderRefundEndpoint.php', + 'Mollie\\Api\\Endpoints\\OrganizationEndpoint' => $baseDir . '/src/Endpoints/OrganizationEndpoint.php', + 'Mollie\\Api\\Endpoints\\PaymentCaptureEndpoint' => $baseDir . '/src/Endpoints/PaymentCaptureEndpoint.php', + 'Mollie\\Api\\Endpoints\\PaymentChargebackEndpoint' => $baseDir . '/src/Endpoints/PaymentChargebackEndpoint.php', 'Mollie\\Api\\Endpoints\\PaymentEndpoint' => $baseDir . '/src/Endpoints/PaymentEndpoint.php', 'Mollie\\Api\\Endpoints\\PaymentRefundEndpoint' => $baseDir . '/src/Endpoints/PaymentRefundEndpoint.php', + 'Mollie\\Api\\Endpoints\\PermissionEndpoint' => $baseDir . '/src/Endpoints/PermissionEndpoint.php', 'Mollie\\Api\\Endpoints\\ProfileEndpoint' => $baseDir . '/src/Endpoints/ProfileEndpoint.php', 'Mollie\\Api\\Endpoints\\RefundEndpoint' => $baseDir . '/src/Endpoints/RefundEndpoint.php', 'Mollie\\Api\\Endpoints\\SettlementsEndpoint' => $baseDir . '/src/Endpoints/SettlementsEndpoint.php', + 'Mollie\\Api\\Endpoints\\ShipmentEndpoint' => $baseDir . '/src/Endpoints/ShipmentEndpoint.php', 'Mollie\\Api\\Endpoints\\SubscriptionEndpoint' => $baseDir . '/src/Endpoints/SubscriptionEndpoint.php', 'Mollie\\Api\\Exceptions\\ApiException' => $baseDir . '/src/Exceptions/ApiException.php', 'Mollie\\Api\\Exceptions\\IncompatiblePlatform' => $baseDir . '/src/Exceptions/IncompatiblePlatform.php', 'Mollie\\Api\\MollieApiClient' => $baseDir . '/src/MollieApiClient.php', 'Mollie\\Api\\Resources\\BaseCollection' => $baseDir . '/src/Resources/BaseCollection.php', 'Mollie\\Api\\Resources\\BaseResource' => $baseDir . '/src/Resources/BaseResource.php', + 'Mollie\\Api\\Resources\\Capture' => $baseDir . '/src/Resources/Capture.php', + 'Mollie\\Api\\Resources\\CaptureCollection' => $baseDir . '/src/Resources/CaptureCollection.php', 'Mollie\\Api\\Resources\\Chargeback' => $baseDir . '/src/Resources/Chargeback.php', 'Mollie\\Api\\Resources\\ChargebackCollection' => $baseDir . '/src/Resources/ChargebackCollection.php', 'Mollie\\Api\\Resources\\CursorCollection' => $baseDir . '/src/Resources/CursorCollection.php', @@ -37,8 +47,16 @@ 'Mollie\\Api\\Resources\\MandateCollection' => $baseDir . '/src/Resources/MandateCollection.php', 'Mollie\\Api\\Resources\\Method' => $baseDir . '/src/Resources/Method.php', 'Mollie\\Api\\Resources\\MethodCollection' => $baseDir . '/src/Resources/MethodCollection.php', + 'Mollie\\Api\\Resources\\Order' => $baseDir . '/src/Resources/Order.php', + 'Mollie\\Api\\Resources\\OrderCollection' => $baseDir . '/src/Resources/OrderCollection.php', + 'Mollie\\Api\\Resources\\OrderLine' => $baseDir . '/src/Resources/OrderLine.php', + 'Mollie\\Api\\Resources\\OrderLineCollection' => $baseDir . '/src/Resources/OrderLineCollection.php', + 'Mollie\\Api\\Resources\\Organization' => $baseDir . '/src/Resources/Organization.php', + 'Mollie\\Api\\Resources\\OrganizationCollection' => $baseDir . '/src/Resources/OrganizationCollection.php', 'Mollie\\Api\\Resources\\Payment' => $baseDir . '/src/Resources/Payment.php', 'Mollie\\Api\\Resources\\PaymentCollection' => $baseDir . '/src/Resources/PaymentCollection.php', + 'Mollie\\Api\\Resources\\Permission' => $baseDir . '/src/Resources/Permission.php', + 'Mollie\\Api\\Resources\\PermissionCollection' => $baseDir . '/src/Resources/PermissionCollection.php', 'Mollie\\Api\\Resources\\Profile' => $baseDir . '/src/Resources/Profile.php', 'Mollie\\Api\\Resources\\ProfileCollection' => $baseDir . '/src/Resources/ProfileCollection.php', 'Mollie\\Api\\Resources\\Refund' => $baseDir . '/src/Resources/Refund.php', @@ -46,11 +64,16 @@ 'Mollie\\Api\\Resources\\ResourceFactory' => $baseDir . '/src/Resources/ResourceFactory.php', 'Mollie\\Api\\Resources\\Settlement' => $baseDir . '/src/Resources/Settlement.php', 'Mollie\\Api\\Resources\\SettlementCollection' => $baseDir . '/src/Resources/SettlementCollection.php', + 'Mollie\\Api\\Resources\\Shipment' => $baseDir . '/src/Resources/Shipment.php', + 'Mollie\\Api\\Resources\\ShipmentCollection' => $baseDir . '/src/Resources/ShipmentCollection.php', 'Mollie\\Api\\Resources\\Subscription' => $baseDir . '/src/Resources/Subscription.php', 'Mollie\\Api\\Resources\\SubscriptionCollection' => $baseDir . '/src/Resources/SubscriptionCollection.php', 'Mollie\\Api\\Types\\InvoiceStatus' => $baseDir . '/src/Types/InvoiceStatus.php', 'Mollie\\Api\\Types\\MandateMethod' => $baseDir . '/src/Types/MandateMethod.php', 'Mollie\\Api\\Types\\MandateStatus' => $baseDir . '/src/Types/MandateStatus.php', + 'Mollie\\Api\\Types\\OrderLineStatus' => $baseDir . '/src/Types/OrderLineStatus.php', + 'Mollie\\Api\\Types\\OrderLineType' => $baseDir . '/src/Types/OrderLineType.php', + 'Mollie\\Api\\Types\\OrderStatus' => $baseDir . '/src/Types/OrderStatus.php', 'Mollie\\Api\\Types\\PaymentMethod' => $baseDir . '/src/Types/PaymentMethod.php', 'Mollie\\Api\\Types\\PaymentStatus' => $baseDir . '/src/Types/PaymentStatus.php', 'Mollie\\Api\\Types\\ProfileStatus' => $baseDir . '/src/Types/ProfileStatus.php', @@ -58,102 +81,115 @@ 'Mollie\\Api\\Types\\SequenceType' => $baseDir . '/src/Types/SequenceType.php', 'Mollie\\Api\\Types\\SettlementStatus' => $baseDir . '/src/Types/SettlementStatus.php', 'Mollie\\Api\\Types\\SubscriptionStatus' => $baseDir . '/src/Types/SubscriptionStatus.php', - '_PhpScoper5b87e821469bb\\Composer\\CaBundle\\CaBundle' => $vendorDir . '/composer/ca-bundle/src/CaBundle.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Client' => $vendorDir . '/guzzlehttp/guzzle/src/Client.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\ClientInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ClientInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\CookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\CookieJarInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\FileCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\SessionCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\SetCookie' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\BadResponseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ClientException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ClientException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ConnectException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\GuzzleException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\RequestException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/RequestException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\SeekException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/SeekException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ServerException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ServerException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\TooManyRedirectsException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\TransferException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TransferException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\HandlerStack' => $vendorDir . '/guzzlehttp/guzzle/src/HandlerStack.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlFactory' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlFactoryInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlMultiHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\EasyHandle' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\MockHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\Proxy' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/Proxy.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\StreamHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\MessageFormatter' => $vendorDir . '/guzzlehttp/guzzle/src/MessageFormatter.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Middleware' => $vendorDir . '/guzzlehttp/guzzle/src/Middleware.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Pool' => $vendorDir . '/guzzlehttp/guzzle/src/Pool.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\PrepareBodyMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\AggregateException' => $vendorDir . '/guzzlehttp/promises/src/AggregateException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\CancellationException' => $vendorDir . '/guzzlehttp/promises/src/CancellationException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\Coroutine' => $vendorDir . '/guzzlehttp/promises/src/Coroutine.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\EachPromise' => $vendorDir . '/guzzlehttp/promises/src/EachPromise.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\FulfilledPromise' => $vendorDir . '/guzzlehttp/promises/src/FulfilledPromise.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\Promise' => $vendorDir . '/guzzlehttp/promises/src/Promise.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\PromiseInterface' => $vendorDir . '/guzzlehttp/promises/src/PromiseInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\PromisorInterface' => $vendorDir . '/guzzlehttp/promises/src/PromisorInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\RejectedPromise' => $vendorDir . '/guzzlehttp/promises/src/RejectedPromise.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\RejectionException' => $vendorDir . '/guzzlehttp/promises/src/RejectionException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\TaskQueue' => $vendorDir . '/guzzlehttp/promises/src/TaskQueue.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\TaskQueueInterface' => $vendorDir . '/guzzlehttp/promises/src/TaskQueueInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\AppendStream' => $vendorDir . '/guzzlehttp/psr7/src/AppendStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\BufferStream' => $vendorDir . '/guzzlehttp/psr7/src/BufferStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\CachingStream' => $vendorDir . '/guzzlehttp/psr7/src/CachingStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\DroppingStream' => $vendorDir . '/guzzlehttp/psr7/src/DroppingStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\FnStream' => $vendorDir . '/guzzlehttp/psr7/src/FnStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\InflateStream' => $vendorDir . '/guzzlehttp/psr7/src/InflateStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\LazyOpenStream' => $vendorDir . '/guzzlehttp/psr7/src/LazyOpenStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\LimitStream' => $vendorDir . '/guzzlehttp/psr7/src/LimitStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\MessageTrait' => $vendorDir . '/guzzlehttp/psr7/src/MessageTrait.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\MultipartStream' => $vendorDir . '/guzzlehttp/psr7/src/MultipartStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\NoSeekStream' => $vendorDir . '/guzzlehttp/psr7/src/NoSeekStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\PumpStream' => $vendorDir . '/guzzlehttp/psr7/src/PumpStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Request' => $vendorDir . '/guzzlehttp/psr7/src/Request.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Response' => $vendorDir . '/guzzlehttp/psr7/src/Response.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\ServerRequest' => $vendorDir . '/guzzlehttp/psr7/src/ServerRequest.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Stream' => $vendorDir . '/guzzlehttp/psr7/src/Stream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\StreamDecoratorTrait' => $vendorDir . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\RedirectMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\RequestOptions' => $vendorDir . '/guzzlehttp/guzzle/src/RequestOptions.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\RetryMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RetryMiddleware.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\CompatibilityCheckerTest' => $baseDir . '/tests/Mollie/API/CompatibilityCheckerTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\BaseEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/BaseEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\ChargebackEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/ChargebackEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\CustomerEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/CustomerEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\CustomerPaymentEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/CustomerPaymentEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\InvoiceEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/InvoiceEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\MandateEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/MandateEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\MethodEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/MethodEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\PaymentEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/PaymentEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\PaymentRefundEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/PaymentRefundEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\ProfileEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/ProfileEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\RefundEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/RefundEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\SettlementEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/SettlementEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\SubscriptionEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/SubscriptionEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\MollieApiClientTest' => $baseDir . '/tests/Mollie/API/MollieApiClientTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\InvoiceTest' => $baseDir . '/tests/Mollie/API/Resources/InvoiceTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\PaymentTest' => $baseDir . '/tests/Mollie/API/Resources/PaymentTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\ProfileTest' => $baseDir . '/tests/Mollie/API/Resources/ProfileTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\RefundTest' => $baseDir . '/tests/Mollie/API/Resources/RefundTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\ResourceFactoryTest' => $baseDir . '/tests/Mollie/API/Resources/ResourceFactoryTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\SettlementTest' => $baseDir . '/tests/Mollie/API/Resources/SettlementTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\SubscriptionTest' => $baseDir . '/tests/Mollie/API/Resources/SubscriptionTest.php', + '_PhpScoper5bbb1f4b001f3\\Composer\\CaBundle\\CaBundle' => $vendorDir . '/composer/ca-bundle/src/CaBundle.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Client' => $vendorDir . '/guzzlehttp/guzzle/src/Client.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\ClientInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ClientInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Cookie\\CookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Cookie\\CookieJarInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Cookie\\FileCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Cookie\\SessionCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Cookie\\SetCookie' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\BadResponseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\ClientException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ClientException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\ConnectException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\GuzzleException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\RequestException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/RequestException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\SeekException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/SeekException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\ServerException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ServerException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\TooManyRedirectsException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\TransferException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TransferException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\HandlerStack' => $vendorDir . '/guzzlehttp/guzzle/src/HandlerStack.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\CurlFactory' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\CurlFactoryInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\CurlHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\CurlMultiHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\EasyHandle' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\MockHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\Proxy' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/Proxy.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\StreamHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\MessageFormatter' => $vendorDir . '/guzzlehttp/guzzle/src/MessageFormatter.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Middleware' => $vendorDir . '/guzzlehttp/guzzle/src/Middleware.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Pool' => $vendorDir . '/guzzlehttp/guzzle/src/Pool.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\PrepareBodyMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\AggregateException' => $vendorDir . '/guzzlehttp/promises/src/AggregateException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\CancellationException' => $vendorDir . '/guzzlehttp/promises/src/CancellationException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\Coroutine' => $vendorDir . '/guzzlehttp/promises/src/Coroutine.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\EachPromise' => $vendorDir . '/guzzlehttp/promises/src/EachPromise.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\FulfilledPromise' => $vendorDir . '/guzzlehttp/promises/src/FulfilledPromise.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\Promise' => $vendorDir . '/guzzlehttp/promises/src/Promise.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\PromiseInterface' => $vendorDir . '/guzzlehttp/promises/src/PromiseInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\PromisorInterface' => $vendorDir . '/guzzlehttp/promises/src/PromisorInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\RejectedPromise' => $vendorDir . '/guzzlehttp/promises/src/RejectedPromise.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\RejectionException' => $vendorDir . '/guzzlehttp/promises/src/RejectionException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\TaskQueue' => $vendorDir . '/guzzlehttp/promises/src/TaskQueue.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\TaskQueueInterface' => $vendorDir . '/guzzlehttp/promises/src/TaskQueueInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\AppendStream' => $vendorDir . '/guzzlehttp/psr7/src/AppendStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\BufferStream' => $vendorDir . '/guzzlehttp/psr7/src/BufferStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\CachingStream' => $vendorDir . '/guzzlehttp/psr7/src/CachingStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\DroppingStream' => $vendorDir . '/guzzlehttp/psr7/src/DroppingStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\FnStream' => $vendorDir . '/guzzlehttp/psr7/src/FnStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\InflateStream' => $vendorDir . '/guzzlehttp/psr7/src/InflateStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\LazyOpenStream' => $vendorDir . '/guzzlehttp/psr7/src/LazyOpenStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\LimitStream' => $vendorDir . '/guzzlehttp/psr7/src/LimitStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\MessageTrait' => $vendorDir . '/guzzlehttp/psr7/src/MessageTrait.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\MultipartStream' => $vendorDir . '/guzzlehttp/psr7/src/MultipartStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\NoSeekStream' => $vendorDir . '/guzzlehttp/psr7/src/NoSeekStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\PumpStream' => $vendorDir . '/guzzlehttp/psr7/src/PumpStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\Request' => $vendorDir . '/guzzlehttp/psr7/src/Request.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\Response' => $vendorDir . '/guzzlehttp/psr7/src/Response.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\ServerRequest' => $vendorDir . '/guzzlehttp/psr7/src/ServerRequest.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\Stream' => $vendorDir . '/guzzlehttp/psr7/src/Stream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\StreamDecoratorTrait' => $vendorDir . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\RedirectMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\RequestOptions' => $vendorDir . '/guzzlehttp/guzzle/src/RequestOptions.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\RetryMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RetryMiddleware.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\CompatibilityCheckerTest' => $baseDir . '/tests/Mollie/API/CompatibilityCheckerTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\BaseEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/BaseEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\ChargebackEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/PaymentChargebackEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\CustomerEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/CustomerEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\CustomerPaymentEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/CustomerPaymentEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\InvoiceEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/InvoiceEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\MandateEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/MandateEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\MethodEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/MethodEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\OrderEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/OrderEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\OrderLineEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/OrderLineEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\OrderRefundEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/OrderRefundEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\OrganizationEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/OrganizationEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\PaymentCaptureEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/PaymentCaptureEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\PaymentEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/PaymentEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\PaymentRefundEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/PaymentRefundEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\PermissionEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/PermissionEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\ProfileEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/ProfileEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\RefundEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/RefundEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\SettlementEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/SettlementEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\ShipmentEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/ShipmentEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\SubscriptionEndpointTest' => $baseDir . '/tests/Mollie/API/Endpoints/SubscriptionEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\MollieApiClientTest' => $baseDir . '/tests/Mollie/API/MollieApiClientTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\InvoiceTest' => $baseDir . '/tests/Mollie/API/Resources/InvoiceTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\OrderLineCollectionTest' => $baseDir . '/tests/Mollie/API/Resources/OrderLineCollectionTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\OrderLineTest' => $baseDir . '/tests/Mollie/API/Resources/OrderLineTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\OrderTest' => $baseDir . '/tests/Mollie/API/Resources/OrderTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\PaymentTest' => $baseDir . '/tests/Mollie/API/Resources/PaymentTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\ProfileTest' => $baseDir . '/tests/Mollie/API/Resources/ProfileTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\RefundTest' => $baseDir . '/tests/Mollie/API/Resources/RefundTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\ResourceFactoryTest' => $baseDir . '/tests/Mollie/API/Resources/ResourceFactoryTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\SettlementTest' => $baseDir . '/tests/Mollie/API/Resources/SettlementTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\ShipmentTest' => $baseDir . '/tests/Mollie/API/Resources/ShipmentTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\SubscriptionTest' => $baseDir . '/tests/Mollie/API/Resources/SubscriptionTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\TestHelpers\\AmountObjectTestHelpers' => $baseDir . '/tests/Mollie/TestHelpers/AmountObjectTestHelpers.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\TestHelpers\\LinkObjectTestHelpers' => $baseDir . '/tests/Mollie/TestHelpers/LinkObjectTestHelpers.php', ); diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_psr4.php b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_psr4.php index 736629eb..a0c85e17 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_psr4.php +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_psr4.php @@ -6,11 +6,11 @@ $baseDir = dirname($vendorDir); return array( - '_PhpScoper5b87e821469bb\\Tests\\' => array($baseDir . '/tests'), - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'), - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), - '_PhpScoper5b87e821469bb\\GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), - '_PhpScoper5b87e821469bb\\Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'), + '_PhpScoper5bbb1f4b001f3\\Tests\\' => array($baseDir . '/tests'), + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'), + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), + '_PhpScoper5bbb1f4b001f3\\Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'), 'Mollie\\Api\\' => array($baseDir . '/src'), ); diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_real.php b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_real.php index 4024f718..a251e523 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_real.php +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit82030f8453ef92bd2040820af6890694 +class ComposerAutoloaderInita3126e82b6f8a8825a16880fe8b70058 { private static $loader; @@ -19,15 +19,15 @@ public static function getLoader() return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit82030f8453ef92bd2040820af6890694', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInita3126e82b6f8a8825a16880fe8b70058', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit82030f8453ef92bd2040820af6890694', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInita3126e82b6f8a8825a16880fe8b70058', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit82030f8453ef92bd2040820af6890694::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInita3126e82b6f8a8825a16880fe8b70058::getInitializer($loader)); } else { $classMap = require __DIR__ . '/autoload_classmap.php'; if ($classMap) { @@ -39,19 +39,19 @@ public static function getLoader() $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit82030f8453ef92bd2040820af6890694::$files; + $includeFiles = Composer\Autoload\ComposerStaticInita3126e82b6f8a8825a16880fe8b70058::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire82030f8453ef92bd2040820af6890694($fileIdentifier, $file); + composerRequirea3126e82b6f8a8825a16880fe8b70058($fileIdentifier, $file); } return $loader; } } -function composerRequire82030f8453ef92bd2040820af6890694($fileIdentifier, $file) +function composerRequirea3126e82b6f8a8825a16880fe8b70058($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_static.php b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_static.php index 00e2e7ea..c540e713 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_static.php +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit82030f8453ef92bd2040820af6890694 +class ComposerStaticInita3126e82b6f8a8825a16880fe8b70058 { public static $files = array ( 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', @@ -15,12 +15,12 @@ class ComposerStaticInit82030f8453ef92bd2040820af6890694 public static $prefixLengthsPsr4 = array ( '_' => array ( - '_PhpScoper5b87e821469bb\\Tests\\' => 30, - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\' => 41, - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\' => 40, - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\' => 43, - '_PhpScoper5b87e821469bb\\GuzzleHttp\\' => 35, - '_PhpScoper5b87e821469bb\\Composer\\CaBundle\\' => 42, + '_PhpScoper5bbb1f4b001f3\\Tests\\' => 30, + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\' => 41, + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\' => 40, + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\' => 43, + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\' => 35, + '_PhpScoper5bbb1f4b001f3\\Composer\\CaBundle\\' => 42, ), 'M' => array ( @@ -29,27 +29,27 @@ class ComposerStaticInit82030f8453ef92bd2040820af6890694 ); public static $prefixDirsPsr4 = array ( - '_PhpScoper5b87e821469bb\\Tests\\' => + '_PhpScoper5bbb1f4b001f3\\Tests\\' => array ( 0 => __DIR__ . '/../..' . '/tests', ), - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\' => + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\' => array ( 0 => __DIR__ . '/..' . '/psr/http-message/src', ), - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\' => + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\' => array ( 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', ), - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\' => + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\' => array ( 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src', ), - '_PhpScoper5b87e821469bb\\GuzzleHttp\\' => + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\' => array ( 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src', ), - '_PhpScoper5b87e821469bb\\Composer\\CaBundle\\' => + '_PhpScoper5bbb1f4b001f3\\Composer\\CaBundle\\' => array ( 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', ), @@ -67,17 +67,27 @@ class ComposerStaticInit82030f8453ef92bd2040820af6890694 'Mollie\\Api\\Endpoints\\InvoiceEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/InvoiceEndpoint.php', 'Mollie\\Api\\Endpoints\\MandateEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/MandateEndpoint.php', 'Mollie\\Api\\Endpoints\\MethodEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/MethodEndpoint.php', + 'Mollie\\Api\\Endpoints\\OrderEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/OrderEndpoint.php', + 'Mollie\\Api\\Endpoints\\OrderLineEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/OrderLineEndpoint.php', + 'Mollie\\Api\\Endpoints\\OrderRefundEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/OrderRefundEndpoint.php', + 'Mollie\\Api\\Endpoints\\OrganizationEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/OrganizationEndpoint.php', + 'Mollie\\Api\\Endpoints\\PaymentCaptureEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/PaymentCaptureEndpoint.php', + 'Mollie\\Api\\Endpoints\\PaymentChargebackEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/PaymentChargebackEndpoint.php', 'Mollie\\Api\\Endpoints\\PaymentEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/PaymentEndpoint.php', 'Mollie\\Api\\Endpoints\\PaymentRefundEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/PaymentRefundEndpoint.php', + 'Mollie\\Api\\Endpoints\\PermissionEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/PermissionEndpoint.php', 'Mollie\\Api\\Endpoints\\ProfileEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/ProfileEndpoint.php', 'Mollie\\Api\\Endpoints\\RefundEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/RefundEndpoint.php', 'Mollie\\Api\\Endpoints\\SettlementsEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/SettlementsEndpoint.php', + 'Mollie\\Api\\Endpoints\\ShipmentEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/ShipmentEndpoint.php', 'Mollie\\Api\\Endpoints\\SubscriptionEndpoint' => __DIR__ . '/../..' . '/src/Endpoints/SubscriptionEndpoint.php', 'Mollie\\Api\\Exceptions\\ApiException' => __DIR__ . '/../..' . '/src/Exceptions/ApiException.php', 'Mollie\\Api\\Exceptions\\IncompatiblePlatform' => __DIR__ . '/../..' . '/src/Exceptions/IncompatiblePlatform.php', 'Mollie\\Api\\MollieApiClient' => __DIR__ . '/../..' . '/src/MollieApiClient.php', 'Mollie\\Api\\Resources\\BaseCollection' => __DIR__ . '/../..' . '/src/Resources/BaseCollection.php', 'Mollie\\Api\\Resources\\BaseResource' => __DIR__ . '/../..' . '/src/Resources/BaseResource.php', + 'Mollie\\Api\\Resources\\Capture' => __DIR__ . '/../..' . '/src/Resources/Capture.php', + 'Mollie\\Api\\Resources\\CaptureCollection' => __DIR__ . '/../..' . '/src/Resources/CaptureCollection.php', 'Mollie\\Api\\Resources\\Chargeback' => __DIR__ . '/../..' . '/src/Resources/Chargeback.php', 'Mollie\\Api\\Resources\\ChargebackCollection' => __DIR__ . '/../..' . '/src/Resources/ChargebackCollection.php', 'Mollie\\Api\\Resources\\CursorCollection' => __DIR__ . '/../..' . '/src/Resources/CursorCollection.php', @@ -91,8 +101,16 @@ class ComposerStaticInit82030f8453ef92bd2040820af6890694 'Mollie\\Api\\Resources\\MandateCollection' => __DIR__ . '/../..' . '/src/Resources/MandateCollection.php', 'Mollie\\Api\\Resources\\Method' => __DIR__ . '/../..' . '/src/Resources/Method.php', 'Mollie\\Api\\Resources\\MethodCollection' => __DIR__ . '/../..' . '/src/Resources/MethodCollection.php', + 'Mollie\\Api\\Resources\\Order' => __DIR__ . '/../..' . '/src/Resources/Order.php', + 'Mollie\\Api\\Resources\\OrderCollection' => __DIR__ . '/../..' . '/src/Resources/OrderCollection.php', + 'Mollie\\Api\\Resources\\OrderLine' => __DIR__ . '/../..' . '/src/Resources/OrderLine.php', + 'Mollie\\Api\\Resources\\OrderLineCollection' => __DIR__ . '/../..' . '/src/Resources/OrderLineCollection.php', + 'Mollie\\Api\\Resources\\Organization' => __DIR__ . '/../..' . '/src/Resources/Organization.php', + 'Mollie\\Api\\Resources\\OrganizationCollection' => __DIR__ . '/../..' . '/src/Resources/OrganizationCollection.php', 'Mollie\\Api\\Resources\\Payment' => __DIR__ . '/../..' . '/src/Resources/Payment.php', 'Mollie\\Api\\Resources\\PaymentCollection' => __DIR__ . '/../..' . '/src/Resources/PaymentCollection.php', + 'Mollie\\Api\\Resources\\Permission' => __DIR__ . '/../..' . '/src/Resources/Permission.php', + 'Mollie\\Api\\Resources\\PermissionCollection' => __DIR__ . '/../..' . '/src/Resources/PermissionCollection.php', 'Mollie\\Api\\Resources\\Profile' => __DIR__ . '/../..' . '/src/Resources/Profile.php', 'Mollie\\Api\\Resources\\ProfileCollection' => __DIR__ . '/../..' . '/src/Resources/ProfileCollection.php', 'Mollie\\Api\\Resources\\Refund' => __DIR__ . '/../..' . '/src/Resources/Refund.php', @@ -100,11 +118,16 @@ class ComposerStaticInit82030f8453ef92bd2040820af6890694 'Mollie\\Api\\Resources\\ResourceFactory' => __DIR__ . '/../..' . '/src/Resources/ResourceFactory.php', 'Mollie\\Api\\Resources\\Settlement' => __DIR__ . '/../..' . '/src/Resources/Settlement.php', 'Mollie\\Api\\Resources\\SettlementCollection' => __DIR__ . '/../..' . '/src/Resources/SettlementCollection.php', + 'Mollie\\Api\\Resources\\Shipment' => __DIR__ . '/../..' . '/src/Resources/Shipment.php', + 'Mollie\\Api\\Resources\\ShipmentCollection' => __DIR__ . '/../..' . '/src/Resources/ShipmentCollection.php', 'Mollie\\Api\\Resources\\Subscription' => __DIR__ . '/../..' . '/src/Resources/Subscription.php', 'Mollie\\Api\\Resources\\SubscriptionCollection' => __DIR__ . '/../..' . '/src/Resources/SubscriptionCollection.php', 'Mollie\\Api\\Types\\InvoiceStatus' => __DIR__ . '/../..' . '/src/Types/InvoiceStatus.php', 'Mollie\\Api\\Types\\MandateMethod' => __DIR__ . '/../..' . '/src/Types/MandateMethod.php', 'Mollie\\Api\\Types\\MandateStatus' => __DIR__ . '/../..' . '/src/Types/MandateStatus.php', + 'Mollie\\Api\\Types\\OrderLineStatus' => __DIR__ . '/../..' . '/src/Types/OrderLineStatus.php', + 'Mollie\\Api\\Types\\OrderLineType' => __DIR__ . '/../..' . '/src/Types/OrderLineType.php', + 'Mollie\\Api\\Types\\OrderStatus' => __DIR__ . '/../..' . '/src/Types/OrderStatus.php', 'Mollie\\Api\\Types\\PaymentMethod' => __DIR__ . '/../..' . '/src/Types/PaymentMethod.php', 'Mollie\\Api\\Types\\PaymentStatus' => __DIR__ . '/../..' . '/src/Types/PaymentStatus.php', 'Mollie\\Api\\Types\\ProfileStatus' => __DIR__ . '/../..' . '/src/Types/ProfileStatus.php', @@ -112,112 +135,125 @@ class ComposerStaticInit82030f8453ef92bd2040820af6890694 'Mollie\\Api\\Types\\SequenceType' => __DIR__ . '/../..' . '/src/Types/SequenceType.php', 'Mollie\\Api\\Types\\SettlementStatus' => __DIR__ . '/../..' . '/src/Types/SettlementStatus.php', 'Mollie\\Api\\Types\\SubscriptionStatus' => __DIR__ . '/../..' . '/src/Types/SubscriptionStatus.php', - '_PhpScoper5b87e821469bb\\Composer\\CaBundle\\CaBundle' => __DIR__ . '/..' . '/composer/ca-bundle/src/CaBundle.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Client' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Client.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\ClientInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\CookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\CookieJarInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\FileCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\SessionCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Cookie\\SetCookie' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\BadResponseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ClientException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ClientException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ConnectException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\GuzzleException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\RequestException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/RequestException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\SeekException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/SeekException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\ServerException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ServerException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\TooManyRedirectsException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Exception\\TransferException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TransferException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\HandlerStack' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/HandlerStack.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlFactory' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlFactoryInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\CurlMultiHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\EasyHandle' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\MockHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\Proxy' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/Proxy.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Handler\\StreamHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\MessageFormatter' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/MessageFormatter.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Middleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Middleware.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Pool' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Pool.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\PrepareBodyMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\AggregateException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/AggregateException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\CancellationException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/CancellationException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\Coroutine' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Coroutine.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\EachPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/EachPromise.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\FulfilledPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/FulfilledPromise.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\Promise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Promise.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromiseInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\PromisorInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromisorInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\RejectedPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectedPromise.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\RejectionException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectionException.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\TaskQueue' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueue.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\TaskQueueInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueueInterface.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\AppendStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/AppendStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\BufferStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/BufferStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\CachingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/CachingStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\DroppingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/DroppingStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\FnStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/FnStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\InflateStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/InflateStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\LazyOpenStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LazyOpenStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\LimitStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LimitStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\MessageTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MessageTrait.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\MultipartStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MultipartStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\NoSeekStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/NoSeekStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\PumpStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/PumpStream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Request' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Request.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Response' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Response.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\ServerRequest' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/ServerRequest.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Stream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Stream.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\StreamDecoratorTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\RedirectMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\RequestOptions' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RequestOptions.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\RetryMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RetryMiddleware.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\TransferStats' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/TransferStats.php', - '_PhpScoper5b87e821469bb\\GuzzleHttp\\UriTemplate' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/UriTemplate.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php', - '_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\CompatibilityCheckerTest' => __DIR__ . '/../..' . '/tests/Mollie/API/CompatibilityCheckerTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\BaseEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/BaseEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\ChargebackEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/ChargebackEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\CustomerEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/CustomerEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\CustomerPaymentEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/CustomerPaymentEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\InvoiceEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/InvoiceEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\MandateEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/MandateEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\MethodEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/MethodEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\PaymentEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/PaymentEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\PaymentRefundEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/PaymentRefundEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\ProfileEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/ProfileEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\RefundEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/RefundEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\SettlementEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/SettlementEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Endpoints\\SubscriptionEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/SubscriptionEndpointTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\MollieApiClientTest' => __DIR__ . '/../..' . '/tests/Mollie/API/MollieApiClientTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\InvoiceTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/InvoiceTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\PaymentTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/PaymentTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\ProfileTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/ProfileTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\RefundTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/RefundTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\ResourceFactoryTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/ResourceFactoryTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\SettlementTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/SettlementTest.php', - '_PhpScoper5b87e821469bb\\Tests\\Mollie\\Api\\Resources\\SubscriptionTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/SubscriptionTest.php', + '_PhpScoper5bbb1f4b001f3\\Composer\\CaBundle\\CaBundle' => __DIR__ . '/..' . '/composer/ca-bundle/src/CaBundle.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Client' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Client.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\ClientInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Cookie\\CookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Cookie\\CookieJarInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Cookie\\FileCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Cookie\\SessionCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Cookie\\SetCookie' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\BadResponseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\ClientException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ClientException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\ConnectException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ConnectException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\GuzzleException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\RequestException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/RequestException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\SeekException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/SeekException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\ServerException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ServerException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\TooManyRedirectsException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Exception\\TransferException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TransferException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\HandlerStack' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/HandlerStack.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\CurlFactory' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\CurlFactoryInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\CurlHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\CurlMultiHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\EasyHandle' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\MockHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\Proxy' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/Proxy.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Handler\\StreamHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\MessageFormatter' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/MessageFormatter.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Middleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Middleware.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Pool' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Pool.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\PrepareBodyMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\AggregateException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/AggregateException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\CancellationException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/CancellationException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\Coroutine' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Coroutine.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\EachPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/EachPromise.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\FulfilledPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/FulfilledPromise.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\Promise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Promise.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromiseInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\PromisorInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromisorInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\RejectedPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectedPromise.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\RejectionException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectionException.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\TaskQueue' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueue.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\TaskQueueInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueueInterface.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\AppendStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/AppendStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\BufferStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/BufferStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\CachingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/CachingStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\DroppingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/DroppingStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\FnStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/FnStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\InflateStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/InflateStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\LazyOpenStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LazyOpenStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\LimitStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LimitStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\MessageTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MessageTrait.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\MultipartStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MultipartStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\NoSeekStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/NoSeekStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\PumpStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/PumpStream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\Request' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Request.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\Response' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Response.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\ServerRequest' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/ServerRequest.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\Stream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Stream.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\StreamDecoratorTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\RedirectMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RedirectMiddleware.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\RequestOptions' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RequestOptions.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\RetryMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RetryMiddleware.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\TransferStats' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/TransferStats.php', + '_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\UriTemplate' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/UriTemplate.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php', + '_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\CompatibilityCheckerTest' => __DIR__ . '/../..' . '/tests/Mollie/API/CompatibilityCheckerTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\BaseEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/BaseEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\ChargebackEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/PaymentChargebackEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\CustomerEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/CustomerEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\CustomerPaymentEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/CustomerPaymentEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\InvoiceEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/InvoiceEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\MandateEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/MandateEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\MethodEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/MethodEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\OrderEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/OrderEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\OrderLineEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/OrderLineEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\OrderRefundEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/OrderRefundEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\OrganizationEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/OrganizationEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\PaymentCaptureEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/PaymentCaptureEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\PaymentEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/PaymentEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\PaymentRefundEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/PaymentRefundEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\PermissionEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/PermissionEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\ProfileEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/ProfileEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\RefundEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/RefundEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\SettlementEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/SettlementEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\ShipmentEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/ShipmentEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Endpoints\\SubscriptionEndpointTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Endpoints/SubscriptionEndpointTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\MollieApiClientTest' => __DIR__ . '/../..' . '/tests/Mollie/API/MollieApiClientTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\InvoiceTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/InvoiceTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\OrderLineCollectionTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/OrderLineCollectionTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\OrderLineTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/OrderLineTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\OrderTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/OrderTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\PaymentTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/PaymentTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\ProfileTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/ProfileTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\RefundTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/RefundTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\ResourceFactoryTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/ResourceFactoryTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\SettlementTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/SettlementTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\ShipmentTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/ShipmentTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\Api\\Resources\\SubscriptionTest' => __DIR__ . '/../..' . '/tests/Mollie/API/Resources/SubscriptionTest.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\TestHelpers\\AmountObjectTestHelpers' => __DIR__ . '/../..' . '/tests/Mollie/TestHelpers/AmountObjectTestHelpers.php', + '_PhpScoper5bbb1f4b001f3\\Tests\\Mollie\\TestHelpers\\LinkObjectTestHelpers' => __DIR__ . '/../..' . '/tests/Mollie/TestHelpers/LinkObjectTestHelpers.php', ); public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit82030f8453ef92bd2040820af6890694::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit82030f8453ef92bd2040820af6890694::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit82030f8453ef92bd2040820af6890694::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInita3126e82b6f8a8825a16880fe8b70058::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInita3126e82b6f8a8825a16880fe8b70058::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInita3126e82b6f8a8825a16880fe8b70058::$classMap; }, null, ClassLoader::class); } diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/composer.json b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/composer.json index ff0a09f3..2771ecf6 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/composer.json +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/composer.json @@ -33,12 +33,12 @@ }, "autoload": { "psr-4": { - "_PhpScoper5b87e821469bb\\Composer\\CaBundle\\": "src" + "_PhpScoper5bbb1f4b001f3\\Composer\\CaBundle\\": "src" } }, "autoload-dev": { "psr-4": { - "_PhpScoper5b87e821469bb\\Composer\\CaBundle\\": "tests" + "_PhpScoper5bbb1f4b001f3\\Composer\\CaBundle\\": "tests" } }, "extra": { diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/src/CaBundle.php b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/src/CaBundle.php index 6718a0f6..bddf5c9b 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/src/CaBundle.php +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/ca-bundle/src/CaBundle.php @@ -8,10 +8,10 @@ * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ -namespace _PhpScoper5b87e821469bb\Composer\CaBundle; +namespace _PhpScoper5bbb1f4b001f3\Composer\CaBundle; -use _PhpScoper5b87e821469bb\Psr\Log\LoggerInterface; -use _PhpScoper5b87e821469bb\Symfony\Component\Process\PhpProcess; +use _PhpScoper5bbb1f4b001f3\Psr\Log\LoggerInterface; +use _PhpScoper5bbb1f4b001f3\Symfony\Component\Process\PhpProcess; /** * @author Chris Smith * @author Jordi Boggiano @@ -58,7 +58,7 @@ class CaBundle * @param LoggerInterface $logger optional logger for information about which CA files were loaded * @return string path to a CA bundle file or directory */ - public static function getSystemCaRootBundlePath(\_PhpScoper5b87e821469bb\Psr\Log\LoggerInterface $logger = null) + public static function getSystemCaRootBundlePath(\_PhpScoper5bbb1f4b001f3\Psr\Log\LoggerInterface $logger = null) { if (self::$caPath !== null) { return self::$caPath; @@ -149,7 +149,7 @@ public static function getBundledCaBundlePath() * * @return bool */ - public static function validateCaFile($filename, \_PhpScoper5b87e821469bb\Psr\Log\LoggerInterface $logger = null) + public static function validateCaFile($filename, \_PhpScoper5bbb1f4b001f3\Psr\Log\LoggerInterface $logger = null) { static $warned = \false; if (isset(self::$caFileValidity[$filename])) { @@ -212,7 +212,7 @@ public static function isOpensslParseSafe() return self::$useOpensslParse = \true; } // Symfony Process component is missing so we assume it is unsafe at this point - if (!\class_exists('_PhpScoper5b87e821469bb\\Symfony\\Component\\Process\\PhpProcess')) { + if (!\class_exists('_PhpScoper5bbb1f4b001f3\\Symfony\\Component\\Process\\PhpProcess')) { return self::$useOpensslParse = \false; } // This is where things get crazy, because distros backport security @@ -233,7 +233,7 @@ public static function isOpensslParseSafe() EOT; $script = '<' . "?php\n" . \sprintf($script, $cert); try { - $process = new \_PhpScoper5b87e821469bb\Symfony\Component\Process\PhpProcess($script); + $process = new \_PhpScoper5bbb1f4b001f3\Symfony\Component\Process\PhpProcess($script); $process->mustRun(); } catch (\Exception $e) { // In the case of any exceptions just accept it is not possible to diff --git a/catalog/controller/payment/mollie-api-client/vendor/composer/installed.json b/catalog/controller/payment/mollie-api-client/vendor/composer/installed.json index a72a2aa2..38ffd3a7 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/composer/installed.json +++ b/catalog/controller/payment/mollie-api-client/vendor/composer/installed.json @@ -34,7 +34,7 @@ "installation-source": "dist", "autoload": { "psr-4": { - "_PhpScoper5b87e821469bb\\Composer\\CaBundle\\": "src" + "_PhpScoper5bbb1f4b001f3\\Composer\\CaBundle\\": "src" } }, "notification-url": "https:\/\/packagist.org\/downloads\/", @@ -98,7 +98,7 @@ "src\/functions_include.php" ], "psr-4": { - "_PhpScoper5b87e821469bb\\GuzzleHttp\\": "src\/" + "_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\": "src\/" } }, "notification-url": "https:\/\/packagist.org\/downloads\/", @@ -155,7 +155,7 @@ "installation-source": "dist", "autoload": { "psr-4": { - "_PhpScoper5b87e821469bb\\GuzzleHttp\\Promise\\": "src\/" + "_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Promise\\": "src\/" }, "files": [ "src\/functions_include.php" @@ -212,7 +212,7 @@ "installation-source": "dist", "autoload": { "psr-4": { - "_PhpScoper5b87e821469bb\\GuzzleHttp\\Psr7\\": "src\/" + "_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Psr7\\": "src\/" }, "files": [ "src\/functions_include.php" @@ -272,7 +272,7 @@ "installation-source": "dist", "autoload": { "psr-4": { - "_PhpScoper5b87e821469bb\\Psr\\Http\\Message\\": "src\/" + "_PhpScoper5bbb1f4b001f3\\Psr\\Http\\Message\\": "src\/" } }, "notification-url": "https:\/\/packagist.org\/downloads\/", diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/composer.json b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/composer.json index 438e1420..14517709 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/composer.json +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/composer.json @@ -35,12 +35,12 @@ "src\/functions_include.php" ], "psr-4": { - "_PhpScoper5b87e821469bb\\GuzzleHttp\\": "src\/" + "_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\": "src\/" } }, "autoload-dev": { "psr-4": { - "_PhpScoper5b87e821469bb\\GuzzleHttp\\Tests\\": "tests\/" + "_PhpScoper5bbb1f4b001f3\\GuzzleHttp\\Tests\\": "tests\/" } }, "suggest": { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Client.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Client.php index d50e43a3..b0abaa89 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Client.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Client.php @@ -1,13 +1,13 @@ configureDefaults($config); } @@ -80,15 +80,15 @@ public function __call($method, $args) $opts = isset($args[1]) ? $args[1] : []; return \substr($method, -5) === 'Async' ? $this->requestAsync(\substr($method, 0, -5), $uri, $opts) : $this->request($method, $uri, $opts); } - public function sendAsync(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options = []) + public function sendAsync(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options = []) { // Merge the base URI into the request URI if needed. $options = $this->prepareDefaults($options); return $this->transfer($request->withUri($this->buildUri($request->getUri(), $options), $request->hasHeader('Host')), $options); } - public function send(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options = []) + public function send(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options = []) { - $options[\_PhpScoper5b87e821469bb\GuzzleHttp\RequestOptions::SYNCHRONOUS] = \true; + $options[\_PhpScoper5bbb1f4b001f3\GuzzleHttp\RequestOptions::SYNCHRONOUS] = \true; return $this->sendAsync($request, $options)->wait(); } public function requestAsync($method, $uri = '', array $options = []) @@ -103,14 +103,14 @@ public function requestAsync($method, $uri = '', array $options = []) if (\is_array($body)) { $this->invalidBody(); } - $request = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Request($method, $uri, $headers, $body, $version); + $request = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Request($method, $uri, $headers, $body, $version); // Remove the option so that they are not doubly-applied. unset($options['headers'], $options['body'], $options['version']); return $this->transfer($request, $options); } public function request($method, $uri = '', array $options = []) { - $options[\_PhpScoper5b87e821469bb\GuzzleHttp\RequestOptions::SYNCHRONOUS] = \true; + $options[\_PhpScoper5bbb1f4b001f3\GuzzleHttp\RequestOptions::SYNCHRONOUS] = \true; return $this->requestAsync($method, $uri, $options)->wait(); } public function getConfig($option = null) @@ -120,9 +120,9 @@ public function getConfig($option = null) private function buildUri($uri, array $config) { // for BC we accept null which would otherwise fail in uri_for - $uri = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\uri_for($uri === null ? '' : $uri); + $uri = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\uri_for($uri === null ? '' : $uri); if (isset($config['base_uri'])) { - $uri = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::resolve(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\uri_for($config['base_uri']), $uri); + $uri = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\UriResolver::resolve(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\uri_for($config['base_uri']), $uri); } return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri; } @@ -133,7 +133,7 @@ private function buildUri($uri, array $config) */ private function configureDefaults(array $config) { - $defaults = ['allow_redirects' => \_PhpScoper5b87e821469bb\GuzzleHttp\RedirectMiddleware::$defaultSettings, 'http_errors' => \true, 'decode_content' => \true, 'verify' => \true, 'cookies' => \false]; + $defaults = ['allow_redirects' => \_PhpScoper5bbb1f4b001f3\GuzzleHttp\RedirectMiddleware::$defaultSettings, 'http_errors' => \true, 'decode_content' => \true, 'verify' => \true, 'cookies' => \false]; // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set. // We can only trust the HTTP_PROXY environment variable in a CLI // process due to the fact that PHP has no reliable mechanism to @@ -150,7 +150,7 @@ private function configureDefaults(array $config) } $this->config = $config + $defaults; if (!empty($config['cookies']) && $config['cookies'] === \true) { - $this->config['cookies'] = new \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\CookieJar(); + $this->config['cookies'] = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\CookieJar(); } // Add the default user-agent header. if (!isset($this->config['headers'])) { @@ -212,7 +212,7 @@ private function prepareDefaults($options) * * @return Promise\PromiseInterface */ - private function transfer(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + private function transfer(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options) { // save_to -> sink if (isset($options['save_to'])) { @@ -227,9 +227,9 @@ private function transfer(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInter $request = $this->applyOptions($request, $options); $handler = $options['handler']; try { - return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\promise_for($handler($request, $options)); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\promise_for($handler($request, $options)); } catch (\Exception $e) { - return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($e); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\rejection_for($e); } } /** @@ -240,7 +240,7 @@ private function transfer(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInter * * @return RequestInterface */ - private function applyOptions(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array &$options) + private function applyOptions(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array &$options) { $modify = ['set_headers' => []]; if (isset($options['headers'])) { @@ -254,30 +254,30 @@ private function applyOptions(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI $options['body'] = \http_build_query($options['form_params'], '', '&'); unset($options['form_params']); // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); + $options['_conditional'] = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded'; } if (isset($options['multipart'])) { - $options['body'] = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\MultipartStream($options['multipart']); + $options['body'] = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\MultipartStream($options['multipart']); unset($options['multipart']); } if (isset($options['json'])) { - $options['body'] = \_PhpScoper5b87e821469bb\GuzzleHttp\json_encode($options['json']); + $options['body'] = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\json_encode($options['json']); unset($options['json']); // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); + $options['_conditional'] = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); $options['_conditional']['Content-Type'] = 'application/json'; } if (!empty($options['decode_content']) && $options['decode_content'] !== \true) { // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']); + $options['_conditional'] = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']); $modify['set_headers']['Accept-Encoding'] = $options['decode_content']; } if (isset($options['body'])) { if (\is_array($options['body'])) { $this->invalidBody(); } - $modify['body'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($options['body']); + $modify['body'] = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\stream_for($options['body']); unset($options['body']); } if (!empty($options['auth']) && \is_array($options['auth'])) { @@ -286,7 +286,7 @@ private function applyOptions(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI switch ($type) { case 'basic': // Ensure that we don't have the header in different case and set the new value. - $modify['set_headers'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\_caseless_remove(['Authorization'], $modify['set_headers']); + $modify['set_headers'] = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\_caseless_remove(['Authorization'], $modify['set_headers']); $modify['set_headers']['Authorization'] = 'Basic ' . \base64_encode("{$value[0]}:{$value[1]}"); break; case 'digest': @@ -318,11 +318,11 @@ private function applyOptions(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI throw new \InvalidArgumentException('sink must not be a boolean'); } } - $request = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\modify_request($request, $modify); - if ($request->getBody() instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\MultipartStream) { + $request = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\modify_request($request, $modify); + if ($request->getBody() instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\MultipartStream) { // Use a multipart/form-data POST if a Content-Type is not set. // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); + $options['_conditional'] = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary=' . $request->getBody()->getBoundary(); } // Merge in conditional headers if they are not present. @@ -334,7 +334,7 @@ private function applyOptions(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI $modify['set_headers'][$k] = $v; } } - $request = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\modify_request($request, $modify); + $request = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\modify_request($request, $modify); // Don't pass this internal value along to middleware/handlers. unset($options['_conditional']); } diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/ClientInterface.php index e4ed4da0..7216248d 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/ClientInterface.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/ClientInterface.php @@ -1,12 +1,12 @@ strictMode = $strictMode; foreach ($cookieArray as $cookie) { - if (!$cookie instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie) { - $cookie = new \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie($cookie); + if (!$cookie instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie) { + $cookie = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie($cookie); } $this->setCookie($cookie); } @@ -42,7 +42,7 @@ public static function fromArray(array $cookies, $domain) { $cookieJar = new self(); foreach ($cookies as $name => $value) { - $cookieJar->setCookie(new \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie(['Domain' => $domain, 'Name' => $name, 'Value' => $value, 'Discard' => \true])); + $cookieJar->setCookie(new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie(['Domain' => $domain, 'Name' => $name, 'Value' => $value, 'Discard' => \true])); } return $cookieJar; } @@ -61,7 +61,7 @@ public static function getCookieValue($value) * @param bool $allowSessionCookies If we should persist session cookies * @return bool */ - public static function shouldPersist(\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie, $allowSessionCookies = \false) + public static function shouldPersist(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie $cookie, $allowSessionCookies = \false) { if ($cookie->getExpires() || $allowSessionCookies) { if (!$cookie->getDiscard()) { @@ -90,7 +90,7 @@ public function getCookieByName($name) } public function toArray() { - return \array_map(function (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) { + return \array_map(function (\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie $cookie) { return $cookie->toArray(); }, $this->getIterator()->getArrayCopy()); } @@ -100,26 +100,26 @@ public function clear($domain = null, $path = null, $name = null) $this->cookies = []; return; } elseif (!$path) { - $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain) { + $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain) { return !$cookie->matchesDomain($domain); }); } elseif (!$name) { - $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain) { + $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain) { return !($cookie->matchesPath($path) && $cookie->matchesDomain($domain)); }); } else { - $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain, $name) { + $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain, $name) { return !($cookie->getName() == $name && $cookie->matchesPath($path) && $cookie->matchesDomain($domain)); }); } } public function clearSessionCookies() { - $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) { + $this->cookies = \array_filter($this->cookies, function (\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie $cookie) { return !$cookie->getDiscard() && $cookie->getExpires(); }); } - public function setCookie(\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) + public function setCookie(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie $cookie) { // If the name string is empty (but not 0), ignore the set-cookie // string entirely. @@ -175,11 +175,11 @@ public function getIterator() { return new \ArrayIterator(\array_values($this->cookies)); } - public function extractCookies(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) + public function extractCookies(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response) { if ($cookieHeader = $response->getHeader('Set-Cookie')) { foreach ($cookieHeader as $cookie) { - $sc = \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie::fromString($cookie); + $sc = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie::fromString($cookie); if (!$sc->getDomain()) { $sc->setDomain($request->getUri()->getHost()); } @@ -198,7 +198,7 @@ public function extractCookies(\_PhpScoper5b87e821469bb\Psr\Http\Message\Request * @param RequestInterface $request * @return string */ - private function getCookiePathFromRequest(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request) + private function getCookiePathFromRequest(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request) { $uriPath = $request->getUri()->getPath(); if ('' === $uriPath) { @@ -215,7 +215,7 @@ private function getCookiePathFromRequest(\_PhpScoper5b87e821469bb\Psr\Http\Mess } return \substr($uriPath, 0, $lastSlashPos); } - public function withCookieHeader(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request) + public function withCookieHeader(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request) { $values = []; $uri = $request->getUri(); @@ -235,7 +235,7 @@ public function withCookieHeader(\_PhpScoper5b87e821469bb\Psr\Http\Message\Reque * * @param SetCookie $cookie */ - private function removeCookieIfEmpty(\_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie $cookie) + private function removeCookieIfEmpty(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie $cookie) { $cookieValue = $cookie->getValue(); if ($cookieValue === null || $cookieValue === '') { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php index b331d4e8..445ac6c9 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php @@ -1,9 +1,9 @@ storeSessionCookies)) { + if (\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { $json[] = $cookie->toArray(); } } - $jsonStr = \_PhpScoper5b87e821469bb\GuzzleHttp\json_encode($json); + $jsonStr = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\json_encode($json); if (\false === \file_put_contents($filename, $jsonStr)) { throw new \RuntimeException("Unable to save file {$filename}"); } @@ -71,10 +71,10 @@ public function load($filename) } elseif ($json === '') { return; } - $data = \_PhpScoper5b87e821469bb\GuzzleHttp\json_decode($json, \true); + $data = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\json_decode($json, \true); if (\is_array($data)) { foreach (\json_decode($json, \true) as $cookie) { - $this->setCookie(new \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie($cookie)); + $this->setCookie(new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie($cookie)); } } elseif (\strlen($data)) { throw new \RuntimeException("Invalid cookie file: {$filename}"); diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php index 906a34e3..16c6a68c 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php @@ -1,11 +1,11 @@ storeSessionCookies)) { + if (\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { $json[] = $cookie->toArray(); } } @@ -57,7 +57,7 @@ protected function load() $data = \json_decode($_SESSION[$this->sessionKey], \true); if (\is_array($data)) { foreach ($data as $cookie) { - $this->setCookie(new \_PhpScoper5b87e821469bb\GuzzleHttp\Cookie\SetCookie($cookie)); + $this->setCookie(new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Cookie\SetCookie($cookie)); } } elseif (\strlen($data)) { throw new \RuntimeException("Invalid cookie data"); diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php index d5798d74..fecf565f 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php @@ -1,6 +1,6 @@ data as $k => $v) { if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== \false) { if ($k === 'Expires') { - $str .= 'Expires=' . \gmdate('_PhpScoper5b87e821469bb\\D, d M Y H:i:s \\G\\M\\T', $v) . '; '; + $str .= 'Expires=' . \gmdate('_PhpScoper5bbb1f4b001f3\\D, d M Y H:i:s \\G\\M\\T', $v) . '; '; } else { $str .= ($v === \true ? $k : "{$k}={$v}") . '; '; } diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php index 1e80f66d..941a52eb 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php @@ -1,15 +1,15 @@ getStatusCode() : 0; + $code = $response && !$response instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface ? $response->getStatusCode() : 0; parent::__construct($message, $code, $previous); $this->request = $request; $this->response = $response; @@ -34,9 +34,9 @@ public function __construct($message, \_PhpScoper5b87e821469bb\Psr\Http\Message\ * * @return RequestException */ - public static function wrapException(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, \Exception $e) + public static function wrapException(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, \Exception $e) { - return $e instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException ? $e : new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException($e->getMessage(), $request, null, $e); + return $e instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\RequestException ? $e : new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\RequestException($e->getMessage(), $request, null, $e); } /** * Factory method to create a new exception with a normalized error message @@ -48,7 +48,7 @@ public static function wrapException(\_PhpScoper5b87e821469bb\Psr\Http\Message\R * * @return self */ - public static function create(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response = null, \Exception $previous = null, array $ctx = []) + public static function create(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response = null, \Exception $previous = null, array $ctx = []) { if (!$response) { return new self('Error completing request', $request, null, $previous, $ctx); @@ -56,10 +56,10 @@ public static function create(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI $level = (int) \floor($response->getStatusCode() / 100); if ($level === 4) { $label = 'Client error'; - $className = \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ClientException::class; + $className = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\ClientException::class; } elseif ($level === 5) { $label = 'Server error'; - $className = \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ServerException::class; + $className = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\ServerException::class; } else { $label = 'Unsuccessful request'; $className = __CLASS__; @@ -84,7 +84,7 @@ public static function create(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI * * @return string|null */ - public static function getResponseBodySummary(\_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) + public static function getResponseBodySummary(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response) { $body = $response->getBody(); if (!$body->isSeekable()) { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php index e58ec7d5..a84cb992 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php @@ -1,15 +1,15 @@ stream = $stream; $msg = $msg ?: 'Could not seek the stream to position ' . $pos; diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php index 60941fa9..0c52a191 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php @@ -1,10 +1,10 @@ maxHandles = $maxHandles; } - public function create(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + public function create(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options) { if (isset($options['curl']['body_as_string'])) { $options['_body_as_string'] = $options['curl']['body_as_string']; unset($options['curl']['body_as_string']); } - $easy = new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle(); + $easy = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle(); $easy->request = $request; $easy->options = $options; $conf = $this->getDefaultConf($easy); @@ -48,7 +48,7 @@ public function create(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterfac \curl_setopt_array($easy->handle, $conf); return $easy; } - public function release(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy) + public function release(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle $easy) { $resource = $easy->handle; unset($easy->handle); @@ -77,7 +77,7 @@ public function release(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $ * * @return \GuzzleHttp\Promise\PromiseInterface */ - public static function finish(callable $handler, \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactoryInterface $factory) + public static function finish(callable $handler, \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle $easy, \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\CurlFactoryInterface $factory) { if (isset($easy->options['on_stats'])) { self::invokeStats($easy); @@ -92,15 +92,15 @@ public static function finish(callable $handler, \_PhpScoper5b87e821469bb\Guzzle if ($body->isSeekable()) { $body->rewind(); } - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\FulfilledPromise($easy->response); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\FulfilledPromise($easy->response); } - private static function invokeStats(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy) + private static function invokeStats(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle $easy) { $curlStats = \curl_getinfo($easy->handle); - $stats = new \_PhpScoper5b87e821469bb\GuzzleHttp\TransferStats($easy->request, $easy->response, $curlStats['total_time'], $easy->errno, $curlStats); + $stats = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\TransferStats($easy->request, $easy->response, $curlStats['total_time'], $easy->errno, $curlStats); \call_user_func($easy->options['on_stats'], $stats); } - private static function finishError(callable $handler, \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactoryInterface $factory) + private static function finishError(callable $handler, \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle $easy, \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\CurlFactoryInterface $factory) { // Get error information and release the handle to the factory. $ctx = ['errno' => $easy->errno, 'error' => \curl_error($easy->handle)] + \curl_getinfo($easy->handle); @@ -111,20 +111,20 @@ private static function finishError(callable $handler, \_PhpScoper5b87e821469bb\ } return self::createRejection($easy, $ctx); } - private static function createRejection(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, array $ctx) + private static function createRejection(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle $easy, array $ctx) { static $connectionErrors = [\CURLE_OPERATION_TIMEOUTED => \true, \CURLE_COULDNT_RESOLVE_HOST => \true, \CURLE_COULDNT_CONNECT => \true, \CURLE_SSL_CONNECT_ERROR => \true, \CURLE_GOT_NOTHING => \true]; // If an exception was encountered during the onHeaders event, then // return a rejected promise that wraps that exception. if ($easy->onHeadersException) { - return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for(new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException('An error was encountered during the on_headers event', $easy->request, $easy->response, $easy->onHeadersException, $ctx)); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\rejection_for(new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\RequestException('An error was encountered during the on_headers event', $easy->request, $easy->response, $easy->onHeadersException, $ctx)); } $message = \sprintf('cURL error %s: %s (%s)', $ctx['errno'], $ctx['error'], 'see http://curl.haxx.se/libcurl/c/libcurl-errors.html'); // Create a connection exception if it was a specific error code. - $error = isset($connectionErrors[$easy->errno]) ? new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ConnectException($message, $easy->request, null, $ctx) : new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException($message, $easy->request, $easy->response, null, $ctx); - return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($error); + $error = isset($connectionErrors[$easy->errno]) ? new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\ConnectException($message, $easy->request, null, $ctx) : new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\RequestException($message, $easy->request, $easy->response, null, $ctx); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\rejection_for($error); } - private function getDefaultConf(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy) + private function getDefaultConf(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle $easy) { $conf = ['_headers' => $easy->request->getHeaders(), \CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(), \CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), \CURLOPT_RETURNTRANSFER => \false, \CURLOPT_HEADER => \false, \CURLOPT_CONNECTTIMEOUT => 150]; if (\defined('CURLOPT_PROTOCOLS')) { @@ -140,7 +140,7 @@ private function getDefaultConf(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\Easy } return $conf; } - private function applyMethod(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) + private function applyMethod(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) { $body = $easy->request->getBody(); $size = $body->getSize(); @@ -159,7 +159,7 @@ private function applyMethod(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHan unset($conf[\CURLOPT_WRITEFUNCTION], $conf[\CURLOPT_READFUNCTION], $conf[\CURLOPT_FILE], $conf[\CURLOPT_INFILE]); } } - private function applyBody(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, array &$conf) + private function applyBody(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options, array &$conf) { $size = $request->hasHeader('Content-Length') ? (int) $request->getHeaderLine('Content-Length') : null; // Send the body as a string if the size is less than 1MB OR if the @@ -192,7 +192,7 @@ private function applyBody(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInte $conf[\CURLOPT_HTTPHEADER][] = 'Content-Type:'; } } - private function applyHeaders(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) + private function applyHeaders(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) { foreach ($conf['_headers'] as $name => $values) { foreach ($values as $value) { @@ -226,7 +226,7 @@ private function removeHeader($name, array &$options) } } } - private function applyHandlerOptions(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) + private function applyHandlerOptions(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) { $options = $easy->options; if (isset($options['verify'])) { @@ -265,12 +265,12 @@ private function applyHandlerOptions(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler if (isset($options['sink'])) { $sink = $options['sink']; if (!\is_string($sink)) { - $sink = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($sink); + $sink = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\stream_for($sink); } elseif (!\is_dir(\dirname($sink))) { // Ensure that the directory exists before failing in curl. throw new \RuntimeException(\sprintf('Directory %s does not exist for sink value of %s', \dirname($sink), $sink)); } else { - $sink = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LazyOpenStream($sink, 'w+'); + $sink = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\LazyOpenStream($sink, 'w+'); } $easy->sink = $sink; $conf[\CURLOPT_WRITEFUNCTION] = function ($ch, $write) use($sink) { @@ -279,7 +279,7 @@ private function applyHandlerOptions(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler } else { // Use a default temp stream if no sink was set. $conf[\CURLOPT_FILE] = \fopen('php://temp', 'w+'); - $easy->sink = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($conf[\CURLOPT_FILE]); + $easy->sink = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\stream_for($conf[\CURLOPT_FILE]); } $timeoutRequiresNoSignal = \false; if (isset($options['timeout'])) { @@ -308,7 +308,7 @@ private function applyHandlerOptions(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler $scheme = $easy->request->getUri()->getScheme(); if (isset($options['proxy'][$scheme])) { $host = $easy->request->getUri()->getHost(); - if (!isset($options['proxy']['no']) || !\_PhpScoper5b87e821469bb\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no'])) { + if (!isset($options['proxy']['no']) || !\_PhpScoper5bbb1f4b001f3\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no'])) { $conf[\CURLOPT_PROXY] = $options['proxy'][$scheme]; } } @@ -352,7 +352,7 @@ private function applyHandlerOptions(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler }; } if (!empty($options['debug'])) { - $conf[\CURLOPT_STDERR] = \_PhpScoper5b87e821469bb\GuzzleHttp\debug_resource($options['debug']); + $conf[\CURLOPT_STDERR] = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\debug_resource($options['debug']); $conf[\CURLOPT_VERBOSE] = \true; } } @@ -365,7 +365,7 @@ private function applyHandlerOptions(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler * error, causing the request to be sent through curl_multi_info_read() * without an error status. */ - private static function retryFailedRewind(callable $handler, \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy, array $ctx) + private static function retryFailedRewind(callable $handler, \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle $easy, array $ctx) { try { // Only rewind if the body has been read from. @@ -388,7 +388,7 @@ private static function retryFailedRewind(callable $handler, \_PhpScoper5b87e821 } return $handler($easy->request, $easy->options); } - private function createHeaderFn(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\EasyHandle $easy) + private function createHeaderFn(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\EasyHandle $easy) { if (isset($easy->options['on_headers'])) { $onHeaders = $easy->options['on_headers']; diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php index 2fe650c3..1326c66d 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php @@ -1,8 +1,8 @@ factory = isset($options['handle_factory']) ? $options['handle_factory'] : new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactory(3); + $this->factory = isset($options['handle_factory']) ? $options['handle_factory'] : new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\CurlFactory(3); } - public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + public function __invoke(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options) { if (isset($options['delay'])) { \usleep($options['delay'] * 1000); @@ -34,6 +34,6 @@ public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterf $easy = $this->factory->create($request, $options); \curl_exec($easy->handle); $easy->errno = \curl_errno($easy->handle); - return \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactory::finish($this, $easy, $this->factory); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\CurlFactory::finish($this, $easy, $this->factory); } } diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php index fb3d0fcd..1e6d83d7 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php @@ -1,11 +1,11 @@ factory = isset($options['handle_factory']) ? $options['handle_factory'] : new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactory(50); + $this->factory = isset($options['handle_factory']) ? $options['handle_factory'] : new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\CurlFactory(50); $this->selectTimeout = isset($options['select_timeout']) ? $options['select_timeout'] : 1; } public function __get($name) @@ -51,11 +51,11 @@ public function __destruct() unset($this->_mh); } } - public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + public function __invoke(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options) { $easy = $this->factory->create($request, $options); $id = (int) $easy->handle; - $promise = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise([$this, 'execute'], function () use($id) { + $promise = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\Promise([$this, 'execute'], function () use($id) { return $this->cancel($id); }); $this->addRequest(['easy' => $easy, 'deferred' => $promise]); @@ -77,7 +77,7 @@ public function tick() } } // Step through the task queue which may add additional requests. - \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\queue()->run(); + \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\queue()->run(); if ($this->active && \curl_multi_select($this->_mh, $this->selectTimeout) === -1) { // Perform a usleep if a select returns -1. // See: https://bugs.php.net/bug.php?id=61141 @@ -92,7 +92,7 @@ public function tick() */ public function execute() { - $queue = \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\queue(); + $queue = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\queue(); while ($this->handles || !$queue->isEmpty()) { // If there are no transfers, then sleep for the next delay if (!$this->active && $this->delays) { @@ -143,7 +143,7 @@ private function processMessages() $entry = $this->handles[$id]; unset($this->handles[$id], $this->delays[$id]); $entry['easy']->errno = $done['result']; - $entry['deferred']->resolve(\_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlFactory::finish($this, $entry['easy'], $this->factory)); + $entry['deferred']->resolve(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\CurlFactory::finish($this, $entry['easy'], $this->factory)); } } private function timeToNext() diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php index 104c4076..a073a639 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php @@ -1,11 +1,11 @@ headers), 3); - $headers = \_PhpScoper5b87e821469bb\GuzzleHttp\headers_from_lines($this->headers); - $normalizedKeys = \_PhpScoper5b87e821469bb\GuzzleHttp\normalize_header_keys($headers); + $headers = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\headers_from_lines($this->headers); + $normalizedKeys = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\normalize_header_keys($headers); if (!empty($this->options['decode_content']) && isset($normalizedKeys['content-encoding'])) { $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']]; unset($headers[$normalizedKeys['content-encoding']]); @@ -57,7 +57,7 @@ public function createResponse() } } // Attach a response to the easy handle with the parsed headers. - $this->response = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Response($startLine[1], $headers, $this->sink, \substr($startLine[0], 5), isset($startLine[2]) ? (string) $startLine[2] : null); + $this->response = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Response($startLine[1], $headers, $this->sink, \substr($startLine[0], 5), isset($startLine[2]) ? (string) $startLine[2] : null); } public function __get($name) { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php index 2b594691..99813a8e 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php @@ -1,14 +1,14 @@ queue) { throw new \OutOfBoundsException('Mock queue is empty'); @@ -69,13 +69,13 @@ public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterf $options['on_headers']($response); } catch (\Exception $e) { $msg = 'An error was encountered during the on_headers event'; - $response = new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException($msg, $request, $response, $e); + $response = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\RequestException($msg, $request, $response, $e); } } if (\is_callable($response)) { $response = \call_user_func($response, $request, $options); } - $response = $response instanceof \Exception ? \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($response) : \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\promise_for($response); + $response = $response instanceof \Exception ? \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\rejection_for($response) : \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\promise_for($response); return $response->then(function ($value) use($request, $options) { $this->invokeStats($request, $options, $value); if ($this->onFulfilled) { @@ -88,7 +88,7 @@ public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterf \fwrite($sink, $contents); } elseif (\is_string($sink)) { \file_put_contents($sink, $contents); - } elseif ($sink instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface) { + } elseif ($sink instanceof \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface) { $sink->write($contents); } } @@ -98,7 +98,7 @@ public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterf if ($this->onRejected) { \call_user_func($this->onRejected, $reason); } - return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($reason); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\rejection_for($reason); }); } /** @@ -108,10 +108,10 @@ public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterf public function append() { foreach (\func_get_args() as $value) { - if ($value instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface || $value instanceof \Exception || $value instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface || \is_callable($value)) { + if ($value instanceof \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface || $value instanceof \Exception || $value instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface || \is_callable($value)) { $this->queue[] = $value; } else { - throw new \InvalidArgumentException('Expected a response or ' . 'exception. Found ' . \_PhpScoper5b87e821469bb\GuzzleHttp\describe_type($value)); + throw new \InvalidArgumentException('Expected a response or ' . 'exception. Found ' . \_PhpScoper5bbb1f4b001f3\GuzzleHttp\describe_type($value)); } } } @@ -142,10 +142,10 @@ public function count() { return \count($this->queue); } - private function invokeStats(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response = null, $reason = null) + private function invokeStats(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response = null, $reason = null) { if (isset($options['on_stats'])) { - $stats = new \_PhpScoper5b87e821469bb\GuzzleHttp\TransferStats($request, $response, 0, $reason); + $stats = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\TransferStats($request, $response, 0, $reason); \call_user_func($options['on_stats'], $stats); } } diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php index 5b17d023..04f27efb 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php @@ -1,9 +1,9 @@ getMessage(); // This list can probably get more comprehensive. if (\strpos($message, 'getaddrinfo') || \strpos($message, 'Connection refused') || \strpos($message, "couldn't connect to host") || \strpos($message, "connection attempt failed")) { - $e = new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ConnectException($e->getMessage(), $request, $e); + $e = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\ConnectException($e->getMessage(), $request, $e); } - $e = \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException::wrapException($request, $e); + $e = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\RequestException::wrapException($request, $e); $this->invokeStats($options, $request, $startTime, null, $e); - return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($e); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\rejection_for($e); } } - private function invokeStats(array $options, \_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, $startTime, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response = null, $error = null) + private function invokeStats(array $options, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, $startTime, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response = null, $error = null) { if (isset($options['on_stats'])) { - $stats = new \_PhpScoper5b87e821469bb\GuzzleHttp\TransferStats($request, $response, \microtime(\true) - $startTime, $error, []); + $stats = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\TransferStats($request, $response, \microtime(\true) - $startTime, $error, []); \call_user_func($options['on_stats'], $stats); } } - private function createResponse(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, $stream, $startTime) + private function createResponse(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options, $stream, $startTime) { $hdrs = $this->lastHeaders; $this->lastHeaders = []; @@ -70,21 +70,21 @@ private function createResponse(\_PhpScoper5b87e821469bb\Psr\Http\Message\Reques $ver = \explode('/', $parts[0])[1]; $status = $parts[1]; $reason = isset($parts[2]) ? $parts[2] : null; - $headers = \_PhpScoper5b87e821469bb\GuzzleHttp\headers_from_lines($hdrs); + $headers = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\headers_from_lines($hdrs); list($stream, $headers) = $this->checkDecode($options, $headers, $stream); - $stream = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($stream); + $stream = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\stream_for($stream); $sink = $stream; if (\strcasecmp('HEAD', $request->getMethod())) { $sink = $this->createSink($stream, $options); } - $response = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Response($status, $headers, $sink, $ver, $reason); + $response = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Response($status, $headers, $sink, $ver, $reason); if (isset($options['on_headers'])) { try { $options['on_headers']($response); } catch (\Exception $e) { $msg = 'An error was encountered during the on_headers event'; - $ex = new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException($msg, $request, $response, $e); - return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($ex); + $ex = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\RequestException($msg, $request, $response, $e); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\rejection_for($ex); } } // Do not drain when the request is a HEAD request because they have @@ -93,25 +93,25 @@ private function createResponse(\_PhpScoper5b87e821469bb\Psr\Http\Message\Reques $this->drain($stream, $sink, $response->getHeaderLine('Content-Length')); } $this->invokeStats($options, $request, $startTime, $response, null); - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\FulfilledPromise($response); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\FulfilledPromise($response); } - private function createSink(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, array $options) + private function createSink(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface $stream, array $options) { if (!empty($options['stream'])) { return $stream; } $sink = isset($options['sink']) ? $options['sink'] : \fopen('php://temp', 'r+'); - return \is_string($sink) ? new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LazyOpenStream($sink, 'w+') : \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($sink); + return \is_string($sink) ? new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\LazyOpenStream($sink, 'w+') : \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\stream_for($sink); } private function checkDecode(array $options, array $headers, $stream) { // Automatically decode responses when instructed. if (!empty($options['decode_content'])) { - $normalizedKeys = \_PhpScoper5b87e821469bb\GuzzleHttp\normalize_header_keys($headers); + $normalizedKeys = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\normalize_header_keys($headers); if (isset($normalizedKeys['content-encoding'])) { $encoding = $headers[$normalizedKeys['content-encoding']]; if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') { - $stream = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\InflateStream(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\stream_for($stream)); + $stream = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\InflateStream(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\stream_for($stream)); $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']]; // Remove content-encoding header unset($headers[$normalizedKeys['content-encoding']]); @@ -141,13 +141,13 @@ private function checkDecode(array $options, array $headers, $stream) * @return StreamInterface * @throws \RuntimeException when the sink option is invalid. */ - private function drain(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $source, \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $sink, $contentLength) + private function drain(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface $source, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface $sink, $contentLength) { // If a content-length header is provided, then stop reading once // that number of bytes has been read. This can prevent infinitely // reading from a stream when dealing with servers that do not honor // Connection: Close headers. - \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\copy_to_stream($source, $sink, \strlen($contentLength) > 0 && (int) $contentLength > 0 ? (int) $contentLength : -1); + \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\copy_to_stream($source, $sink, \strlen($contentLength) > 0 && (int) $contentLength > 0 ? (int) $contentLength : -1); $sink->seek(0); $source->close(); return $sink; @@ -180,7 +180,7 @@ private function createResource(callable $callback) } return $resource; } - private function createStream(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + private function createStream(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options) { static $methods; if (!$methods) { @@ -234,27 +234,27 @@ private function createStream(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI return $resource; }); } - private function resolveHost(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + private function resolveHost(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options) { $uri = $request->getUri(); if (isset($options['force_ip_resolve']) && !\filter_var($uri->getHost(), \FILTER_VALIDATE_IP)) { if ('v4' === $options['force_ip_resolve']) { $records = \dns_get_record($uri->getHost(), \DNS_A); if (!isset($records[0]['ip'])) { - throw new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ConnectException(\sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request); + throw new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\ConnectException(\sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request); } $uri = $uri->withHost($records[0]['ip']); } elseif ('v6' === $options['force_ip_resolve']) { $records = \dns_get_record($uri->getHost(), \DNS_AAAA); if (!isset($records[0]['ipv6'])) { - throw new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\ConnectException(\sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request); + throw new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\ConnectException(\sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request); } $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']'); } } return $uri; } - private function getDefaultContext(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request) + private function getDefaultContext(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request) { $headers = ''; foreach ($request->getHeaders() as $name => $value) { @@ -274,32 +274,32 @@ private function getDefaultContext(\_PhpScoper5b87e821469bb\Psr\Http\Message\Req $context['http']['header'] = \rtrim($context['http']['header']); return $context; } - private function add_proxy(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + private function add_proxy(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) { if (!\is_array($value)) { $options['http']['proxy'] = $value; } else { $scheme = $request->getUri()->getScheme(); if (isset($value[$scheme])) { - if (!isset($value['no']) || !\_PhpScoper5b87e821469bb\GuzzleHttp\is_host_in_noproxy($request->getUri()->getHost(), $value['no'])) { + if (!isset($value['no']) || !\_PhpScoper5bbb1f4b001f3\GuzzleHttp\is_host_in_noproxy($request->getUri()->getHost(), $value['no'])) { $options['http']['proxy'] = $value[$scheme]; } } } } - private function add_timeout(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + private function add_timeout(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) { if ($value > 0) { $options['http']['timeout'] = $value; } } - private function add_verify(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + private function add_verify(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) { if ($value === \true) { // PHP 5.6 or greater will find the system cert by default. When // < 5.6, use the Guzzle bundled cacert. if (\PHP_VERSION_ID < 50600) { - $options['ssl']['cafile'] = \_PhpScoper5b87e821469bb\GuzzleHttp\default_ca_bundle(); + $options['ssl']['cafile'] = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\default_ca_bundle(); } } elseif (\is_string($value)) { $options['ssl']['cafile'] = $value; @@ -317,7 +317,7 @@ private function add_verify(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInt $options['ssl']['verify_peer_name'] = \true; $options['ssl']['allow_self_signed'] = \false; } - private function add_cert(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + private function add_cert(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) { if (\is_array($value)) { $options['ssl']['passphrase'] = $value[1]; @@ -328,7 +328,7 @@ private function add_cert(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInter } $options['ssl']['local_cert'] = $value; } - private function add_progress(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + private function add_progress(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) { $this->addNotification($params, function ($code, $a, $b, $c, $transferred, $total) use($value) { if ($code == \STREAM_NOTIFY_PROGRESS) { @@ -336,14 +336,14 @@ private function add_progress(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI } }); } - private function add_debug(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) + private function add_debug(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, &$options, $value, &$params) { if ($value === \false) { return; } static $map = [\STREAM_NOTIFY_CONNECT => 'CONNECT', \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', \STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', \STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', \STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', \STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', \STREAM_NOTIFY_PROGRESS => 'PROGRESS', \STREAM_NOTIFY_FAILURE => 'FAILURE', \STREAM_NOTIFY_COMPLETED => 'COMPLETED', \STREAM_NOTIFY_RESOLVE => 'RESOLVE']; static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max']; - $value = \_PhpScoper5b87e821469bb\GuzzleHttp\debug_resource($value); + $value = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\debug_resource($value); $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment(''); $this->addNotification($params, function () use($ident, $value, $map, $args) { $passed = \func_get_args(); diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/HandlerStack.php index 7016990c..ed573006 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/HandlerStack.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/HandlerStack.php @@ -1,8 +1,8 @@ push(\_PhpScoper5b87e821469bb\GuzzleHttp\Middleware::httpErrors(), 'http_errors'); - $stack->push(\_PhpScoper5b87e821469bb\GuzzleHttp\Middleware::redirect(), 'allow_redirects'); - $stack->push(\_PhpScoper5b87e821469bb\GuzzleHttp\Middleware::cookies(), 'cookies'); - $stack->push(\_PhpScoper5b87e821469bb\GuzzleHttp\Middleware::prepareBody(), 'prepare_body'); + $stack->push(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Middleware::httpErrors(), 'http_errors'); + $stack->push(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Middleware::redirect(), 'allow_redirects'); + $stack->push(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Middleware::cookies(), 'cookies'); + $stack->push(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Middleware::prepareBody(), 'prepare_body'); return $stack; } /** @@ -54,7 +54,7 @@ public function __construct(callable $handler = null) * @param RequestInterface $request * @param array $options */ - public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options) + public function __invoke(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options) { $handler = $this->resolve(); return $handler($request, $options); diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/MessageFormatter.php index c25a48fa..92636250 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/MessageFormatter.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/MessageFormatter.php @@ -1,10 +1,10 @@ getMethod() . ' ' . $request->getRequestTarget()) . ' HTTP/' . $request->getProtocolVersion() . "\r\n" . $this->headers($request); @@ -140,7 +140,7 @@ public function format(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterfac return $result; }, $this->template); } - private function headers(\_PhpScoper5b87e821469bb\Psr\Http\Message\MessageInterface $message) + private function headers(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\MessageInterface $message) { $result = ''; foreach ($message->getHeaders() as $name => $values) { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Middleware.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Middleware.php index d81a77da..40134a43 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Middleware.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Middleware.php @@ -1,14 +1,14 @@ withCookieHeader($request); @@ -53,12 +53,12 @@ public static function httpErrors() if (empty($options['http_errors'])) { return $handler($request, $options); } - return $handler($request, $options)->then(function (\_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) use($request, $handler) { + return $handler($request, $options)->then(function (\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response) use($request, $handler) { $code = $response->getStatusCode(); if ($code < 400) { return $response; } - throw \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException::create($request, $response); + throw \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\RequestException::create($request, $response); }); }; }; @@ -83,7 +83,7 @@ public static function history(&$container) return $value; }, function ($reason) use($request, &$container, $options) { $container[] = ['request' => $request, 'response' => null, 'error' => $reason, 'options' => $options]; - return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($reason); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\rejection_for($reason); }); }; }; @@ -124,7 +124,7 @@ public static function tap(callable $before = null, callable $after = null) public static function redirect() { return function (callable $handler) { - return new \_PhpScoper5b87e821469bb\GuzzleHttp\RedirectMiddleware($handler); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\RedirectMiddleware($handler); }; } /** @@ -145,7 +145,7 @@ public static function redirect() public static function retry(callable $decider, callable $delay = null) { return function (callable $handler) use($decider, $delay) { - return new \_PhpScoper5b87e821469bb\GuzzleHttp\RetryMiddleware($decider, $handler, $delay); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\RetryMiddleware($decider, $handler, $delay); }; } /** @@ -158,7 +158,7 @@ public static function retry(callable $decider, callable $delay = null) * * @return callable Returns a function that accepts the next handler. */ - public static function log(\_PhpScoper5b87e821469bb\Psr\Log\LoggerInterface $logger, \_PhpScoper5b87e821469bb\GuzzleHttp\MessageFormatter $formatter, $logLevel = \_PhpScoper5b87e821469bb\Psr\Log\LogLevel::INFO) + public static function log(\_PhpScoper5bbb1f4b001f3\Psr\Log\LoggerInterface $logger, \_PhpScoper5bbb1f4b001f3\GuzzleHttp\MessageFormatter $formatter, $logLevel = \_PhpScoper5bbb1f4b001f3\Psr\Log\LogLevel::INFO) { return function (callable $handler) use($logger, $formatter, $logLevel) { return function ($request, array $options) use($handler, $logger, $formatter, $logLevel) { @@ -167,10 +167,10 @@ public static function log(\_PhpScoper5b87e821469bb\Psr\Log\LoggerInterface $log $logger->log($logLevel, $message); return $response; }, function ($reason) use($logger, $request, $formatter) { - $response = $reason instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\RequestException ? $reason->getResponse() : null; + $response = $reason instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\RequestException ? $reason->getResponse() : null; $message = $formatter->format($request, $response, $reason); $logger->notice($message); - return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($reason); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\rejection_for($reason); }); }; }; @@ -184,7 +184,7 @@ public static function log(\_PhpScoper5b87e821469bb\Psr\Log\LoggerInterface $log public static function prepareBody() { return function (callable $handler) { - return new \_PhpScoper5b87e821469bb\GuzzleHttp\PrepareBodyMiddleware($handler); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\PrepareBodyMiddleware($handler); }; } /** diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Pool.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Pool.php index 1148d56b..84767858 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Pool.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/Pool.php @@ -1,10 +1,10 @@ $rfn) { - if ($rfn instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface) { + if ($rfn instanceof \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface) { (yield $key => $client->sendAsync($rfn, $opts)); } elseif (\is_callable($rfn)) { (yield $key => $rfn($opts)); @@ -56,7 +56,7 @@ public function __construct(\_PhpScoper5b87e821469bb\GuzzleHttp\ClientInterface } } }; - $this->each = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\EachPromise($requests(), $config); + $this->each = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\EachPromise($requests(), $config); } public function promise() { @@ -79,7 +79,7 @@ public function promise() * in the same order that the requests were sent. * @throws \InvalidArgumentException if the event format is incorrect. */ - public static function batch(\_PhpScoper5b87e821469bb\GuzzleHttp\ClientInterface $client, $requests, array $options = []) + public static function batch(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\ClientInterface $client, $requests, array $options = []) { $res = []; self::cmpCallback($options, 'fulfilled', $res); diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php index fbe4360c..550a1451 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php @@ -1,10 +1,10 @@ nextHandler; // Don't do anything if the request has no body. @@ -37,7 +37,7 @@ public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterf // Add a default content-type if possible. if (!$request->hasHeader('Content-Type')) { if ($uri = $request->getBody()->getMetadata('uri')) { - if ($type = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\mimetype_from_filename($uri)) { + if ($type = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\mimetype_from_filename($uri)) { $modify['set_headers']['Content-Type'] = $type; } } @@ -53,9 +53,9 @@ public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterf } // Add the expect header if needed. $this->addExpectHeader($request, $options, $modify); - return $fn(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\modify_request($request, $modify), $options); + return $fn(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\modify_request($request, $modify), $options); } - private function addExpectHeader(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, array &$modify) + private function addExpectHeader(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options, array &$modify) { // Determine if the Expect header should be used if ($request->hasHeader('Expect')) { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php index 4a3e1941..c98267a8 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php @@ -1,14 +1,14 @@ nextHandler; if (empty($options['allow_redirects'])) { @@ -52,7 +52,7 @@ public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterf if (empty($options['allow_redirects']['max'])) { return $fn($request, $options); } - return $fn($request, $options)->then(function (\_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) use($request, $options) { + return $fn($request, $options)->then(function (\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response) use($request, $options) { return $this->checkRedirect($request, $options, $response); }); } @@ -63,7 +63,7 @@ public function __invoke(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterf * * @return ResponseInterface|PromiseInterface */ - public function checkRedirect(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) + public function checkRedirect(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response) { if (\substr($response->getStatusCode(), 0, 1) != '3' || !$response->hasHeader('Location')) { return $response; @@ -81,9 +81,9 @@ public function checkRedirect(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI } return $promise; } - private function withTracking(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $promise, $uri, $statusCode) + private function withTracking(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface $promise, $uri, $statusCode) { - return $promise->then(function (\_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) use($uri, $statusCode) { + return $promise->then(function (\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response) use($uri, $statusCode) { // Note that we are pushing to the front of the list as this // would be an earlier response than what is currently present // in the history header. @@ -94,13 +94,13 @@ private function withTracking(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promis return $response->withHeader(self::HISTORY_HEADER, $historyHeader)->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader); }); } - private function guardMax(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array &$options) + private function guardMax(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array &$options) { $current = isset($options['__redirect_count']) ? $options['__redirect_count'] : 0; $options['__redirect_count'] = $current + 1; $max = $options['allow_redirects']['max']; if ($options['__redirect_count'] > $max) { - throw new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\TooManyRedirectsException("Will not follow more than {$max} redirects", $request); + throw new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\TooManyRedirectsException("Will not follow more than {$max} redirects", $request); } } /** @@ -110,7 +110,7 @@ private function guardMax(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInter * * @return RequestInterface */ - public function modifyRequest(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response) + public function modifyRequest(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response) { // Request modifications to apply. $modify = []; @@ -124,7 +124,7 @@ public function modifyRequest(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI $modify['body'] = ''; } $modify['uri'] = $this->redirectUri($request, $response, $protocols); - \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\rewind_body($request); + \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\rewind_body($request); // Add the Referer header if it is told to do so and only // add the header if we are not redirecting from https to http. if ($options['allow_redirects']['referer'] && $modify['uri']->getScheme() === $request->getUri()->getScheme()) { @@ -137,7 +137,7 @@ public function modifyRequest(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI if ($request->getUri()->getHost() !== $modify['uri']->getHost()) { $modify['remove_headers'][] = 'Authorization'; } - return \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\modify_request($request, $modify); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\modify_request($request, $modify); } /** * Set the appropriate URL on the request based on the location header @@ -148,12 +148,12 @@ public function modifyRequest(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestI * * @return UriInterface */ - private function redirectUri(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response, array $protocols) + private function redirectUri(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response, array $protocols) { - $location = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::resolve($request->getUri(), new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri($response->getHeaderLine('Location'))); + $location = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\UriResolver::resolve($request->getUri(), new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Uri($response->getHeaderLine('Location'))); // Ensure that the redirect URI is allowed based on the protocols. if (!\in_array($location->getScheme(), $protocols)) { - throw new \_PhpScoper5b87e821469bb\GuzzleHttp\Exception\BadResponseException(\sprintf('Redirect URI, %s, does not use one of the allowed redirect protocols: %s', $location, \implode(', ', $protocols)), $request, $response); + throw new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Exception\BadResponseException(\sprintf('Redirect URI, %s, does not use one of the allowed redirect protocols: %s', $location, \implode(', ', $protocols)), $request, $response); } return $location; } diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RequestOptions.php index a5db2e62..9f8a3d4d 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RequestOptions.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/RequestOptions.php @@ -1,6 +1,6 @@ nextHandler; return $fn($request, $options)->then($this->onFulfilled($request, $options), $this->onRejected($request, $options)); } - private function onFulfilled(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $req, array $options) + private function onFulfilled(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $req, array $options) { return function ($value) use($req, $options) { if (!\call_user_func($this->decider, $options['retries'], $req, $value, null)) { @@ -67,16 +67,16 @@ private function onFulfilled(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestIn return $this->doRetry($req, $options, $value); }; } - private function onRejected(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $req, array $options) + private function onRejected(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $req, array $options) { return function ($reason) use($req, $options) { if (!\call_user_func($this->decider, $options['retries'], $req, null, $reason)) { - return \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\rejection_for($reason); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\rejection_for($reason); } return $this->doRetry($req, $options); }; } - private function doRetry(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface $response = null) + private function doRetry(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $options, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface $response = null) { $options['delay'] = \call_user_func($this->delay, ++$options['retries'], $response); return $this($request, $options); diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/TransferStats.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/TransferStats.php index 33e847e9..d181a061 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/TransferStats.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/TransferStats.php @@ -1,10 +1,10 @@ request = $request; $this->response = $response; diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/UriTemplate.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/UriTemplate.php index ec8b6cc3..058b31bb 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/UriTemplate.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/UriTemplate.php @@ -1,6 +1,6 @@ expand($template, $variables); } @@ -93,14 +93,14 @@ function choose_handler() { $handler = null; if (\function_exists('curl_multi_exec') && \function_exists('curl_exec')) { - $handler = \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\Proxy::wrapSync(new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlMultiHandler(), new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlHandler()); + $handler = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\Proxy::wrapSync(new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\CurlMultiHandler(), new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\CurlHandler()); } elseif (\function_exists('curl_exec')) { - $handler = new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlHandler(); + $handler = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\CurlHandler(); } elseif (\function_exists('curl_multi_exec')) { - $handler = new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\CurlMultiHandler(); + $handler = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\CurlMultiHandler(); } if (\ini_get('allow_url_fopen')) { - $handler = $handler ? \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\Proxy::wrapStreaming($handler, new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\StreamHandler()) : new \_PhpScoper5b87e821469bb\GuzzleHttp\Handler\StreamHandler(); + $handler = $handler ? \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\Proxy::wrapStreaming($handler, new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\StreamHandler()) : new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Handler\StreamHandler(); } elseif (!$handler) { throw new \RuntimeException('GuzzleHttp requires cURL, the ' . 'allow_url_fopen ini setting, or a custom HTTP handler.'); } @@ -115,7 +115,7 @@ function default_user_agent() { static $defaultAgent = ''; if (!$defaultAgent) { - $defaultAgent = 'GuzzleHttp/' . \_PhpScoper5b87e821469bb\GuzzleHttp\Client::VERSION; + $defaultAgent = 'GuzzleHttp/' . \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Client::VERSION; if (\extension_loaded('curl') && \function_exists('curl_version')) { $defaultAgent .= ' curl/' . \curl_version()['version']; } diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/functions_include.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/functions_include.php index b5e43223..da426e7f 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/functions_include.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/guzzle/src/functions_include.php @@ -1,8 +1,8 @@ generator = $generatorFn(); - $this->result = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise(function () { + $this->result = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\Promise(function () { while (isset($this->currentPromise)) { $this->currentPromise->wait(); } diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/EachPromise.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/EachPromise.php index 914b5925..1aee2dcd 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/EachPromise.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/EachPromise.php @@ -1,12 +1,12 @@ mutex = \false; - $this->aggregate = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise(function () { + $this->aggregate = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\Promise(function () { \reset($this->pending); if (empty($this->pending) && !$this->iterable->valid()) { $this->aggregate->resolve(null); @@ -85,7 +85,7 @@ private function createPromise() while ($promise = \current($this->pending)) { \next($this->pending); $promise->wait(); - if ($this->aggregate->getState() !== \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::PENDING) { + if ($this->aggregate->getState() !== \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::PENDING) { return; } } @@ -166,7 +166,7 @@ private function advanceIterator() private function step($idx) { // If the promise was already resolved, then ignore this step. - if ($this->aggregate->getState() !== \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::PENDING) { + if ($this->aggregate->getState() !== \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::PENDING) { return; } unset($this->pending[$idx]); diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/FulfilledPromise.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/FulfilledPromise.php index d176a911..25b762c9 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/FulfilledPromise.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/FulfilledPromise.php @@ -1,6 +1,6 @@ value; $queue->add(static function () use($p, $value, $onFulfilled) { if ($p->getState() === self::PENDING) { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/Promise.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/Promise.php index 75254f86..ea79909a 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/Promise.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/Promise.php @@ -1,13 +1,13 @@ state === self::PENDING) { - $p = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise(null, [$this, 'cancel']); + $p = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\Promise(null, [$this, 'cancel']); $this->handlers[] = [$p, $onFulfilled, $onRejected]; $p->waitList = $this->waitList; $p->waitList[] = $this; @@ -49,9 +49,9 @@ public function otherwise(callable $onRejected) public function wait($unwrap = \true) { $this->waitIfPending(); - $inner = $this->result instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface ? $this->result->wait($unwrap) : $this->result; + $inner = $this->result instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface ? $this->result->wait($unwrap) : $this->result; if ($unwrap) { - if ($this->result instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface || $this->state === self::FULFILLED) { + if ($this->result instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface || $this->state === self::FULFILLED) { return $inner; } else { // It's rejected so "unwrap" and throw an exception. @@ -82,7 +82,7 @@ public function cancel() } // Reject the promise only if it wasn't rejected in a then callback. if ($this->state === self::PENDING) { - $this->reject(new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\CancellationException('Promise has been cancelled')); + $this->reject(new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\CancellationException('Promise has been cancelled')); } } public function resolve($value) @@ -125,7 +125,7 @@ private function settle($state, $value) self::callHandler($id, $value, $handler); } }); - } elseif ($value instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise && $value->getState() === self::PENDING) { + } elseif ($value instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\Promise && $value->getState() === self::PENDING) { // We can just merge our handlers onto the next promise. $value->handlers = \array_merge($value->handlers, $handlers); } else { @@ -217,10 +217,10 @@ private function invokeWaitList() foreach ($waitList as $result) { while (\true) { $result->waitIfPending(); - if ($result->result instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise) { + if ($result->result instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\Promise) { $result = $result->result; } else { - if ($result->result instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface) { + if ($result->result instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface) { $result->result->wait(\false); } break; diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/PromiseInterface.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/PromiseInterface.php index 3a2af089..a8f00bbb 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/PromiseInterface.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/PromiseInterface.php @@ -1,6 +1,6 @@ reason; - $p = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise([$queue, 'run']); + $p = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\Promise([$queue, 'run']); $queue->add(static function () use($p, $reason, $onRejected) { if ($p->getState() === self::PENDING) { try { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/RejectionException.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/RejectionException.php index f03dfe1b..181627d2 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/RejectionException.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/RejectionException.php @@ -1,6 +1,6 @@ run(); */ -class TaskQueue implements \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\TaskQueueInterface +class TaskQueue implements \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\TaskQueueInterface { private $enableShutdown = \true; private $queue = []; diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueueInterface.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueueInterface.php index 35727718..c42bd7a2 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueueInterface.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/TaskQueueInterface.php @@ -1,6 +1,6 @@ add(function () use($task, $promise) { try { $promise->resolve($task()); @@ -61,18 +61,18 @@ function task(callable $task) */ function promise_for($value) { - if ($value instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface) { + if ($value instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface) { return $value; } // Return a Guzzle promise that shadows the given promise. if (\method_exists($value, 'then')) { $wfn = \method_exists($value, 'wait') ? [$value, 'wait'] : null; $cfn = \method_exists($value, 'cancel') ? [$value, 'cancel'] : null; - $promise = new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise($wfn, $cfn); + $promise = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\Promise($wfn, $cfn); $value->then([$promise, 'resolve'], [$promise, 'reject']); return $promise; } - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\FulfilledPromise($value); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\FulfilledPromise($value); } /** * Creates a rejected promise for a reason if the reason is not a promise. If @@ -84,10 +84,10 @@ function promise_for($value) */ function rejection_for($reason) { - if ($reason instanceof \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface) { + if ($reason instanceof \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface) { return $reason; } - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\RejectedPromise($reason); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\RejectedPromise($reason); } /** * Create an exception for a rejected promise value. @@ -98,7 +98,7 @@ function rejection_for($reason) */ function exception_for($reason) { - return $reason instanceof \Exception || $reason instanceof \Throwable ? $reason : new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\RejectionException($reason); + return $reason instanceof \Exception || $reason instanceof \Throwable ? $reason : new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\RejectionException($reason); } /** * Returns an iterator for the given value. @@ -131,16 +131,16 @@ function iter_for($value) * * @return array */ -function inspect(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $promise) +function inspect(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface $promise) { try { - return ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::FULFILLED, 'value' => $promise->wait()]; - } catch (\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\RejectionException $e) { - return ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $e->getReason()]; + return ['state' => \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::FULFILLED, 'value' => $promise->wait()]; + } catch (\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\RejectionException $e) { + return ['state' => \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $e->getReason()]; } catch (\Throwable $e) { - return ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $e]; + return ['state' => \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $e]; } catch (\Exception $e) { - return ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $e]; + return ['state' => \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $e]; } } /** @@ -200,7 +200,7 @@ function all($promises) $results = []; return \each($promises, function ($value, $idx) use(&$results) { $results[$idx] = $value; - }, function ($reason, $idx, \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Promise $aggregate) { + }, function ($reason, $idx, \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\Promise $aggregate) { $aggregate->reject($reason); })->then(function () use(&$results) { \ksort($results); @@ -227,8 +227,8 @@ function some($count, $promises) { $results = []; $rejections = []; - return \each($promises, function ($value, $idx, \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $p) use(&$results, $count) { - if ($p->getState() !== \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::PENDING) { + return \each($promises, function ($value, $idx, \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface $p) use(&$results, $count) { + if ($p->getState() !== \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::PENDING) { return; } $results[$idx] = $value; @@ -239,7 +239,7 @@ function some($count, $promises) $rejections[] = $reason; })->then(function () use(&$results, &$rejections, $count) { if (\count($results) !== $count) { - throw new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\AggregateException('Not enough promises to fulfill count', $rejections); + throw new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\AggregateException('Not enough promises to fulfill count', $rejections); } \ksort($results); return \array_values($results); @@ -274,9 +274,9 @@ function settle($promises) { $results = []; return \each($promises, function ($value, $idx) use(&$results) { - $results[$idx] = ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::FULFILLED, 'value' => $value]; + $results[$idx] = ['state' => \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::FULFILLED, 'value' => $value]; }, function ($reason, $idx) use(&$results) { - $results[$idx] = ['state' => \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $reason]; + $results[$idx] = ['state' => \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $reason]; })->then(function () use(&$results) { \ksort($results); return $results; @@ -303,7 +303,7 @@ function settle($promises) */ function each($iterable, callable $onFulfilled = null, callable $onRejected = null) { - return (new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\EachPromise($iterable, ['fulfilled' => $onFulfilled, 'rejected' => $onRejected]))->promise(); + return (new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\EachPromise($iterable, ['fulfilled' => $onFulfilled, 'rejected' => $onRejected]))->promise(); } /** * Like each, but only allows a certain number of outstanding promises at any @@ -322,7 +322,7 @@ function each($iterable, callable $onFulfilled = null, callable $onRejected = nu */ function each_limit($iterable, $concurrency, callable $onFulfilled = null, callable $onRejected = null) { - return (new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\EachPromise($iterable, ['fulfilled' => $onFulfilled, 'rejected' => $onRejected, 'concurrency' => $concurrency]))->promise(); + return (new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\EachPromise($iterable, ['fulfilled' => $onFulfilled, 'rejected' => $onRejected, 'concurrency' => $concurrency]))->promise(); } /** * Like each_limit, but ensures that no promise in the given $iterable argument @@ -337,7 +337,7 @@ function each_limit($iterable, $concurrency, callable $onFulfilled = null, calla */ function each_limit_all($iterable, $concurrency, callable $onFulfilled = null) { - return each_limit($iterable, $concurrency, $onFulfilled, function ($reason, $idx, \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $aggregate) { + return each_limit($iterable, $concurrency, $onFulfilled, function ($reason, $idx, \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface $aggregate) { $aggregate->reject($reason); }); } @@ -348,9 +348,9 @@ function each_limit_all($iterable, $concurrency, callable $onFulfilled = null) * * @return bool */ -function is_fulfilled(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $promise) +function is_fulfilled(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface $promise) { - return $promise->getState() === \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::FULFILLED; + return $promise->getState() === \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::FULFILLED; } /** * Returns true if a promise is rejected. @@ -359,9 +359,9 @@ function is_fulfilled(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterfa * * @return bool */ -function is_rejected(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $promise) +function is_rejected(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface $promise) { - return $promise->getState() === \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::REJECTED; + return $promise->getState() === \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::REJECTED; } /** * Returns true if a promise is fulfilled or rejected. @@ -370,9 +370,9 @@ function is_rejected(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterfac * * @return bool */ -function is_settled(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface $promise) +function is_settled(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface $promise) { - return $promise->getState() !== \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface::PENDING; + return $promise->getState() !== \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\PromiseInterface::PENDING; } /** * @see Coroutine @@ -383,5 +383,5 @@ function is_settled(\_PhpScoper5b87e821469bb\GuzzleHttp\Promise\PromiseInterface */ function coroutine(callable $generatorFn) { - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Promise\Coroutine($generatorFn); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Promise\Coroutine($generatorFn); } diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/functions_include.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/functions_include.php index d3aaf8fe..457514dd 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/functions_include.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/promises/src/functions_include.php @@ -1,8 +1,8 @@ isReadable()) { throw new \InvalidArgumentException('Each stream must be readable'); diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/BufferStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/BufferStream.php index d782e09b..3b737ccd 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/BufferStream.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/BufferStream.php @@ -1,8 +1,8 @@ remoteStream = $stream; - $this->stream = $target ?: new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream(\fopen('php://temp', 'r+')); + $this->stream = $target ?: new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Stream(\fopen('php://temp', 'r+')); } public function getSize() { @@ -108,7 +108,7 @@ public function close() } private function cacheEntireStream() { - $target = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\FnStream(['write' => 'strlen']); + $target = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\FnStream(['write' => 'strlen']); copy_to_stream($this, $target); return $this->tell(); } diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/DroppingStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/DroppingStream.php index c12c2a96..100cfa22 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/DroppingStream.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/DroppingStream.php @@ -1,13 +1,13 @@ stream = $stream; $this->maxLength = $maxLength; diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/FnStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/FnStream.php index f0fe4dcb..ea79cd27 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/FnStream.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/FnStream.php @@ -1,15 +1,15 @@ read(10); $filenameHeaderLength = $this->getLengthOfPossibleFilenameHeader($stream, $header); // Skip the header, that is 10 + length of filename + 1 (nil) bytes - $stream = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LimitStream($stream, -1, 10 + $filenameHeaderLength); - $resource = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\StreamWrapper::getResource($stream); + $stream = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\LimitStream($stream, -1, 10 + $filenameHeaderLength); + $resource = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\StreamWrapper::getResource($stream); \stream_filter_append($resource, 'zlib.inflate', \STREAM_FILTER_READ); - $this->stream = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream($resource); + $this->stream = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Stream($resource); } /** * @param StreamInterface $stream * @param $header * @return int */ - private function getLengthOfPossibleFilenameHeader(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, $header) + private function getLengthOfPossibleFilenameHeader(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface $stream, $header) { $filename_header_length = 0; if (\substr(\bin2hex($header), 6, 2) === '08') { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LazyOpenStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LazyOpenStream.php index 5eef2dfb..b386ee06 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LazyOpenStream.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/LazyOpenStream.php @@ -1,13 +1,13 @@ stream = $stream; $this->setLimit($limit); diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MessageTrait.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MessageTrait.php index fe9fbe4d..f8b100f5 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MessageTrait.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MessageTrait.php @@ -1,8 +1,8 @@ stream; } - public function withBody(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $body) + public function withBody(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface $body) { if ($body === $this->stream) { return $this; diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MultipartStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MultipartStream.php index e6ac81bf..719dac2a 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MultipartStream.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/MultipartStream.php @@ -1,13 +1,13 @@ addElement($stream, $element); } @@ -65,7 +65,7 @@ protected function createStream(array $elements) $stream->addStream(stream_for("--{$this->boundary}--\r\n")); return $stream; } - private function addElement(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\AppendStream $stream, array $element) + private function addElement(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\AppendStream $stream, array $element) { foreach (['contents', 'name'] as $key) { if (!\array_key_exists($key, $element)) { @@ -87,7 +87,7 @@ private function addElement(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\AppendStrea /** * @return array */ - private function createElement($name, \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, $filename, array $headers) + private function createElement($name, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface $stream, $filename, array $headers) { // Set a default content-disposition header if one was no provided $disposition = $this->getHeader($headers, 'content-disposition'); diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/NoSeekStream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/NoSeekStream.php index c20dced9..f08aa5b1 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/NoSeekStream.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/NoSeekStream.php @@ -1,12 +1,12 @@ source = $source; $this->size = isset($options['size']) ? $options['size'] : null; $this->metadata = isset($options['metadata']) ? $options['metadata'] : []; - $this->buffer = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\BufferStream(); + $this->buffer = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\BufferStream(); } public function __toString() { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Request.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Request.php index 51f1b9ab..820702a0 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Request.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Request.php @@ -1,15 +1,15 @@ method = \strtoupper($method); $this->uri = $uri; @@ -78,7 +78,7 @@ public function getUri() { return $this->uri; } - public function withUri(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri, $preserveHost = \false) + public function withUri(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri, $preserveHost = \false) { if ($uri === $this->uri) { return $this; diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Response.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Response.php index 359b6425..14c28d5f 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Response.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Response.php @@ -1,13 +1,13 @@ $value) { - if ($value instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\UploadedFileInterface) { + if ($value instanceof \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UploadedFileInterface) { $normalized[$key] = $value; } elseif (\is_array($value) && isset($value['tmp_name'])) { $normalized[$key] = self::createUploadedFileFromSpec($value); @@ -98,7 +98,7 @@ private static function createUploadedFileFromSpec(array $value) if (\is_array($value['tmp_name'])) { return self::normalizeNestedFileSpec($value); } - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UploadedFile($value['tmp_name'], (int) $value['size'], (int) $value['error'], $value['name'], $value['type']); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\UploadedFile($value['tmp_name'], (int) $value['size'], (int) $value['error'], $value['name'], $value['type']); } /** * Normalize an array of file specifications. @@ -131,11 +131,11 @@ private static function normalizeNestedFileSpec(array $files = []) public static function fromGlobals() { $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET'; - $headers = \function_exists('_PhpScoper5b87e821469bb\\getallheaders') ? getallheaders() : []; + $headers = \function_exists('_PhpScoper5bbb1f4b001f3\\getallheaders') ? getallheaders() : []; $uri = self::getUriFromGlobals(); - $body = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LazyOpenStream('php://input', 'r+'); + $body = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\LazyOpenStream('php://input', 'r+'); $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? \str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1'; - $serverRequest = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER); + $serverRequest = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER); return $serverRequest->withCookieParams($_COOKIE)->withQueryParams($_GET)->withParsedBody($_POST)->withUploadedFiles(self::normalizeFiles($_FILES)); } /** @@ -145,7 +145,7 @@ public static function fromGlobals() */ public static function getUriFromGlobals() { - $uri = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri(''); + $uri = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Uri(''); $uri = $uri->withScheme(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http'); $hasPort = \false; if (isset($_SERVER['HTTP_HOST'])) { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Stream.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Stream.php index 8c275b50..bee2a3e8 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Stream.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Stream.php @@ -1,14 +1,14 @@ stream = $stream; } diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamWrapper.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamWrapper.php index 04867de0..f542025d 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamWrapper.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/StreamWrapper.php @@ -1,8 +1,8 @@ isReadable()) { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UploadedFile.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UploadedFile.php index e552b825..d1b57da2 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UploadedFile.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UploadedFile.php @@ -1,12 +1,12 @@ file = $streamOrFile; } elseif (\is_resource($streamOrFile)) { - $this->stream = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream($streamOrFile); - } elseif ($streamOrFile instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface) { + $this->stream = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Stream($streamOrFile); + } elseif ($streamOrFile instanceof \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface) { $this->stream = $streamOrFile; } else { throw new \InvalidArgumentException('Invalid stream or file provided for UploadedFile'); @@ -84,7 +84,7 @@ private function setError($error) if (\false === \is_int($error)) { throw new \InvalidArgumentException('Upload file error status must be an integer'); } - if (\false === \in_array($error, \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UploadedFile::$errors)) { + if (\false === \in_array($error, \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\UploadedFile::$errors)) { throw new \InvalidArgumentException('Invalid error status for UploadedFile'); } $this->error = $error; @@ -173,10 +173,10 @@ private function validateActive() public function getStream() { $this->validateActive(); - if ($this->stream instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface) { + if ($this->stream instanceof \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface) { return $this->stream; } - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LazyOpenStream($this->file, 'r+'); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\LazyOpenStream($this->file, 'r+'); } /** * {@inheritdoc} @@ -198,7 +198,7 @@ public function moveTo($targetPath) if ($this->file) { $this->moved = \php_sapi_name() == 'cli' ? \rename($this->file, $targetPath) : \move_uploaded_file($this->file, $targetPath); } else { - copy_to_stream($this->getStream(), new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\LazyOpenStream($targetPath, 'w')); + copy_to_stream($this->getStream(), new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\LazyOpenStream($targetPath, 'w')); $this->moved = \true; } if (\false === $this->moved) { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Uri.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Uri.php index 52890934..dc0cf52d 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Uri.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/Uri.php @@ -1,8 +1,8 @@ getPort() === null || isset(self::$defaultPorts[$uri->getScheme()]) && $uri->getPort() === self::$defaultPorts[$uri->getScheme()]; } @@ -132,7 +132,7 @@ public static function isDefaultPort(\_PhpScoper5b87e821469bb\Psr\Http\Message\U * @see Uri::isRelativePathReference * @link https://tools.ietf.org/html/rfc3986#section-4 */ - public static function isAbsolute(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + public static function isAbsolute(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri) { return $uri->getScheme() !== ''; } @@ -146,7 +146,7 @@ public static function isAbsolute(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriI * @return bool * @link https://tools.ietf.org/html/rfc3986#section-4.2 */ - public static function isNetworkPathReference(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + public static function isNetworkPathReference(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri) { return $uri->getScheme() === '' && $uri->getAuthority() !== ''; } @@ -160,7 +160,7 @@ public static function isNetworkPathReference(\_PhpScoper5b87e821469bb\Psr\Http\ * @return bool * @link https://tools.ietf.org/html/rfc3986#section-4.2 */ - public static function isAbsolutePathReference(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + public static function isAbsolutePathReference(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri) { return $uri->getScheme() === '' && $uri->getAuthority() === '' && isset($uri->getPath()[0]) && $uri->getPath()[0] === '/'; } @@ -174,7 +174,7 @@ public static function isAbsolutePathReference(\_PhpScoper5b87e821469bb\Psr\Http * @return bool * @link https://tools.ietf.org/html/rfc3986#section-4.2 */ - public static function isRelativePathReference(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + public static function isRelativePathReference(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri) { return $uri->getScheme() === '' && $uri->getAuthority() === '' && (!isset($uri->getPath()[0]) || $uri->getPath()[0] !== '/'); } @@ -191,10 +191,10 @@ public static function isRelativePathReference(\_PhpScoper5b87e821469bb\Psr\Http * @return bool * @link https://tools.ietf.org/html/rfc3986#section-4.4 */ - public static function isSameDocumentReference(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri, \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $base = null) + public static function isSameDocumentReference(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $base = null) { if ($base !== null) { - $uri = \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::resolve($base, $uri); + $uri = \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\UriResolver::resolve($base, $uri); return $uri->getScheme() === $base->getScheme() && $uri->getAuthority() === $base->getAuthority() && $uri->getPath() === $base->getPath() && $uri->getQuery() === $base->getQuery(); } return $uri->getScheme() === '' && $uri->getAuthority() === '' && $uri->getPath() === '' && $uri->getQuery() === ''; @@ -211,7 +211,7 @@ public static function isSameDocumentReference(\_PhpScoper5b87e821469bb\Psr\Http */ public static function removeDotSegments($path) { - return \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::removeDotSegments($path); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\UriResolver::removeDotSegments($path); } /** * Converts the relative URI into a new URI that is resolved against the base URI. @@ -224,12 +224,12 @@ public static function removeDotSegments($path) * @deprecated since version 1.4. Use UriResolver::resolve instead. * @see UriResolver::resolve */ - public static function resolve(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $base, $rel) + public static function resolve(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $base, $rel) { - if (!$rel instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface) { + if (!$rel instanceof \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface) { $rel = new self($rel); } - return \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::resolve($base, $rel); + return \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\UriResolver::resolve($base, $rel); } /** * Creates a new URI with a specific query string value removed. @@ -242,7 +242,7 @@ public static function resolve(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInte * * @return UriInterface */ - public static function withoutQueryValue(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri, $key) + public static function withoutQueryValue(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri, $key) { $current = $uri->getQuery(); if ($current === '') { @@ -269,7 +269,7 @@ public static function withoutQueryValue(\_PhpScoper5b87e821469bb\Psr\Http\Messa * * @return UriInterface */ - public static function withQueryValue(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri, $key, $value) + public static function withQueryValue(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri, $key, $value) { $current = $uri->getQuery(); if ($current === '') { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriNormalizer.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriNormalizer.php index 51a52537..bee41ff6 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriNormalizer.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriNormalizer.php @@ -1,8 +1,8 @@ getScheme() === 'file' && $uri->getHost() === 'localhost') { $uri = $uri->withHost(''); } - if ($flags & self::REMOVE_DEFAULT_PORT && $uri->getPort() !== null && \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri::isDefaultPort($uri)) { + if ($flags & self::REMOVE_DEFAULT_PORT && $uri->getPort() !== null && \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Uri::isDefaultPort($uri)) { $uri = $uri->withPort(null); } - if ($flags & self::REMOVE_DOT_SEGMENTS && !\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri::isRelativePathReference($uri)) { - $uri = $uri->withPath(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\UriResolver::removeDotSegments($uri->getPath())); + if ($flags & self::REMOVE_DOT_SEGMENTS && !\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Uri::isRelativePathReference($uri)) { + $uri = $uri->withPath(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\UriResolver::removeDotSegments($uri->getPath())); } if ($flags & self::REMOVE_DUPLICATE_SLASHES) { $uri = $uri->withPath(\preg_replace('#//++#', '/', $uri->getPath())); @@ -152,11 +152,11 @@ public static function normalize(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriIn * @return bool * @link https://tools.ietf.org/html/rfc3986#section-6.1 */ - public static function isEquivalent(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri1, \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS) + public static function isEquivalent(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri1, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS) { return (string) self::normalize($uri1, $normalizations) === (string) self::normalize($uri2, $normalizations); } - private static function capitalizePercentEncoding(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + private static function capitalizePercentEncoding(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri) { $regex = '/(?:%[A-Fa-f0-9]{2})++/'; $callback = function (array $match) { @@ -164,7 +164,7 @@ private static function capitalizePercentEncoding(\_PhpScoper5b87e821469bb\Psr\H }; return $uri->withPath(\preg_replace_callback($regex, $callback, $uri->getPath()))->withQuery(\preg_replace_callback($regex, $callback, $uri->getQuery())); } - private static function decodeUnreservedCharacters(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $uri) + private static function decodeUnreservedCharacters(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $uri) { $regex = '/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i'; $callback = function (array $match) { diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriResolver.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriResolver.php index 4883c7e8..d53941935 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriResolver.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/UriResolver.php @@ -1,8 +1,8 @@ getQuery(); } } - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri(\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri::composeComponents($base->getScheme(), $targetAuthority, $targetPath, $targetQuery, $rel->getFragment())); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Uri(\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Uri::composeComponents($base->getScheme(), $targetAuthority, $targetPath, $targetQuery, $rel->getFragment())); } /** * Returns the target URI as a relative reference from the base URI. @@ -119,12 +119,12 @@ public static function resolve(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInte * * @return UriInterface The relative URI reference */ - public static function relativize(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $base, \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $target) + public static function relativize(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $base, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $target) { if ($target->getScheme() !== '' && ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '')) { return $target; } - if (\_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri::isRelativePathReference($target)) { + if (\_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Uri::isRelativePathReference($target)) { // As the target is already highly relative we return it as-is. It would be possible to resolve // the target with `$target = self::resolve($base, $target);` and then try make it more relative // by removing a duplicate query. But let's not do that automatically. @@ -153,7 +153,7 @@ public static function relativize(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriI } return $emptyPathUri; } - private static function getRelativePath(\_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $base, \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface $target) + private static function getRelativePath(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $base, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface $target) { $sourceSegments = \explode('/', $base->getPath()); $targetSegments = \explode('/', $target->getPath()); diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions.php index b970edea..0dc2ca9a 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions.php @@ -1,13 +1,13 @@ getMethod() . ' ' . $message->getRequestTarget()) . ' HTTP/' . $message->getProtocolVersion(); if (!$message->hasHeader('host')) { $msg .= "\r\nHost: " . $message->getUri()->getHost(); } - } elseif ($message instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\ResponseInterface) { + } elseif ($message instanceof \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ResponseInterface) { $msg = 'HTTP/' . $message->getProtocolVersion() . ' ' . $message->getStatusCode() . ' ' . $message->getReasonPhrase(); } else { throw new \InvalidArgumentException('Unknown message type'); @@ -46,10 +46,10 @@ function str(\_PhpScoper5b87e821469bb\Psr\Http\Message\MessageInterface $message */ function uri_for($uri) { - if ($uri instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\UriInterface) { + if ($uri instanceof \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\UriInterface) { return $uri; } elseif (\is_string($uri)) { - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Uri($uri); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Uri($uri); } throw new \InvalidArgumentException('URI must be a string or UriInterface'); } @@ -74,16 +74,16 @@ function stream_for($resource = '', array $options = []) \fwrite($stream, $resource); \fseek($stream, 0); } - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream($stream, $options); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Stream($stream, $options); } switch (\gettype($resource)) { case 'resource': - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream($resource, $options); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Stream($resource, $options); case 'object': - if ($resource instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface) { + if ($resource instanceof \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface) { return $resource; } elseif ($resource instanceof \Iterator) { - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\PumpStream(function () use($resource) { + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\PumpStream(function () use($resource) { if (!$resource->valid()) { return \false; } @@ -96,10 +96,10 @@ function stream_for($resource = '', array $options = []) } break; case 'NULL': - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Stream(\fopen('php://temp', 'r+'), $options); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Stream(\fopen('php://temp', 'r+'), $options); } if (\is_callable($resource)) { - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\PumpStream($resource, $options); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\PumpStream($resource, $options); } throw new \InvalidArgumentException('Invalid resource type: ' . \gettype($resource)); } @@ -179,7 +179,7 @@ function normalize_header($header) * * @return RequestInterface */ -function modify_request(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterface $request, array $changes) +function modify_request(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\RequestInterface $request, array $changes) { if (!$changes) { return $request; @@ -211,10 +211,10 @@ function modify_request(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterfa if (isset($changes['query'])) { $uri = $uri->withQuery($changes['query']); } - if ($request instanceof \_PhpScoper5b87e821469bb\Psr\Http\Message\ServerRequestInterface) { - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\ServerRequest(isset($changes['method']) ? $changes['method'] : $request->getMethod(), $uri, $headers, isset($changes['body']) ? $changes['body'] : $request->getBody(), isset($changes['version']) ? $changes['version'] : $request->getProtocolVersion(), $request->getServerParams()); + if ($request instanceof \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\ServerRequestInterface) { + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\ServerRequest(isset($changes['method']) ? $changes['method'] : $request->getMethod(), $uri, $headers, isset($changes['body']) ? $changes['body'] : $request->getBody(), isset($changes['version']) ? $changes['version'] : $request->getProtocolVersion(), $request->getServerParams()); } - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Request(isset($changes['method']) ? $changes['method'] : $request->getMethod(), $uri, $headers, isset($changes['body']) ? $changes['body'] : $request->getBody(), isset($changes['version']) ? $changes['version'] : $request->getProtocolVersion()); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Request(isset($changes['method']) ? $changes['method'] : $request->getMethod(), $uri, $headers, isset($changes['body']) ? $changes['body'] : $request->getBody(), isset($changes['version']) ? $changes['version'] : $request->getProtocolVersion()); } /** * Attempts to rewind a message body and throws an exception on failure. @@ -226,7 +226,7 @@ function modify_request(\_PhpScoper5b87e821469bb\Psr\Http\Message\RequestInterfa * * @throws \RuntimeException */ -function rewind_body(\_PhpScoper5b87e821469bb\Psr\Http\Message\MessageInterface $message) +function rewind_body(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\MessageInterface $message) { $body = $message->getBody(); if ($body->tell()) { @@ -269,7 +269,7 @@ function try_fopen($filename, $mode) * @return string * @throws \RuntimeException on error. */ -function copy_to_string(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, $maxLen = -1) +function copy_to_string(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface $stream, $maxLen = -1) { $buffer = ''; if ($maxLen === -1) { @@ -306,7 +306,7 @@ function copy_to_string(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterfac * * @throws \RuntimeException on error. */ -function copy_to_stream(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $source, \_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $dest, $maxLen = -1) +function copy_to_stream(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface $source, \_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface $dest, $maxLen = -1) { $bufferSize = 8192; if ($maxLen === -1) { @@ -338,7 +338,7 @@ function copy_to_stream(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterfac * @return string Returns the hash of the stream * @throws \RuntimeException on error. */ -function hash(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, $algo, $rawOutput = \false) +function hash(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface $stream, $algo, $rawOutput = \false) { $pos = $stream->tell(); if ($pos > 0) { @@ -360,7 +360,7 @@ function hash(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, * * @return string|bool */ -function readline(\_PhpScoper5b87e821469bb\Psr\Http\Message\StreamInterface $stream, $maxLength = null) +function readline(\_PhpScoper5bbb1f4b001f3\Psr\Http\Message\StreamInterface $stream, $maxLength = null) { $buffer = ''; $size = 0; @@ -393,7 +393,7 @@ function parse_request($message) } $parts = \explode(' ', $data['start-line'], 3); $version = isset($parts[2]) ? \explode('/', $parts[2])[1] : '1.1'; - $request = new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Request($parts[0], $matches[1] === '/' ? _parse_request_uri($parts[1], $data['headers']) : $parts[1], $data['headers'], $data['body'], $version); + $request = new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Request($parts[0], $matches[1] === '/' ? _parse_request_uri($parts[1], $data['headers']) : $parts[1], $data['headers'], $data['body'], $version); return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]); } /** @@ -413,7 +413,7 @@ function parse_response($message) throw new \InvalidArgumentException('Invalid response string'); } $parts = \explode(' ', $data['start-line'], 3); - return new \_PhpScoper5b87e821469bb\GuzzleHttp\Psr7\Response($parts[1], $data['headers'], $data['body'], \explode('/', $parts[0])[1], isset($parts[2]) ? $parts[2] : null); + return new \_PhpScoper5bbb1f4b001f3\GuzzleHttp\Psr7\Response($parts[1], $data['headers'], $data['body'], \explode('/', $parts[0])[1], isset($parts[2]) ? $parts[2] : null); } /** * Parse a query string into an associative array. diff --git a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions_include.php b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions_include.php index 8003b008..212874d4 100644 --- a/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions_include.php +++ b/catalog/controller/payment/mollie-api-client/vendor/guzzlehttp/psr7/src/functions_include.php @@ -1,8 +1,8 @@ getOrder($order_id); } + //Get order products + protected function getOrderProducts($order_id) + { + $model = Util::load()->model("payment/mollie_" . static::MODULE_NAME); + + return $model->getOrderProducts($order_id); + } + + //Get tax rate + protected function getTaxRate() + { + $model = Util::load()->model("payment/mollie_" . static::MODULE_NAME); + + return $model->getTaxRate(); + } + + //Get Coupon Details + protected function getCouponDetails($orderID) + { + $model = Util::load()->model("payment/mollie_" . static::MODULE_NAME); + + return $model->getCouponDetails($orderID); + } + /** * This gets called by OpenCart at the final checkout step and should generate a confirmation button. * @return string @@ -175,37 +199,107 @@ public function payment() try { $data = array( "amount" => ["currency" => $currency, "value" => (string)number_format((float)$amount, 2, '.', '')], - "description" => $description, + "orderNumber" => $order['order_id'], "redirectUrl" => $return_url, "webhookUrl" => $this->getWebhookUrl(), - "metadata" => array("order_id" => $order['order_id']), + "metadata" => array("order_id" => $order['order_id'], "description" => $description), "method" => static::MODULE_NAME, - "issuer" => $issuer, ); + + $data['payment'] = ["issuer" => $issuer]; + + //Order line data + $orderProducts = $this->getOrderProducts($order['order_id']); + $lines = array(); + + //Get VAT rate + $vatRate = $this->getTaxRate(); + foreach($orderProducts as $orderProduct) { + $total = $orderProduct['total'] + ($orderProduct['tax'] * $orderProduct['quantity']); + $vatAmount = $total * ( $vatRate / (100 + $vatRate)); + $lines[] = array( + 'type' => 'physical', + 'name' => $orderProduct['name'], + 'quantity' => $orderProduct['quantity'], + 'unitPrice' => ["currency" => $currency, "value" => (string)number_format((float)($orderProduct['price'] + $orderProduct['tax']), 2, '.', '')], + 'totalAmount' => ["currency" => $currency, "value" => (string)number_format((float)$total, 2, '.', '')], + 'vatRate' => (string)number_format((float)$vatRate, 2, '.', ''), + 'vatAmount' => ["currency" => $currency, "value" => (string)number_format((float)$vatAmount, 2, '.', '')] + ); + } + + //Check for shipping fee + if(isset($this->session->data['shipping_method'])) { + $title = $this->session->data['shipping_method']['title']; + $cost = $this->session->data['shipping_method']['cost']; + $taxClass = $this->session->data['shipping_method']['tax_class_id']; + $costWithTax = $this->tax->calculate($cost, $taxClass, $this->config->get('config_tax')); + $shippingVATAmount = $costWithTax * ( $vatRate / (100 + $vatRate)); + $lineForShipping[] = array( + 'type' => 'shipping_fee', + 'name' => $title, + 'quantity' => 1, + 'unitPrice' => ["currency" => $currency, "value" => (string)number_format((float)$costWithTax, 2, '.', '')], + 'totalAmount' => ["currency" => $currency, "value" => (string)number_format((float)$costWithTax, 2, '.', '')], + 'vatRate' => (string)number_format((float)$vatRate, 2, '.', ''), + 'vatAmount' => ["currency" => $currency, "value" => (string)number_format((float)$shippingVATAmount, 2, '.', '')] + ); + + $lines = array_merge($lines, $lineForShipping); + } + + //Check if coupon applied + if(isset($this->session->data['coupon'])) { + //Get coupon data + $coupon = $this->getCouponDetails($order['order_id']); + $taxClass = $this->session->data['shipping_method']['tax_class_id']; + $unitPriceWithTax = $this->tax->calculate($coupon['value'], $taxClass, $this->config->get('config_tax')); + $couponVATAmount = $unitPriceWithTax * ( $vatRate / (100 + $vatRate)); + $lineForCoupon[] = array( + 'type' => 'store_credit', + 'name' => $coupon['title'], + 'quantity' => 1, + 'unitPrice' => ["currency" => $currency, "value" => (string)number_format((float)$unitPriceWithTax, 2, '.', '')], + 'totalAmount' => ["currency" => $currency, "value" => (string)number_format((float)$unitPriceWithTax, 2, '.', '')], + 'vatRate' => (string)number_format((float)$vatRate, 2, '.', ''), + 'vatAmount' => ["currency" => $currency, "value" => (string)number_format((float)$couponVATAmount, 2, '.', '')] + ); + + $lines = array_merge($lines, $lineForCoupon); + } + + $data['lines'] = $lines; + /* * This data is sent along for credit card payments / fraud checks. You can remove this but you will * have a higher conversion if you leave it here. */ - $data["billingAddress"] = [ - "streetAndNumber" => $order['payment_address_1'] . ' ' . $order['payment_address_2'], - "city" => $order['payment_city'], - "region" => $order['payment_zone'], - "postalCode" => $order['payment_postcode'], - "country" => $order['payment_iso_code_2'] + $data["billingAddress"] = [ + "givenName" => $order['payment_firstname'], + "familyName" => $order['payment_lastname'], + "email" => $order['email'], + "streetAndNumber" => $order['payment_address_1'] . ' ' . $order['payment_address_2'], + "city" => $order['payment_city'], + "region" => $order['payment_zone'], + "postalCode" => $order['payment_postcode'], + "country" => $order['payment_iso_code_2'] + ]; + + if (!empty($order['shipping_firstname']) || !empty($order['shipping_lastname'])) { + $data["shippingAddress"] = [ + "givenName" => $order['shipping_firstname'], + "familyName" => $order['shipping_lastname'], + "email" => $order['email'], + "streetAndNumber" => $order['shipping_address_1'] . ' ' . $order['shipping_address_2'], + "city" => $order['shipping_city'], + "region" => $order['shipping_zone'], + "postalCode" => $order['shipping_postcode'], + "country" => $order['shipping_iso_code_2'] ]; - - if (!empty($order['shipping_firstname']) || !empty($order['shipping_lastname'])) { - $data["shippingAddress"] = [ - "streetAndNumber" => $order['shipping_address_1'] . ' ' . $order['shipping_address_2'], - "city" => $order['shipping_city'], - "region" => $order['shipping_zone'], - "postalCode" => $order['shipping_postcode'], - "country" => $order['shipping_iso_code_2'] - ]; - } else { - $data["shippingAddress"] = $data["billingAddress"]; - } + } else { + $data["shippingAddress"] = $data["billingAddress"]; + } $locales = array( @@ -232,10 +326,13 @@ public function payment() } $data["locale"]=$locale; - $payment = $api->payments->create($data); + + //Create Order + $orderObject = $api->orders->create($data); + } catch (Mollie\Api\Exceptions\ApiException $e) { $this->showErrorPage($e->getMessage()); - $this->writeToMollieLog("Creating payment failed; " . $e->getMessage()); + $this->writeToMollieLog("Creating order failed; " . $e->getMessage()); return; } @@ -244,10 +341,10 @@ public function payment() $this->addOrderHistory($order, $this->config->get(MollieHelper::getModuleCode() . "_ideal_pending_status_id"), $this->language->get("text_redirected"), false); } - $model->setPayment($order['order_id'], $payment->id); + $model->setPayment($order['order_id'], $orderObject->id); // Redirect to payment gateway. - $this->redirect($payment->_links->checkout->href); + $this->redirect($orderObject->_links->checkout->href); } /** @@ -272,10 +369,10 @@ public function webhook() } $moduleCode = MollieHelper::getModuleCode(); - $payment_id = $this->request->post['id']; - $this->writeToMollieLog("Received webhook for payment_id " . $payment_id); + $order_id = $this->request->post['id']; + $this->writeToMollieLog("Received webhook for order_id " . $order_id); - $payment = $this->getAPIClient()->payments->get($payment_id); + $mollieOrder = $this->getAPIClient()->orders->get($order_id); // Load essentials Util::load()->model("checkout/order"); @@ -283,7 +380,7 @@ public function webhook() Util::load()->language("payment/mollie"); //Get order_id of this transaction from db - $order = $this->model_checkout_order->getOrder($payment->metadata->order_id); + $order = $this->model_checkout_order->getOrder($mollieOrder->metadata->order_id); if (empty($order)) { header("HTTP/1.0 404 Not Found"); @@ -302,20 +399,20 @@ public function webhook() } // Order paid ('processed'). - if ($payment->isPaid()) { + if ($mollieOrder->isPaid() || $mollieOrder->isAuthorized()) { $new_status_id = intval($this->config->get($moduleCode . "_ideal_processing_status_id")); if (!$new_status_id) { - $this->writeToMollieLog("The payment has been received. No 'processing' status ID is configured, so the order status could not be updated.", true); + $this->writeToMollieLog("The payment has been received/authorised. No 'processing' status ID is configured, so the order status could not be updated.", true); return; } $this->addOrderHistory($order, $new_status_id, $this->language->get("response_success"), true); - $this->writeToMollieLog("The payment was received and the order was moved to the 'processing' status (new status ID: {$new_status_id}.", true); + $this->writeToMollieLog("The payment was received/authorised and the order was moved to the 'processing' status (new status ID: {$new_status_id}.", true); return; } // Order cancelled. - if ($payment->status == PaymentStatus::STATUS_CANCELED) { + if ($mollieOrder->status == PaymentStatus::STATUS_CANCELED) { $new_status_id = intval($this->config->get($moduleCode . "_ideal_canceled_status_id")); if (!$new_status_id) { @@ -328,7 +425,7 @@ public function webhook() } // Order expired. - if ($payment->status == PaymentStatus::STATUS_CANCELED) { + if ($mollieOrder->status == PaymentStatus::STATUS_CANCELED) { $new_status_id = intval($this->config->get($moduleCode . "_ideal_expired_status_id")); if (!$new_status_id) { @@ -385,6 +482,48 @@ protected function getIssuer() return null; } + //Create shipment after the order reach to a specific status + public function createShipment(&$route, &$data) { + + $order_id = $data[0]; + $order_status_id = $data[1]; + $moduleCode = MollieHelper::getModuleCode(); + + $orderModel = Util::load()->model("checkout/order"); + $mollieModel = Util::load()->model('payment/mollie/base'); + Util::load()->language("payment/mollie"); + + //Get order_id of this transaction from db + $order = $orderModel->getOrder($order_id); + if (empty($order)) { + header("HTTP/1.0 404 Not Found"); + echo "Could not find order."; + return; + } + + $mollie_order_id = $mollieModel->getOrderID($order_id); + if (empty($mollie_order_id)) { + $this->writeToMollieLog("Could not find mollie reference order id."); + return; + } + + $mollieOrder = $this->getAPIClient()->orders->get($mollie_order_id); + if($mollieOrder->isAuthorized() && !$this->config->get($moduleCode . "_create_shipment") && ($order_status_id == $this->config->get($moduleCode . "_create_shipment_status_id"))) { + //Shipment lines + $shipmentLine = array(); + foreach($mollieOrder->lines as $line) { + $shipmentLine[] = array( + 'id' => $line->id, + 'quantity' => $line->quantity + ); + } + + $shipmentData['lines'] = $shipmentLine; + $mollieShipment = $mollieOrder->createShipment($shipmentData); + $this->writeToMollieLog("Shipment created for order-".$order_id); + } + } + /** * Customer returning from the bank with an transaction_id * Depending on what the state of the payment is they get redirected to the corresponding page @@ -425,10 +564,10 @@ public function callback() $model = $this->getModuleModel(); $paid_status_id = intval($this->config->get($moduleCode . "_ideal_processing_status_id")); - $payment_id = $model->getPaymentID($order['order_id']); + $mollie_order_id = $model->getOrderID($order['order_id']); - if ($payment_id === false) { - $this->writeToMollieLog("Error getting payment id for order " . $order['order_id']); + if ($mollie_order_id === false) { + $this->writeToMollieLog("Error getting order id for order " . $order['order_id']); return $this->showReturnPage( $this->language->get("heading_failed"), @@ -436,13 +575,30 @@ public function callback() ); } - $payment = $this->getAPIClient()->payments->get($payment_id); - - if ($payment->isPaid() && $order['order_status_id'] != $paid_status_id) { + $orderDetails = $this->getAPIClient()->orders->get($mollie_order_id, ["embed" => "payments"]); + if (($orderDetails->isPaid() || $orderDetails->isAuthorized()) && $order['order_status_id'] != $paid_status_id) { $this->addOrderHistory($order, $paid_status_id, $this->language->get("response_success"), true); $order['order_status_id'] = $paid_status_id; } + //Check for immediate shipment creation + if($orderDetails->isAuthorized() && $this->config->get($moduleCode . "_create_shipment")) { + //Shipment lines + $shipmentLine = array(); + foreach($orderDetails->lines as $line) { + $shipmentLine[] = array( + 'id' => $line->id, + 'quantity' => $line->quantity + ); + } + + $shipmentData['lines'] = $shipmentLine; + $mollieShipment = $orderDetails->createShipment($shipmentData); + $shipped_status_id = intval($this->config->get($moduleCode . "_ideal_shipping_status_id")); + $this->addOrderHistory($order, $shipped_status_id, $this->language->get("shipment_success"), true); + $this->writeToMollieLog("Shipment created for order-".$order_id); + $order['order_status_id'] = $shipped_status_id; + } // Show a 'transaction failed' page if we couldn't find the order or if the payment failed. $failed_status_id = $this->config->get($moduleCode . "_ideal_failed_status_id"); @@ -460,7 +616,7 @@ public function callback() } // If the order status is 'processing' (i.e. 'paid'), redirect to OpenCart's default 'success' page. - if ($order["order_status_id"] == $this->config->get($moduleCode . "_ideal_processing_status_id")) { + if ($order["order_status_id"] == $this->config->get($moduleCode . "_ideal_processing_status_id") || $order["order_status_id"] == $this->config->get($moduleCode . "_ideal_shipping_status_id")) { $this->writeToMollieLog("Success redirect to success page for order " . $order['order_id']); if ($this->cart) { diff --git a/catalog/controller/payment/mollie/helper.php b/catalog/controller/payment/mollie/helper.php index 377a2899..333e8087 100644 --- a/catalog/controller/payment/mollie/helper.php +++ b/catalog/controller/payment/mollie/helper.php @@ -22,6 +22,8 @@ class MollieHelper const MODULE_NAME_INGHOMEPAY = "inghomepay"; const MODULE_NAME_EPS = "eps"; const MODULE_NAME_GIROPAY = "giropay"; + const MODULE_NAME_KLARNAPAYLATER = "klarnapaylater"; + const MODULE_NAME_KLARNASLICEIT = "klarnasliceit"; // List of all available module names. @@ -40,7 +42,9 @@ class MollieHelper self::MODULE_NAME_GIFTCARD, self::MODULE_NAME_INGHOMEPAY, self::MODULE_NAME_EPS, - self::MODULE_NAME_GIROPAY + self::MODULE_NAME_GIROPAY, + self::MODULE_NAME_KLARNAPAYLATER, + self::MODULE_NAME_KLARNASLICEIT ); static protected $api_client; diff --git a/catalog/controller/payment/mollie_klarnapaylater.php b/catalog/controller/payment/mollie_klarnapaylater.php new file mode 100644 index 00000000..1afd087d --- /dev/null +++ b/catalog/controller/payment/mollie_klarnapaylater.php @@ -0,0 +1,7 @@ +db->query( sprintf( - "REPLACE INTO `%smollie_payments` (`order_id` ,`transaction_id`, `method`) + "REPLACE INTO `%smollie_payments` (`order_id` ,`mollie_order_id`, `method`) VALUES ('%s', '%s', 'idl')", DB_PREFIX, $this->db->escape($order_id), - $this->db->escape($transaction_id) + $this->db->escape($mollie_order_id) ) ); @@ -173,4 +173,34 @@ public function getPaymentID($order_id) return FALSE; } + public function getOrderID($order_id) + { + if (!empty($order_id)) { + $results = $this->db->query("SELECT * FROM `" . DB_PREFIX . "mollie_payments` WHERE `order_id` = '" . $order_id . "'"); + if($results->num_rows == 0) return FALSE; + return $results->row['mollie_order_id']; + } + return FALSE; + } + + public function getOrderProducts($order_id) { + $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'"); + + return $query->rows; + } + + public function getTaxRate() { + $query = $this->db->query("SELECT rate FROM " . DB_PREFIX . "tax_rate WHERE name LIKE '%VAT%'"); + + if($query->num_rows != 0) { + return $query->row['rate']; + } + return 0; + } + + public function getCouponDetails($orderID) { + $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_total WHERE order_id = '" . (int)$orderID . "' AND code = 'coupon'"); + return $query->row; + } + } diff --git a/catalog/model/payment/mollie_klarnapaylater.php b/catalog/model/payment/mollie_klarnapaylater.php new file mode 100644 index 00000000..02138ee2 --- /dev/null +++ b/catalog/model/payment/mollie_klarnapaylater.php @@ -0,0 +1,7 @@ +"extension/extension", "3.0"=>"setting/extension" + ], + [ + ""=>"extension/event", + "3.0"=>"setting/event" ] ] ); From 719dae6495b6771b8b775ecf5c30a90feac248d8 Mon Sep 17 00:00:00 2001 From: Pradeep Date: Wed, 17 Oct 2018 14:12:05 +0530 Subject: [PATCH 14/35] COMDEVNL-1335 -- Update module check --- admin/controller/payment/mollie/base.php | 46 +++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/admin/controller/payment/mollie/base.php b/admin/controller/payment/mollie/base.php index d1935a7f..c5922eca 100644 --- a/admin/controller/payment/mollie/base.php +++ b/admin/controller/payment/mollie/base.php @@ -133,6 +133,34 @@ public function cleanUp() unlink($adminThemeDir . 'payment/mollie_2.tpl'); } + //Remove 'mistercash' files from old version + $adminControllerDir = DIR_APPLICATION . 'controller/'; + $adminLanguageDir = DIR_APPLICATION . 'language/'; + $catalogControllerDir = DIR_CATALOG . 'controller/'; + $catalogModelDir = DIR_CATALOG . 'model/'; + + if(file_exists($adminControllerDir . 'extension/payment/mistercash.php')) { + unlink($adminControllerDir . 'extension/payment/mistercash.php'); + $languageFiles = glob($adminLanguageDir .'*/extension/payment/mistercash.php'); + foreach($languageFiles as $file) { + unlink($file); + } + + unlink($catalogControllerDir .'extension/payment/mistercash.php'); + unlink($catalogModelDir .'extension/payment/mistercash.php'); + } + + if(file_exists($adminControllerDir . 'payment/mistercash.php')) { + unlink($adminControllerDir . 'payment/mistercash.php'); + $languageFiles = glob($adminLanguageDir .'*/payment/mistercash.php'); + foreach($languageFiles as $file) { + unlink($file); + } + + unlink($catalogControllerDir .'payment/mistercash.php'); + unlink($catalogModelDir .'payment/mistercash.php'); + } + if (MollieHelper::isOpenCart3x()) { if(file_exists($adminThemeDir . 'extension/payment/mollie(max_1.5.6.4).tpl')) { unlink($adminThemeDir . 'extension/payment/mollie(max_1.5.6.4).tpl'); @@ -209,6 +237,14 @@ protected function uninstallAllModules () } } + //Delete old 'mistercash' data from setting + public function clearData() { + $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE `key` LIKE '%mistercash%'"); + if($query->num_rows > 0) { + $this->db->query("DELETE FROM " . DB_PREFIX . "setting WHERE `key` LIKE '%mistercash%'"); + } + } + /** * Render the payment method's settings page. */ @@ -226,6 +262,14 @@ public function index () } } + $adminControllerDir = DIR_APPLICATION . 'controller/'; + if(file_exists($adminControllerDir . 'extension/payment/mistercash.php') || file_exists($adminControllerDir . 'payment/mistercash.php')) { + $this->cleanUp(); + } + + //Also delete data related to 'mistercash' from setting + $this->clearData(); + //Load language data $data = array("version" => MOLLIE_RELEASE); Util::load()->language("payment/mollie", $data); @@ -426,7 +470,7 @@ public function index () $data['shops'][$store['store_id']]['entry_cstatus'] = $this->checkCommunicationStatus(isset($store[$code . '_api_key']) ? $store[$code . '_api_key'] : null); - Util::validation($store, $store['store_id'], $this->error) + Util::error($store, $store['store_id'], $this->error) ->notIsset('error_api_key', 'api_key') ->notIsset('error_description', 'description'); From e3f6d72504e56ff70cd24ea2cd9c041e8a88916e Mon Sep 17 00:00:00 2001 From: Pradeep Date: Wed, 17 Oct 2018 14:18:22 +0530 Subject: [PATCH 15/35] COMDEVNL-1335 -- Update module check --- admin/controller/payment/mollie/base.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/controller/payment/mollie/base.php b/admin/controller/payment/mollie/base.php index c5922eca..e6dc3d70 100644 --- a/admin/controller/payment/mollie/base.php +++ b/admin/controller/payment/mollie/base.php @@ -470,7 +470,7 @@ public function index () $data['shops'][$store['store_id']]['entry_cstatus'] = $this->checkCommunicationStatus(isset($store[$code . '_api_key']) ? $store[$code . '_api_key'] : null); - Util::error($store, $store['store_id'], $this->error) + Util::validation($store, $store['store_id'], $this->error) ->notIsset('error_api_key', 'api_key') ->notIsset('error_description', 'description'); From 3566afcad675adad2f31db4c16ca4c4cb399efe0 Mon Sep 17 00:00:00 2001 From: Pradeep Date: Mon, 22 Oct 2018 14:38:14 +0530 Subject: [PATCH 16/35] COMDEVNL-1335 -- Modified dutch translation --- admin/language/dutch/payment/mollie.php | 4 ++-- admin/language/nl-nl/payment/mollie.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/admin/language/dutch/payment/mollie.php b/admin/language/dutch/payment/mollie.php index 86b74812..fcf9088b 100644 --- a/admin/language/dutch/payment/mollie.php +++ b/admin/language/dutch/payment/mollie.php @@ -126,6 +126,6 @@ $_['entry_processing_status']= "Status betaling succesvol"; $_['entry_shipping_status'] = "Status bestelling verzonden"; -$_['entry_shipment'] = "Maak verzending onmiddellijk"; -$_['entry_create_shipment_status'] = "Create shipment after order status"; +$_['entry_shipment'] = "Maak direct verzending aan"; +$_['entry_create_shipment_status'] = "Maak verzending aan na order status"; $_['help_shipment'] = "Verzending (alleen voor Klarna-methoden) wordt direct na het maken van de bestelling gemaakt. Selecteer 'Nee' om een ​​zending te creëren wanneer de order een specifieke status bereikt en selecteer de bestelstatus van onder."; diff --git a/admin/language/nl-nl/payment/mollie.php b/admin/language/nl-nl/payment/mollie.php index d3bf4963..b834be2a 100644 --- a/admin/language/nl-nl/payment/mollie.php +++ b/admin/language/nl-nl/payment/mollie.php @@ -126,6 +126,6 @@ $_['entry_processing_status']= "Status betaling succesvol"; $_['entry_shipping_status'] = "Status bestelling verzonden"; -$_['entry_shipment'] = "Maak verzending onmiddellijk"; -$_['entry_create_shipment_status'] = "Create shipment after order status"; +$_['entry_shipment'] = "Maak direct verzending aan"; +$_['entry_create_shipment_status'] = "Maak verzending aan na order status"; $_['help_shipment'] = "Verzending (alleen voor Klarna-methoden) wordt direct na het maken van de bestelling gemaakt. Selecteer 'Nee' om een ​​zending te creëren wanneer de order een specifieke status bereikt en selecteer de bestelstatus van onder."; From 9e38ba1cde5e79e048270adaec7c63a2f90255dc Mon Sep 17 00:00:00 2001 From: Pradeep Date: Tue, 23 Oct 2018 16:16:02 +0530 Subject: [PATCH 17/35] COMDEVNL-1434 -- Language files updated --- admin/language/de-de/payment/mollie.php | 2 +- admin/language/dutch/payment/mollie.php | 2 +- admin/language/en-gb/payment/mollie.php | 2 +- admin/language/english/payment/mollie.php | 2 +- admin/language/es-es/payment/mollie.php | 2 +- admin/language/fr-fr/payment/mollie.php | 2 +- admin/language/french/payment/mollie.php | 2 +- admin/language/german/payment/mollie.php | 2 +- admin/language/nl-nl/payment/mollie.php | 2 +- admin/language/spanish/payment/mollie.php | 2 +- admin/view/template/payment/mollie(max_1.5.6.4).tpl | 6 +++++- admin/view/template/payment/mollie.tpl | 6 +++++- 12 files changed, 20 insertions(+), 12 deletions(-) diff --git a/admin/language/de-de/payment/mollie.php b/admin/language/de-de/payment/mollie.php index 81c11760..32eaebda 100644 --- a/admin/language/de-de/payment/mollie.php +++ b/admin/language/de-de/payment/mollie.php @@ -81,7 +81,7 @@ $_['text_edit'] = "Mollie bearbeiten"; $_['text_payment'] = "Bezahlung"; $_['text_success'] = "Erfolg: Die Einstellungen für dieses Modul wurden angepasst!"; -$_['text_missing_api_key'] = "Geben Sie den API Key ein."; +$_['text_missing_api_key'] = "Bitte füllen Sie Ihren API-Schlüssel auf der Registerkarte Einstellungen aus."; $_['text_activate_payment_method'] = 'Aktivieren Sie diese Zahlungsart über das Mollie Dashboard.'; $_['text_no_status_id'] = "- Status nicht ändern (nicht empfohlen) -"; diff --git a/admin/language/dutch/payment/mollie.php b/admin/language/dutch/payment/mollie.php index fcf9088b..cdbe66b7 100644 --- a/admin/language/dutch/payment/mollie.php +++ b/admin/language/dutch/payment/mollie.php @@ -81,7 +81,7 @@ $_['text_edit'] = "Bewerk Mollie"; $_['text_payment'] = "Betaling"; $_['text_success'] = "Gelukt: de instellingen voor de module zijn aangepast!"; -$_['text_missing_api_key'] = "Vul hieronder de API-key in."; +$_['text_missing_api_key'] = "Vul uw API-key in bij de Instellingen."; $_['text_activate_payment_method'] = 'Activeer deze betaalmethode via het Mollie-dashboard.'; $_['text_no_status_id'] = "- Status niet wijzigen (niet aanbevolen) -"; diff --git a/admin/language/en-gb/payment/mollie.php b/admin/language/en-gb/payment/mollie.php index 8abd05e1..fda0737b 100644 --- a/admin/language/en-gb/payment/mollie.php +++ b/admin/language/en-gb/payment/mollie.php @@ -81,7 +81,7 @@ $_['text_edit'] = "Edit"; $_['text_payment'] = "Payment"; $_['text_success'] = "Success: You have successfully modified your Mollie settings!"; -$_['text_missing_api_key'] = "Please fill out your API key below."; +$_['text_missing_api_key'] = "Please fill out your API key in the Settings tab."; $_['text_activate_payment_method'] = 'Enable this payment method in your Mollie dashboard.'; $_['text_no_status_id'] = "- Do not update the order status (not recommended) -"; diff --git a/admin/language/english/payment/mollie.php b/admin/language/english/payment/mollie.php index d7c0ae92..bcb3916f 100644 --- a/admin/language/english/payment/mollie.php +++ b/admin/language/english/payment/mollie.php @@ -79,7 +79,7 @@ $_['text_edit'] = "Edit"; $_['text_payment'] = "Payment"; $_['text_success'] = "Success: You have successfully modified your Mollie settings!"; -$_['text_missing_api_key'] = "Please fill out your API key below."; +$_['text_missing_api_key'] = "Please fill out your API key in the Settings tab."; $_['text_activate_payment_method'] = 'Enable this payment method in your Mollie dashboard.'; $_['text_no_status_id'] = "- Do not update the order status (not recommended) -"; diff --git a/admin/language/es-es/payment/mollie.php b/admin/language/es-es/payment/mollie.php index db94afe9..161e34af 100644 --- a/admin/language/es-es/payment/mollie.php +++ b/admin/language/es-es/payment/mollie.php @@ -81,7 +81,7 @@ $_['text_edit'] = "Corregir Mollie"; $_['text_payment'] = "Pago"; $_['text_success'] = "Realizado con éxito: ¡los ajustes para el módulo han sido modificados!"; -$_['text_missing_api_key'] = "Escriba la clave API."; +$_['text_missing_api_key'] = "Por favor, complete su clave API en la pestaña Configuración."; $_['text_activate_payment_method'] = 'Active esta forma de pago a través del panel de control de Mollie.'; $_['text_no_status_id'] = "- No cambiar de estado (no recomendado) -"; diff --git a/admin/language/fr-fr/payment/mollie.php b/admin/language/fr-fr/payment/mollie.php index 8d1842f7..9f2eea0f 100644 --- a/admin/language/fr-fr/payment/mollie.php +++ b/admin/language/fr-fr/payment/mollie.php @@ -81,7 +81,7 @@ $_['text_edit'] = "Éditer Mollie"; $_['text_payment'] = "Paiement"; $_['text_success'] = "Succès: Vous avez réussi à modifier les paramètres Mollie!"; -$_['text_missing_api_key'] = "Remplir votre clé API ci-dessous."; +$_['text_missing_api_key'] = "S'il vous plaît remplir votre clé API dans l'onglet Paramètres."; $_['text_activate_payment_method'] = 'Activer ce mode de paiement via le Mollie dashboard.'; $_['text_no_status_id'] = '- Ne pas mettre à jour le statut (non recommandé) -'; diff --git a/admin/language/french/payment/mollie.php b/admin/language/french/payment/mollie.php index 8d1842f7..9f2eea0f 100644 --- a/admin/language/french/payment/mollie.php +++ b/admin/language/french/payment/mollie.php @@ -81,7 +81,7 @@ $_['text_edit'] = "Éditer Mollie"; $_['text_payment'] = "Paiement"; $_['text_success'] = "Succès: Vous avez réussi à modifier les paramètres Mollie!"; -$_['text_missing_api_key'] = "Remplir votre clé API ci-dessous."; +$_['text_missing_api_key'] = "S'il vous plaît remplir votre clé API dans l'onglet Paramètres."; $_['text_activate_payment_method'] = 'Activer ce mode de paiement via le Mollie dashboard.'; $_['text_no_status_id'] = '- Ne pas mettre à jour le statut (non recommandé) -'; diff --git a/admin/language/german/payment/mollie.php b/admin/language/german/payment/mollie.php index 0136d6c8..e9ff9e53 100644 --- a/admin/language/german/payment/mollie.php +++ b/admin/language/german/payment/mollie.php @@ -81,7 +81,7 @@ $_['text_edit'] = "Mollie bearbeiten"; $_['text_payment'] = "Bezahlung"; $_['text_success'] = "Erfolg: Die Einstellungen für dieses Modul wurden angepasst!"; -$_['text_missing_api_key'] = "Geben Sie den API Key ein."; +$_['text_missing_api_key'] = "Bitte füllen Sie Ihren API-Schlüssel auf der Registerkarte Einstellungen aus."; $_['text_activate_payment_method'] = 'Aktivieren Sie diese Zahlungsart über das Mollie Dashboard.'; $_['text_no_status_id'] = "- Status nicht ändern (nicht empfohlen) -"; diff --git a/admin/language/nl-nl/payment/mollie.php b/admin/language/nl-nl/payment/mollie.php index b834be2a..5c8545e6 100644 --- a/admin/language/nl-nl/payment/mollie.php +++ b/admin/language/nl-nl/payment/mollie.php @@ -81,7 +81,7 @@ $_['text_edit'] = "Bewerk Mollie"; $_['text_payment'] = "Betaling"; $_['text_success'] = "Gelukt: de instellingen voor de module zijn aangepast!"; -$_['text_missing_api_key'] = "Vul hieronder de API-key in."; +$_['text_missing_api_key'] = "Vul uw API-key in bij de Instellingen."; $_['text_activate_payment_method'] = 'Activeer deze betaalmethode via het Mollie-dashboard.'; $_['text_no_status_id'] = "- Status niet wijzigen (niet aanbevolen) -"; diff --git a/admin/language/spanish/payment/mollie.php b/admin/language/spanish/payment/mollie.php index f6e83103..52ce9a36 100644 --- a/admin/language/spanish/payment/mollie.php +++ b/admin/language/spanish/payment/mollie.php @@ -81,7 +81,7 @@ $_['text_edit'] = "Corregir Mollie"; $_['text_payment'] = "Pago"; $_['text_success'] = "Realizado con éxito: ¡los ajustes para el módulo han sido modificados!"; -$_['text_missing_api_key'] = "Escriba la clave API."; +$_['text_missing_api_key'] = "Por favor, complete su clave API en la pestaña Configuración."; $_['text_activate_payment_method'] = 'Active esta forma de pago a través del panel de control de Mollie.'; $_['text_no_status_id'] = "- No cambiar de estado (no recomendado) -"; diff --git a/admin/view/template/payment/mollie(max_1.5.6.4).tpl b/admin/view/template/payment/mollie(max_1.5.6.4).tpl index a737e884..adb587ea 100644 --- a/admin/view/template/payment/mollie(max_1.5.6.4).tpl +++ b/admin/view/template/payment/mollie(max_1.5.6.4).tpl @@ -36,7 +36,7 @@
-
+
@@ -406,6 +406,10 @@ elem.onchange = function(){ hiddenDiv.style.display = (this.value == "1") ? "none":"block"; }; + + $('.settings').click(function(){ + $('#tabs a[href=#mollie-options-]').tab('show'); + }); diff --git a/admin/view/template/payment/mollie.tpl b/admin/view/template/payment/mollie.tpl index 5ddecf00..43db0af8 100644 --- a/admin/view/template/payment/mollie.tpl +++ b/admin/view/template/payment/mollie.tpl @@ -36,7 +36,7 @@

-