SDKs
SDK PHP
SDK PHP officiel pour l’API de paiement lomi.
SDK PHP
SDK PHP officiel pour l’API de paiement lomi. Compatible Laravel, Symfony, WordPress et PHP 8.0+.
En raison de la structure du dépôt monorepo, le SDK PHP n’est pas publié sur Packagist. Installez-le depuis GitHub avec Composer.
Installation
Ajoutez à votre composer.json :
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/lomiafrica/lomi./"
}
],
"require": {
"lomi/lomi-sdk": "dev-main#apps/sdks/php"
}
}Puis exécutez :
composer installDémarrage rapide
<?php
require_once 'vendor/autoload.php';
use Lomi\Configuration;
use Lomi\ApiClient;
use Lomi\Api\CustomersApi;
$config = Configuration::getDefaultConfiguration()
->setApiKey('X-API-KEY', getenv('LOMI_API_KEY'));
// Bac à sable / tests
// $config->setHost('https://sandbox.api.lomi.africa');
$apiClient = new ApiClient($config);Exemples
Lister les clients
<?php
use Lomi\Api\CustomersApi;
$customersApi = new CustomersApi($apiClient);
$customers = $customersApi->listCustomers();
foreach ($customers->getData() as $customer) {
echo $customer->getId() . ': ' . $customer->getName() . "\n";
}Créer un client
<?php
use Lomi\Api\CustomersApi;
use Lomi\Model\CustomersCreate;
$customersApi = new CustomersApi($apiClient);
$customerData = new CustomersCreate([
'name' => 'Aminata Touré',
'email' => 'aminata@example.com',
'phone_number' => '+2210712345678'
]);
$customer = $customersApi->createCustomer($customerData);
echo 'Client créé : ' . $customer->getId();Créer une session de paiement
<?php
use Lomi\Api\CheckoutSessionsApi;
use Lomi\Model\CheckoutSessionsCreate;
$checkoutApi = new CheckoutSessionsApi($apiClient);
$sessionData = new CheckoutSessionsCreate([
'amount' => 5000, // 5,000 F CFA
'currency' => 'XOF',
'success_url' => 'https://yoursite.com/success',
'cancel_url' => 'https://yoursite.com/cancel',
'metadata' => ['order_id' => 'order_123']
]);
$session = $checkoutApi->createCheckoutSession($sessionData);
// Rediriger le client vers le tunnel
header('Location: ' . $session->getUrl());
exit;Lister les transactions
<?php
use Lomi\Api\TransactionsApi;
$transactionsApi = new TransactionsApi($apiClient);
$transactions = $transactionsApi->listTransactions();
foreach ($transactions->getData() as $tx) {
echo sprintf(
"%s: %d %s - %s\n",
$tx->getId(),
$tx->getAmount(),
$tx->getCurrency(),
$tx->getStatus()
);
}Créer un lien de paiement
<?php
use Lomi\Api\PaymentLinksApi;
use Lomi\Model\PaymentLinksCreate;
$paymentLinksApi = new PaymentLinksApi($apiClient);
$linkData = new PaymentLinksCreate([
'amount' => 10000,
'currency' => 'XOF',
'description' => 'Abonnement Premium',
'reusable' => true
]);
$link = $paymentLinksApi->createPaymentLink($linkData);
echo 'Partagez ce lien : ' . $link->getUrl();Gestion des erreurs
<?php
use Lomi\Api\CustomersApi;
use Lomi\ApiException;
$customersApi = new CustomersApi($apiClient);
try {
$customer = $customersApi->retrieveCustomer('invalid_id');
} catch (ApiException $e) {
echo 'Erreur API : ' . $e->getCode() . "\n";
echo 'Message : ' . $e->getMessage() . "\n";
echo 'Réponse : ' . $e->getResponseBody() . "\n";
}Intégration Laravel
Service Provider
<?php
// app/Providers/LomiServiceProvider.php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Lomi\Configuration;
use Lomi\ApiClient;
class LomiServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton(ApiClient::class, function () {
$config = Configuration::getDefaultConfiguration()
->setApiKey('X-API-KEY', config('services.lomi.api_key'));
return new ApiClient($config);
});
}
}Config
<?php
// config/services.php
return [
// ...
'lomi' => [
'api_key' => env('LOMI_API_KEY'),
'webhook_secret' => env('LOMI_WEBHOOK_SECRET'),
],
];Webhook Controller
<?php
// app/Http/Controllers/LomiWebhookController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class LomiWebhookController extends Controller
{
public function handle(Request $request)
{
$signature = $request->header('x-lomi-signature');
$secret = config('services.lomi.webhook_secret');
$payload = $request->getContent();
$expectedSignature = hash_hmac('sha256', $payload, $secret);
if (!hash_equals($expectedSignature, $signature)) {
return response()->json(['error' => 'Invalid signature'], 400);
}
$event = $request->all();
switch ($event['type']) {
case 'PAYMENT_SUCCEEDED':
// Traiter le paiement
break;
}
return response()->json(['received' => true]);
}
}Routes
<?php
// routes/web.php
use App\Http\Controllers\LomiWebhookController;
Route::post('/webhook/lomi', [LomiWebhookController::class, 'handle'])
->withoutMiddleware(['web', 'csrf']);Intégration WordPress
<?php
// Dans le functions.php de votre thème ou extension
add_action('rest_api_init', function () {
register_rest_route('lomi/v1', '/webhook', [
'methods' => 'POST',
'callback' => 'handle_lomi_webhook',
'permission_callback' => '__return_true',
]);
});
function handle_lomi_webhook(WP_REST_Request $request) {
$signature = $request->get_header('x-lomi-signature');
$secret = get_option('lomi_webhook_secret');
$payload = $request->get_body();
$expected = hash_hmac('sha256', $payload, $secret);
if (!hash_equals($expected, $signature)) {
return new WP_Error('invalid_signature', 'Invalid signature', ['status' => 400]);
}
$event = $request->get_json_params();
if ($event['type'] === 'PAYMENT_SUCCEEDED') {
// Traiter le paiement
}
return ['received' => true];
}API disponibles
| Classe API | Méthodes |
|---|---|
CustomersApi | listCustomers, createCustomer, retrieveCustomer, updateCustomer, deleteCustomer |
CheckoutSessionsApi | listCheckoutSessions, createCheckoutSession, retrieveCheckoutSession, updateCheckoutSession, deleteCheckoutSession |
TransactionsApi | listTransactions, retrieveTransaction |
PaymentLinksApi | listPaymentLinks, createPaymentLink, retrievePaymentLink, updatePaymentLink, deletePaymentLink |
ProductsApi | listProducts, createProduct, retrieveProduct, updateProduct, deleteProduct |
SubscriptionsApi | listSubscriptions, createSubscription, retrieveSubscription, updateSubscription, deleteSubscription |
RefundsApi | listRefunds, createRefund, retrieveRefund |
PayoutsApi | listPayouts, createPayout, retrievePayout |
BeneficiaryPayoutsApi | listBeneficiaryPayouts, createBeneficiaryPayout, retrieveBeneficiaryPayout |
PaymentRequestsApi | listPaymentRequests, createPaymentRequest, retrievePaymentRequest |
DiscountCouponsApi | listDiscountCoupons, createDiscountCoupon, retrieveDiscountCoupon, updateDiscountCoupon, deleteDiscountCoupon |
WebhookDeliveryLogsApi | listWebhookDeliveryLogs, retrieveWebhookDeliveryLog |
WebhooksApi | listWebhooks, createWebhook, retrieveWebhook, updateWebhook, deleteWebhook |
Besoin d’aide ?
- Référence API — documentation complète
- Issues GitHub — anomalies
- Discord — communauté