/** * Generer le contexte pour le formulaire de requete de paiement * il faut avoir un id_transaction et un transaction_hash coherents * pour se premunir d'une tentative d'appel exterieur * * @param int $id_transaction * @param string $transaction_hash * @return array */ function presta_ogone_call_request_dist($id_transaction, $transaction_hash) { if (!($row = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction) . " AND transaction_hash=" . sql_quote($transaction_hash)))) { return array(); } if (!$row['id_auteur'] and $GLOBALS['visiteur_session']['id_auteur']) { sql_updateq("spip_transactions", array("id_auteur" => intval($row['id_auteur'] = $GLOBALS['visiteur_session']['id_auteur'])), "id_transaction=" . intval($id_transaction)); } include_spip('inc/filtres'); $contexte = array(); $contexte['PSPID'] = ogone_pspid(); $contexte['orderID'] = $id_transaction . "/" . modulo($row['transaction_hash'], 999999); $contexte['operation'] = "SAL"; // c'est un paiement a l'acte immediat // passage en centimes d'euros $contexte['currency'] = "EUR"; $contexte['amount'] = intval(100 * $row['montant']); #if (strlen($montant)<3) # $montant = str_pad($montant,3,'0',STR_PAD_LEFT); $contexte['language'] = ogone_language_code($GLOBALS['spip_lang']); // recuperer l'email $contexte['EMAIL'] = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($row['id_auteur'])); $contexte['CN'] = ""; $contexte['ownerZIP'] = ""; $contexte['owneraddress'] = ""; $contexte['ownercty'] = ""; $contexte['ownertown'] = ""; $contexte['ownertelno'] = ""; // Urls de retour $contexte['accepturl'] = generer_url_action('bank_response', "bankp=ogone&id={$id_transaction};{$transaction_hash}", true, true); $contexte['declineurl'] = generer_url_action('bank_cancel', "bankp=ogone&id={$id_transaction};{$transaction_hash}", true, true); $contexte['cancelurl'] = generer_url_action('bank_cancel', "bankp=ogone&id={$id_transaction};{$transaction_hash}", true, true); $contexte['exceptionurl'] = generer_url_action('bank_response', "bankp=ogone&id={$id_transaction};{$transaction_hash}", true, true); $hidden = ""; foreach ($contexte as $k => $v) { $hidden .= "<input type='hidden' name='{$k}' value='" . str_replace("'", "'", $v) . "' />"; } include_spip('inc/filtres_mini'); $contexte = array('hidden' => $hidden, 'action' => _OGONE_URL, 'backurl' => url_absolue(self()), 'id_transaction' => $id_transaction); return $contexte; }
/** * Generer le contexte pour le formulaire de requete de paiement * il faut avoir un id_transaction et un transaction_hash coherents * pour se premunir d'une tentative d'appel exterieur * * @param int $id_transaction * @param string $transaction_hash * @param $config * configuration du module * @return array */ function presta_ogone_call_request_dist($id_transaction, $transaction_hash, $config) { if (!($row = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction) . " AND transaction_hash=" . sql_quote($transaction_hash)))) { return array(); } if (!$row['id_auteur'] and isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur']) { sql_updateq("spip_transactions", array("id_auteur" => intval($row['id_auteur'] = $GLOBALS['visiteur_session']['id_auteur'])), "id_transaction=" . intval($id_transaction)); } $cartes = array('VISA', 'MasterCard', 'American Express'); if (isset($config['cartes']) and is_array($config['cartes']) and $config['cartes']) { $cartes = $config['cartes']; } include_spip('inc/filtres'); $contexte = array(); $contexte['PSPID'] = $config['PSPID']; $contexte['orderID'] = $id_transaction . "/" . modulo($row['transaction_hash'], 999999); $contexte['operation'] = "SAL"; // c'est un paiement a l'acte immediat // passage en centimes d'euros : round en raison des approximations de calcul de PHP $contexte['currency'] = "EUR"; $contexte['amount'] = intval(round(100 * $row['montant'], 0)); #if (strlen($montant)<3) # $montant = str_pad($montant,3,'0',STR_PAD_LEFT); $contexte['language'] = ogone_language_code($GLOBALS['spip_lang']); // recuperer l'email $contexte['EMAIL'] = bank_porteur_email($row); $contexte['CN'] = ""; $contexte['ownerZIP'] = ""; $contexte['owneraddress'] = ""; $contexte['ownercty'] = ""; $contexte['ownertown'] = ""; $contexte['ownertelno'] = ""; // Urls de retour include_spip("inc/bank"); $contexte['accepturl'] = bank_url_api_retour($config, 'response', "id={$id_transaction};{$transaction_hash}"); $contexte['declineurl'] = bank_url_api_retour($config, 'cancel', "id={$id_transaction};{$transaction_hash}"); $contexte['cancelurl'] = bank_url_api_retour($config, 'cancel', "id={$id_transaction};{$transaction_hash}"); $contexte['exceptionurl'] = bank_url_api_retour($config, 'response', "id={$id_transaction};{$transaction_hash}"); $hidden = ""; foreach ($contexte as $k => $v) { $hidden .= "<input type='hidden' name='{$k}' value='" . str_replace("'", "'", $v) . "' />"; } include_spip('inc/filtres_mini'); $contexte = array('hidden' => $hidden, 'action' => ogone_url_serveur($config), 'backurl' => url_absolue(self()), 'id_transaction' => $id_transaction, 'transaction_hash' => $transaction_hash); $cartes_possibles = ogone_available_cards($config); $contexte['cards'] = array(); foreach ($cartes as $carte) { if (isset($cartes_possibles[$carte])) { $contexte['cards'][$carte] = $cartes_possibles[$carte]; } } return $contexte; }