From 263b53bf63347a4a99956c361672145462f1cc7c Mon Sep 17 00:00:00 2001 From: aplose Date: Sun, 21 Oct 2018 18:28:05 +0200 Subject: [PATCH] Paybox Update : include Paybox HMAC key in process in order to keep the module working with Paybox. --- htdocs/paybox/admin/paybox.php | 9 ++++++ htdocs/paybox/lib/paybox.lib.php | 47 ++++++++++++++++++++++++-------- 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/htdocs/paybox/admin/paybox.php b/htdocs/paybox/admin/paybox.php index 79a6a62ad2a..e4ae5a9eb66 100644 --- a/htdocs/paybox/admin/paybox.php +++ b/htdocs/paybox/admin/paybox.php @@ -71,6 +71,9 @@ if ($action == 'setvalue' && $user->admin) if (! $result > 0) $error++; $result=dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN_UNIQUE",GETPOST('PAYMENT_SECURITY_TOKEN_UNIQUE','alpha'),'chaine',0,'',$conf->entity); if (! $result > 0) $error++; + $result=dolibarr_set_const($db, "PAYBOX_HMAC_KEY", dol_encode(GETPOST('PAYBOX_HMAC_KEY','alpha')),'chaine',0,'',$conf->entity); + if (! $result > 0) $error++; + if (! $error) { @@ -145,6 +148,12 @@ print 'trans("Test").')'; print ''; +print ''; +print ''.$langs->trans("PAYBOX_HMAC_KEY").''; +print ''; +print '
'.$langs->trans("Example").': 2 ('.$langs->trans("Test").')'; +print ''; + print ''; print ''.$langs->trans("UsageParameter").''; print ''.$langs->trans("Value").''; diff --git a/htdocs/paybox/lib/paybox.lib.php b/htdocs/paybox/lib/paybox.lib.php index a4106488f53..a904c372099 100644 --- a/htdocs/paybox/lib/paybox.lib.php +++ b/htdocs/paybox/lib/paybox.lib.php @@ -92,16 +92,41 @@ function print_paybox_redirect($PRICE,$CURRENCY,$EMAIL,$urlok,$urlko,$TAG) $IBS_REFUSE=$urlko; $IBS_BKGD="#FFFFFF"; $IBS_WAIT="2000"; - $IBS_LANG="GBR"; // By default GBR=english (FRA, GBR, ESP, ITA et DEU...) - if (preg_match('/^FR/i',$langs->defaultlang)) $IBS_LANG="FRA"; - if (preg_match('/^ES/i',$langs->defaultlang)) $IBS_LANG="ESP"; - if (preg_match('/^IT/i',$langs->defaultlang)) $IBS_LANG="ITA"; - if (preg_match('/^DE/i',$langs->defaultlang)) $IBS_LANG="DEU"; - if (preg_match('/^NL/i',$langs->defaultlang)) $IBS_LANG="NLD"; - if (preg_match('/^SE/i',$langs->defaultlang)) $IBS_LANG="SWE"; - $IBS_OUTPUT='E'; - $PBX_SOURCE='HTML'; - $PBX_TYPEPAIEMENT='CARTE'; + $IBS_LANG="GBR"; // By default GBR=english (FRA, GBR, ESP, ITA et DEU...) + if (preg_match('/^FR/i',$langs->defaultlang)) $IBS_LANG="FRA"; + if (preg_match('/^ES/i',$langs->defaultlang)) $IBS_LANG="ESP"; + if (preg_match('/^IT/i',$langs->defaultlang)) $IBS_LANG="ITA"; + if (preg_match('/^DE/i',$langs->defaultlang)) $IBS_LANG="DEU"; + if (preg_match('/^NL/i',$langs->defaultlang)) $IBS_LANG="NLD"; + if (preg_match('/^SE/i',$langs->defaultlang)) $IBS_LANG="SWE"; + $IBS_OUTPUT='E'; + $PBX_SOURCE='HTML'; + $PBX_TYPEPAIEMENT='CARTE'; + + $msg = "PBX_IDENTIFIANT=".$PBX_IDENTIFIANT. + "&PBX_MODE=".$IBS_MODE. + "&PBX_SITE=".$IBS_SITE. + "&PBX_RANG=".$IBS_RANG. + "&PBX_TOTAL=".$IBS_TOTAL. + "&PBX_DEVISE=".$IBS_DEVISE. + "&PBX_CMD=".$IBS_CMD. + "&PBX_PORTEUR=".$IBS_PORTEUR. + "&PBX_RETOUR=".$IBS_RETOUR. + "&PBX_EFFECTUE=".$IBS_EFFECTUE. + "&PBX_ANNULE=".$IBS_ANNULE. + "&PBX_REFUSE=".$IBS_REFUSE. + "&PBX_TXT=".$IBS_TXT. + "&PBX_BKGD=".$IBS_BKGD. + "&PBX_WAIT=".$IBS_WAIT. + "&PBX_LANGUE=".$IBS_LANG. + "&PBX_OUTPUT=".$IBS_OUTPUT. + "&PBX_SOURCE=".$PBX_SOURCE. + "&PBX_TYPEPAIEMENT=".$PBX_TYPEPAIEMENT; + + $binKey = pack("H*", dol_decode($conf->global->PAYBOX_HMAC_KEY)); + + $hmac = strtoupper(hash_hmac('sha512', $msg, $binKey)); + dol_syslog("Soumission Paybox", LOG_DEBUG); dol_syslog("IBS_MODE: $IBS_MODE", LOG_DEBUG); @@ -157,7 +182,7 @@ function print_paybox_redirect($PRICE,$CURRENCY,$EMAIL,$urlok,$urlko,$TAG) print ''."\n"; print ''."\n"; print ''."\n"; - + print ''."\n"; print ''."\n";