Aiuto per Modifiche al modulo pagamenti keyclient per Ubercart. Da MDA a SHA1

2 contenuti / 0 new
Ultimo contenuto
Aiuto per Modifiche al modulo pagamenti keyclient per Ubercart. Da MDA a SHA1

Ciao a tutti!
Spero che qualche anima pia possa darmi una mano! :-)
Ho realizzato un e-commerce per un cliente con Drupal 6.28 e Ubercart.
Il mio cliente vuole utilizzare per i pagamenti il sistema

Keyclient (http://www.keyclient.it/portal/portal/portale)

Ho trovato il modulo e installato il modulo
uc_keyclient-6.x-1.x-dev.zip (https://drupal.org/project/uc_keyclient) ma c'è un problema: al termine della procedura di acquisto mi viene sempre "Errore calcolo MAC".
Ho chiamato l'assistenza e mi hanno detto che è cambiato l'algoritmo da MD a SHA1.
Mi hanno inviato anche un documento tecnico ma io putroppo non sono un programmatore!
Questo è quello che c'è scritto per calcolare il codice mac

______________________________________________________________________________________________
“mac” messaggio di avvio pagamento
Per il messaggio di avvio transazione, il testo da firmare deve contenere i campi:
· codTrans
· divisa
· importo
· stringa segreta
Il mac sarà calcolato nel seguente modo:
mac= HASH SHA(codTrans=divisa=importo=

Drupal Version:

Ciao,
la funzione che utilizza md5 è function uc_keyclient_macify( alla riga 212 di uc_keyclient.module, cambia (controllando bene le API della banca) quindi

<?php
 
return urlencode(base64_encode(md5($str2mac)));
?>

in
<?php
 
return urlencode(base64_encode(sha1($str2mac))); 
?>

CODICE FACOLTATIVO CHE PERMETTE DI SCEGLIERE L'OPZIONE DA : tuosito.xx/admin/settings/keyclient

in keyclient.module nell' hook _menu inserisci questo codice:

<?php
 
// SETTINGS PAGE
 
$items['admin/settings/keyclient'] = array(
   
'title' => t('Settings keyclient'),
   
'page callback' => 'drupal_get_form',
   
'page arguments' => array('keyclient_settings'),
   
'access arguments' => array('administer site configuration'),
  );
?>

Poi aggiungi la funzione di impostazione tra md5 e sha1

<?php
function keyclient_settings() {
 
$form['keyclient_calcolo_mac'] = array(
   
'#type' => 'checkbox',
   
'#title' => t('Tipologia di calcolo MAC'),
   
'#default_value' => variable_get('keyclient_calcolo_mac', 0),
  );
// dove 0 per md5, e 1 per sha1
 
return system_settings_form($form);
}
?>

Se utilizzi questo codice allora alla riga 212 di uc_keyclient.module

<?php
if (variable_get('keyclient_calcolo_mac', 0)) return urlencode(base64_encode(md5($str2mac)));
?>

in
<?php
if (variable_get('keyclient_calcolo_mac', 1))  return urlencode(base64_encode(sha1($str2mac))); 
?>

Spero sia chiaro, ci vuole colo un po di conoscenza del php...