1. Go to this page and download the library: Download bekambeyene/telebirr library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
bekambeyene / telebirr example snippets
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Bekambeyene\Telebirr\Facades\Telebirr;
use Bekambeyene\Telebirr\Exceptions\TelebirrException;
use Bekambeyene\Telebirr\Exceptions\TelebirrServerException;
use Illuminate\Support\Facades\Log;
class PaymentController extends Controller
{
/**
* Initiate an H5 payment and redirect the user.
*/
public function checkout(Request $request)
{
try {
// Provide a clear subject, amount, and optionally a custom order ID
$paymentUrl = Telebirr::createOrder('Premium Subscription', 250.00, 'ORDER-' . uniqid());
// Redirect the user to the generated H5 Telebirr Checkout URL
return redirect()->away($paymentUrl);
} catch (TelebirrServerException $e) {
// 60200087: The Telebirr gateway is busy or syncing
Log::warning('Telebirr server status exception: ' . $e->getMessage());
return back()->with('error', 'Telebirr payment services are currently busy. Please try again in a few moments.');
} catch (TelebirrException $e) {
// Configuration or generic SDK error
Log::error('Telebirr config error: ' . $e->getMessage());
return back()->with('error', 'Failed to initiate payment.');
}
}
}
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Bekambeyene\Telebirr\Facades\Telebirr;
use Bekambeyene\Telebirr\Exceptions\InvalidSignatureException;
use Bekambeyene\Telebirr\Exceptions\TimestampExpiredException;
use Bekambeyene\Telebirr\Exceptions\ReplayAttackException;
use Illuminate\Support\Facades\Log;
class WebhookController extends Controller
{
public function handle(Request $request)
{
try {
// Automatically validates signature, timestamp fresh window, and checks duplicate nonces
$payload = Telebirr::handleWebhook($request);
if ($payload['trade_status'] === 'PAY_SUCCESS') {
// Process order securely...
}
return response('success');
} catch (InvalidSignatureException $e) {
Log::error('Webhook Invalid Signature: ' . $e->getMessage());
return response('invalid signature', 403);
} catch (TimestampExpiredException $e) {
Log::error('Webhook Request Expired: ' . $e->getMessage());
return response('request expired', 403);
} catch (ReplayAttackException $e) {
Log::error('Replay Attack detected: ' . $e->getMessage());
return response('request already processed', 409);
} catch (\Exception $e) {
Log::error('Webhook handling failed: ' . $e->getMessage());
return response('error', 500);
}
}
}