Dans le processus de vérification des paiements, CinetPay implémente un mécanisme de notifications qui consiste à contacter le partenaire sur un Webhook, afin de lui envoyer les informations d’un paiement dont le statut a évolué. A des fins de sécurité, un token HMAC a été mis en place dans l’entête de cette notification pour permettre une vérification du côté du partenaire.
Le but de ce tutoriel est de décrire le processus de vérification du token HMAC.
Avant de procéder d'aller , vous devez Récupérer votre Secret Key dans votre compte marchand:
Secret Key
Le serveur exécute une requête de type POST sur votre url de notification contenant :
Entête de la requête:
Corps de la requête:
Le token est constitué par concaténation des informations reçues dans le corps de la requête. Ainsi, il vous faut formuler une chaîne de caractères en respectant le schéma ci-après présenté:
cpm_site_id + cpm_trans_id + cpm_trans_date + cpm_amount + cpm_currency + signature +
payment_method + cel_phone_num + cpm_phone_prefixe + cpm_language + cpm_version
+ cpm_payment_config + cpm_page_action + cpm_custom + cpm_designation + cpm_error_message
$data = $cpm_site_id . $cpm_trans_id . $cpm_trans_date . $cpm_amount . $cpm_currency .
$signature . $payment_method . $cel_phone_num . $cpm_phone_prefixe .
$cpm_language . $cpm_version . $cpm_payment_config . $cpm_page_action . $cpm_custom . $cpm_designation . $cpm_error_message;
Créer le token suivant la technique HMAC en appliquant l'algorithme SHA256 avec la clé secrète (qui vous sera communiquée).
$token = hash_hmac(‘SHA256’, $data, $secretKey);
L’étape consiste à vérifier que le token reçu dans l’en-tête correspond à celui que vous aurez généré.
if(hash_equals($received_token, $generated_token))
{
// Valid Token
}