Télécharger
Noter:

Ajouté le 2022-01-21
Visionné 3480 fois
5/5 (3)

Sécuriser le script Allopass via PHP

Description

Ce script permet de vérifier si une transaction est valide, le procédé est simple, on récupère les variable $_GET qu'Allopass nous renvoi dans l'URL d'accès au produit payant que vous avez ajouté sur HIPAY Mobile (Anciennement Allopass, aujourd'hui Mobiyo).

J'ai pris des bouts de codes de la doc officielle de la solution de micropaiement HiPay Mobile.

Une fois téléchargé il vous faudra configurer le fichier conf/conf.xml et renseigner les champs <api_key> et <private_key>, vous trouverez ces informations depuis votre espace marchand hipaymobile.com à l'adresse: https://merchant.hipaymobile.com/merchant/toolbox/

Il vous reste plus qu'à placer le code suivant sur la page d'accès à votre produit pour sécuriser d'avantage leur vérification JavaScript afin que des requêtes PHP ne puisse pas être exécutées si la transaction est incorrecte.

error_reporting(0);//si vous ne voulez pas afficher les erreurs
$TrxId="erreur";
if(isset($_GET['transaction_id'])){
if(preg_match("#^[a-z0-9-]{36}$#",$_GET['transaction_id'])){
$TrxId=$_GET['transaction_id'];
}
}
if($TrxId=="erreur"){
if(isset($_GET['trxid'])){
if(preg_match("#^[a-z0-9-]{36}$#",$_GET['trxid'])){
$TrxId=$_GET['trxid'];
}
}
}
if($TrxId=="erreur"){
echo "ID Transaction incorrect ou inconnue.";
} else {
require_once 'Allopass-PHP5-API-Kit/api/AllopassAPI.php';
$api = new AllopassAPI();
$response = $api->getTransaction($TrxId);//numéro de transaction disponible via $_GET['trxid'] ou $_GET['transaction_id']
if($response->getStatusDescription()!="success"){
echo "La transaction n'a pas été valide.";
} else {
echo "Transaction validée!";
//Vous pouvez procéder au requêtes PHP!
}
}


Si le script trouve pas la transaction, il affichera rien et n'exécutera pas le reste de la page, je n'ai pas réussi à trouver comment faire un echo "Transaction not found", si vous avez la solution, notez la dans les commentaires s'il vous plaît.


Il vous ai possible d'avoir toutes infos concernant la transaction en question avec les fonctions suivantes:

var_dump($response->getStatusDescription());
var_dump($response->getStatus());
var_dump($response->getAccessType());
var_dump($response->getTransactionId());
var_dump($response->getPrice());
var_dump($response->getPaid());
var_dump($response->getCreationDate());
var_dump($response->getEndDate());
var_dump($response->getProductName());
var_dump($response->getCustomerIp());
var_dump($response->getCustomerCountry());
$codes=$response->getCodes(); echo $codes[0];


Vous pouvez télécharger l'API Mobiyo complète ici :
Allopass-PHP5-API-Kit.zip
(Téléchargé 367 fois)


Faire un don



Besoin de travaux pour votre site ?

Je suis disponible, contactez-moi !

Commentaires

Ajouter un commentaire

Commenter
Pseudo/Nom *
Email *
Message *
Captcha *
memo1memo2
Commenter

Les champs marqués d'un * sont obligatoires.

max le 31 Octobre 2021 à 10:46

bonjour
il n'existe pas un autre moyen pour vérifier si le code allopass est bon ?
j'ai pas tester votre code mais ça fait beau coup de fichier pour une verif
avant j'utilisais ça mais ne fonctionne plus avec leur code api...j'ai modifier avec apikey.

<?php
$id_site = "111";
$id_produit = "111";
$apikey = "111111";
?>
<noscript>
<meta http-equiv="Refresh" content="0;url=https://payment.allopass.com/error.apu?ids=<?php echo $id_site; ?>&amp;idd=<?php echo $id_produit; ?>">
</noscript>

<script type="text/javascript" src="https://payment.allopass.com/api/secure.apu?ids=<?php echo $id_site; ?>&amp;idd=<?php echo $id_produit; ?>"></script>

<script type="text/javascript">
//<![CDATA[
if(typeof loaded == 'undefined') {
window.location.href = 'https://payment.allopass.com/error.apu?ids=<?php echo $id_site; ?>&amp;idd=<?php echo $id_produit; ?>';
}
//]]>
</script>


<?php
if (isset($_SESSION['login']))
{
$log = $_SESSION['login'];

$RECALL = $_GET['RECALL'];
//recup lien
$lienallo = $_SERVER['REQUEST_URI'];


$RECALL = urlencode( $RECALL );
$AUTH = urlencode( "$id_site/$id_produit/$apikey" );


$r = @file( "http://payment.allopass.com/api/checkcode.apu?code=$RECALL&auth=$AUTH" );

// on teste la réponse du serveur

if( substr( $r[0],0,2 ) != "OK" )
{
$_SESSION['trhalloco'] = 'triche';

}
else
{

echo 'go';
}
}


Vous demandez combien pour code php qui confirme si le paiement est ok pour paypal ?
j'ai aussi un ancien code mais ne fonctionne pas.
j'en ai marre d'attendre une réponse tous les 15 jours de paypal pour dire d'allez voir leur doc de merde.
cordialement

admin le 31 Octobre 2021 à 11:08

Bonjour, il vaut mieux se référé au bout de code de la doc Mobiyo pour être sûr que le code fonctionne correctement, que de vouloir enlever des bouts de codes pour gagner "50ko" de fichier en moins... ;)

Je le répète, c'est un module de paiement, il vaut mieux pas toucher au code de leur doc.


Concernant l'installation du module de paiement PayPal, je vous invite, s'il vous plaît, à me contacter depuis la page contact du site.

Chris le 05 Novembre 2021 à 22:10

Bonjour,
merci pour le code cependant j'obtiens cette erreur :

Parse error: syntax error, unexpected '[' in /var/www/vhosts/xxxxxxxx.com/httpdocs/allopass/Allopass-PHP5-API-Kit/api/AllopassAPI.php on line 204

admin le 05 Novembre 2021 à 23:54

Bonjour, merci pour votre commentaire, votre problème vient de votre version PHP qui n'accepte pas encore la syntaxe pour définir l'array.

Vous avez: [contenu du tableau]
Il vous faut: array(contenu du tableau)

Le mieux est de mettre à jour votre version PHP, ça sera plus simple que de modifier tout le script.

Si je dis pas de bêtises, la syntaxe "[]" pour définir un tableau est nouvelle depuis la version 5.6

Chris le 06 Novembre 2021 à 00:42

Merci pour l'info :-)

Retour à la liste des scripts