Paiement en ligne pour une adhésion
Mise en place d'un système de paiement en ligne greffé sur le module webform. Cela permet à une association de recevoir des règlements par carte bancaire à partir d'un webform Drupal
include_once(drupal_get_path('module', 'webform') .'/includes/webform.submissions.inc');
$nid = arg(1); // need to hard-code nid if this is a custom page
$sid = $_GET['sid'];
$submission = webform_get_submission($nid, $sid);
$email = $submission->data[7]['value'][0];
$tarif = $submission->data[24]['value'][0];
/* pour les tarifs en double dans la liste, il y a une lettre après le prix: ex 40a, il suffit de tester si l'ensemble est numérique, si ce n'est pas un nombre, retirer la dernière lettre */
if (!is_numeric($tarif)) {
$tarif = substr($tarif,0,-1);
}
$item = $submission->data[29]['value'][0];
$paiement =$submission->data[19]['value'][0];//component numero 19
function no_special_character_v2($chaine){
// les accents
$chaine=trim($chaine);
$chaine= strtr($chaine,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
// les caracètres spéciaux (aures que lettres et chiffres en fait)
$chaine = preg_replace('/([^.a-z0-9]+)/i', '-', $chaine);
$chaine = strtolower($chaine);
return $chaine;
}
//si le paiement est une carte bancaire
if($paiement == "CB"){
// Choix du mode de paiement (test ou prod)
//$modepaiement = "TEST";
$modepaiement = "PRODUCTION";
// PARAMETRE BANQUE
// Initialisation des paramètres
$params = array() ;
if ($modepaiement == "TEST") {
$key= "NUMERO TEST"; // Clé de test
$params['vads_ctx_mode']= "TEST";
} else {
$key= "NUMERO PRODUCTION"; // Clé de production
$params['vads_ctx_mode']= "PRODUCTION";
}
$params['vads_site_id']= "SITE_ID";
$params['vads_amount']= 100*$tarif; // en cents
$params['vads_currency']= "978"; // norme ISO 4217
$params['vads_page_action']= "PAYMENT";
$params['vads_action_mode']= "INTERACTIVE"; // saisie de carte réalisée par la plateforme
$params['vads_payment_config']= "SINGLE";
$params['vads_version']= "V2";
$params['vads_return_mode'] = "POST";
$params['vads_cust_email'] = $email;
$params['vads_order_info'] = no_special_character_v2($item);
// $params['vads_cust_name'] = $name;
$params['vads_url_return'] = "/paiement-valide";
$params['vads_url_cancel'] = "/paiement-annule";
$params['vads_url_error'] = "/paiement-annule";
$params['vads_url_refused'] = "/paiement-annule";
$params['vads_url_referral'] = "/paiement-annule";
$ts= time();
$params['vads_trans_date'] = gmdate("YmdHis", $ts);
$count= $sid;
if($count < 0 || $count > 899999) {
$count= 0;
}
$trans_id= sprintf("%06d",$count);
$params['vads_trans_id']= $trans_id;
// Génération de la signature
ksort($params); // tri des paramètres par ordre alphabétique
$contenu_signature = "";
foreach ($params as $nom => $valeur) {
$contenu_signature .= $valeur."+";
}
$contenu_signature .= $key ; // On ajoute le certificat à la fin
$params['signature'] = sha1($contenu_signature);
// Création de la form cachée et soumission
echo '';
echo '';
foreach($params as $nom => $valeur)
{
echo '';
}
echo '';
echo '';
echo '';
echo 'document.forms[0].submit();';
}