afup/web

Mettre en place 3DSv2

Closed this issue · 0 comments

Nous avons besoin de passer à 3DSv2 (notamment pour passer sur le nouveau compte Paybox).

Pour cela, nous allons devoir envoyé le nombre de lignes de facturées, ainsi que les infos de facturation.

Il faudra donc modifier la classe paybox pour générer cela (modifier le test unitaire qui va avec), et passer en paramètre le nombre de lignes et infos de facturation.

diff --git a/sources/AppBundle/Payment/Paybox.php b/sources/AppBundle/Payment/Paybox.php
index 0bc95117..6771ada7 100644
--- a/sources/AppBundle/Payment/Paybox.php
+++ b/sources/AppBundle/Payment/Paybox.php
@@ -66,6 +66,9 @@ class Paybox
             'PBX_REPONDRE_A' => $this->urlRepondreA,
         ];
 
+        $inputs["PBX_SHOPPINGCART"] = '<?xml version="1.0" encoding="utf-8"?><shoppingcart><total><totalQuantity>1</totalQuantity></total></shoppingcart>';
+        $inputs["PBX_BILLING"] = '<?xml version="1.0" encoding="utf-8"?><Billing><Address><FirstName>john</FirstName><LastName>doe</LastName><Address1>rue beau de rochas</Address1><Address2>mas guerido</Address2><ZipCode>66330</ZipCode><City>CABESTANY</City><CountryCode>250</CountryCode></Address></Billing>';
+
         // ici on utilise pas http_build_query, on ne veux pas encoder les caractères
         $preparedKeys = [];
         foreach ($inputs as $key => $value) {
@@ -95,6 +98,9 @@ class Paybox
 
         $htmlForm = '<form method="POST" action="https://' . $this->domainServer . '/cgi/MYchoix_pagepaiement.cgi">' . PHP_EOL;
         foreach ($sanitizedInputs as $inputKey => $inputValue) {
+            if ($inputKey === 'PBX_SHOPPINGCART' || $inputKey === 'PBX_BILLING') {
+                $inputValue = htmlspecialchars($inputValue);
+            }
             $htmlForm .= '  <input type="hidden" name="' . $inputKey . '" value="' . $inputValue . '">' . PHP_EOL;
         }
         $htmlForm .= '  <INPUT TYPE=SUBMIT class="button button--call-to-action" VALUE="R&eacute;gler par carte">' . PHP_EOL;

Il faudra modifier :

afin d'ajouter à chaque fois le nombre de lignes concernées ainsi que les infos de facturation