Skip to main content

Web Hook Response

Vous souvenez-vous du paramètre notify_url ou notification_url VOTRE URL DE NOTIFICATION ?

Vous devez maintenant l'implémenter dans votre backend pour être notifié de l'évolution du paiement et mettre à jour votre base de données

Lorsque vous initier une transaction vous fournissez une URL de notification à laquelle nous vous notifions du résultat de la transaction afin de vous permettre d'avoir les détails de la transaction.

AdjeminPay fait une requete HTTP à votre VOTRE URL DE NOTIFICATION avec la méthode POST et les paramètres suivant en BODY:

Le Content-Type de la requête est application/x-www-form-urlencoded

  • transaction_id : la référence de la transaction fournit par le marchand (vous)
  • status : le status du paiement
  • amount : le montant de la transaction
  • phone_number : le numéro de téléphone fourni par l'utilisateur qui fait le paiement
  • buyer_name : le nom de l'utilisateur
  • buyer_reference : le numéro de téléphone ou la référence fourni par l'utilisateur qui fait le paiement
  • currency_code : la devise
  • cancelled_at : si la transaction est annulée, la date à laquelle la transaction est annulée
  • approuved_at : si la transaction est approuvée, la date à laquelle la transaction est approuvée
  • transaction_type : le moyen de paiement utilisé ORANGE_CI ou MTN_CI

Code PHP#

Exemple de gestion des notifications provenant de AdjeminPay

hook.php
<?php
public function notifyAdjeminPay(Request $request)
{
$input = $request->all();
$transaction_reference = $input['transaction_id'];
$status = $input['status'];
if(empty($transaction_reference)){
return response()->json([
'error' => [
'message' => "Transaction not found",
'transaction_reference' => $transaction_reference
],
]);
}
// Recuperation de la ligne de la transaction dans votre base de données
$transaction = InvoicePayment::where(['payment_reference' => $transaction_reference])->first();
if(empty($transaction)){
return response()->json([
'error' => [
'message' => "Transaction not found",
'transaction_reference' => $transaction_reference
],
]);
}
$invoice = Invoice::where(["id" => $transaction->invoice_id])->first();
$responseData = null;
if($invoice->status == 'UNPAID'){
if ($transaction != null) {
switch ($status) {
case 'SUCCESSFUL' :
$transaction->status = 'SUCCESSFUL';
$transaction->is_waiting = false;
$transaction->is_completed = true;
$transaction->save();
$this->validateTransaction($transaction_reference);
break;
case 'FAILED' :
$transaction->status = 'FAILED';
$transaction->is_waiting = false;
$transaction->is_completed = true;
$transaction->save();
$this->cancelTransaction($transaction_reference);
break;
case 'CANCELLED' :
$transaction->status = 'CANCELLED';
$transaction->is_waiting = false;
$transaction->is_completed = true;
$transaction->save();
$this->cancelTransaction($transaction_reference);
break;
case 'EXPIRED' :
$transaction->status = 'EXPIRED';
$transaction->is_waiting = false;
$transaction->is_completed = true;
$transaction->save();
break;
default:
return response()->json([
'error' => [
'message' => 'MISSING_TRANSACTION_STATUS'
],
]);
break;
}
}
}
?>