function wha_secret_key($partnerId, $keyId) { static $secrets = array(); if (isset($secrets[$partnerId])) { return $secrets[$partnerId]; } $configs = bank_lister_configs(); foreach ($configs as $config) { if ($config['presta'] == 'internetplus' and $config['actif']) { if (isset($config['MERCHANT_ID']) and $config['MERCHANT_ID'] == $partnerId and isset($config['SECRET']) and $config['SECRET']) { return $secrets[$partnerId] = $config['SECRET']; } } } // sinon on log l'absence de cle spip_log("wha_secret_key : pas de config internetplus avec MERCHANT_ID={$partnerId} et SECRET defini", "internetplus" . _LOG_ERREUR); return $secrets[$partnerId] = "nokey"; }
/** * Compter si un presta est utiliser plusieurs fois pour permettre de mettre un label dessus * @param string $presta * @return string */ function bank_configure_label_presta($presta) { static $configs; if (is_null($configs)) { $configs = bank_lister_configs(); } $n = 0; foreach ($configs as $c) { if ($c['presta'] == $presta) { $n++; } if ($n > 1) { return ' '; } } return ''; }
function filtre_bank_lister_configs_dist($type) { include_spip('inc/bank'); return bank_lister_configs($type); }
/** * Trouver une config d'apres le nom du presta * si un ID de config est fourni en suffixe du nom du presta, * on l'utilise pour verifier qu'on a bien la bonne config * (cas de configs multiples avec le meme presta) * sinon on prend la premiere config qui a le bon presta * Si possible on choisit une config "active" * mais si on ne trouve qu'une config non active on s'en contente * * @param string $presta * soit presta-ID pour trouver le bon presta a coup sur * soit presta tout seul (legacy) => trouvera le premier qui correspond * @param bool $abo * @return array */ function bank_config($presta, $abo = false) { $id = ""; $mode = $presta; if (preg_match(",[/-][A-F0-9]{4},Uims", $presta)) { $mode = substr($presta, 0, -5); $id = substr($presta, -4); } if (substr($mode, -5) === "_test") { $mode = substr($mode, 0, -5); } // renommage d'un prestataire : assurer la continuite de fonctionnement if ($mode == "cyberplus") { $mode = "systempay"; } $type = null; if ($abo) { $type = 'abo'; } $config = false; if ($mode !== "gratuit") { $configs = bank_lister_configs($type); $ids = array($id); if ($id) { $ids[] = ""; } foreach ($ids as $i) { foreach ($configs as $k => $c) { if ($c['presta'] == $mode and (!$i or $i == bank_config_id($c))) { // si actif c'est le bon, on sort if (isset($c['actif']) and $c['actif']) { $config = $c; break; } // si inactif on le memorise mais on continue a chercher if (!$config) { $config = $c; } } } if ($config) { break; } } if (!$config) { spip_log("Configuration {$mode} introuvable", "bank" . _LOG_ERREUR); $config = array('erreur' => 'inconnu'); } } else { $config = array('presta' => 'gratuit', 'actif' => true); } #if (!isset($config['actif']) OR !$config['actif']){ # $config = array(); #} if (!isset($config['presta'])) { $config['presta'] = $mode; // servira pour l'aiguillage dans le futur } if (!isset($config['config'])) { $config['config'] = ($abo ? 'abo_' : '') . $mode; } if (!isset($config['type'])) { $config['type'] = $abo ? 'abo' : 'acte'; } return $config; }