Aller au contenu

SDK PHP

Guide d’intégration officiel PHP et Laravel pour Malipo.

Fenêtre de terminal
composer require malipo/malipo-php
<?php
require 'vendor/autoload.php';
use Malipo\Malipo;
$malipo = new Malipo(getenv('MALIPO_API_KEY'));
try {
$charge = $malipo->charges->create([
"amount" => 10,
"currency" => "USD",
"phone" => "+243810000000",
"network" => "VODACOM_MPESA",
"description" => "Order #123"
], [
'idempotencyKey' => 'unique_order_id_123'
]);
echo "Paiement initié : " . $charge['id'];
} catch (\Exception $e) {
echo "Erreur : " . $e->getMessage();
}
$balance = $malipo->balance->retrieve();
echo "Disponible : " . $balance['available'][0]['amount'];
use Malipo\Exceptions\MalipoException;
try {
$malipo->charges->create(['amount' => -1]);
} catch (MalipoException $e) {
echo "Erreur API : " . $e->getMessage();
echo "Code : " . $e->getStatusCode();
}
<?php
require 'vendor/autoload.php';
use Malipo\Malipo;
$malipo = new Malipo(getenv('MALIPO_API_KEY'));
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'];
$timestamp = $_SERVER['HTTP_X_WEBHOOK_TIMESTAMP'] ?? null;
try {
// Nécessite malipo/malipo-php 1.0.3 ou une version ultérieure : les versions précédentes
// ignorent l'argument d'horodatage et vérifient le corps seul, donc chaque livraison en
// direct échoue avec « Invalid webhook signature ».
// Conservez le corps brut. Le SDK vérifie la fenêtre temporelle (5 minutes par défaut)
// et signe l'horodatage, un point, puis le payload brut lorsque l'en-tête est présent.
$event = $malipo->webhooks->constructEvent(
$payload, $signature, getenv('MALIPO_WEBHOOK_SECRET'), $timestamp
);
if ($event['type'] === 'charge.succeeded') {
$charge = $event['data']['object'];
}
} catch (\Exception $e) {
http_response_code(400);
echo $e->getMessage();
}