Facebook
Télécharger
Noter:

Ajouté le 2022-01-21
Visionné 4265 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é 415 fois)






Besoin d'un web développeur ?

Je suis disponible, contactez-moi !

Commentaires

Ajouter un commentaire

Commenter
Pseudo/Nom
Email
Message
Captcha
memo1
Commenter

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 :-)

cyril le 11 Octobre 2022 à 20:04

Bonjour, je suis en train d'installer allopass sur mon site en php, je n'est pas trouve sur l'interface de mobiyo comment creer un code de test, peu être le savez vous?

admin le 11 Octobre 2022 à 20:10

Oui, vous allez à "Sites & Produits" puis vous cliquez sur un site, la liste déroulante s'ouvre (si vous avez ajouté un produit), vous cliquez sur l'engrenage "Modifier le produit", puis à gauche, dans l'encart "Configuration" puis "Paramètres" puis "Créer un code de test (optionnel)"

cyril le 11 Octobre 2022 à 20:43

Merci j'ai trouve

cyril le 11 Octobre 2022 à 21:00

Peu être pourrez vous m'aider encore, j'ai installé l'api...
Configurer les urls dans l'interface mobiyo...

Mais j'ai un problème car mon bouton pointe pas sur ma bonne page
Une idée?

cyril le 11 Octobre 2022 à 21:02

J'allé oublier le code est : test

admin le 11 Octobre 2022 à 21:06

Je peux pas voir le code PHP.

En revanche je peux vous conseiller de bien renseigner l'attribut "action" de la balise "form" dans votre HTML

cyril le 11 Octobre 2022 à 21:14

En fait, pour les tests j'ai mi uniquement le bouton dans la page index.php rien d'autre.

J'ai mis votre code d'exemple dans download.php mais celui ci n'est pas exécuté

Retour à la liste des scripts