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";