1. Go to this page and download the library: Download yoonpay/yoon-php 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/ */
yoonpay / yoon-php example snippets
use Yoon\Yoon;
use Yoon\YoonException;
$yoon = new Yoon('https://pay.example.com', getenv('YOON_API_KEY'));
try {
$payment = $yoon->createPayment([
'amount' => 5000, // XOF has no minor unit: 5 000 FCFA
'currency' => 'XOF',
'country' => 'SN',
'method' => 'wave', // wave, orange_money, free_money, card
'customer' => ['phone' => '+221771234567'],
'reference' => 'order_1042',
'return_url' => 'https://shop.example/orders/1042',
], idempotencyKey: 'order-1042'); // tie it to your order: a retry can never charge twice
header('Location: ' . $payment->getCheckoutUrl());
} catch (YoonException $e) {
$e->problemCode(); // e.g. no_provider_for_method, refund_exceeds_payment
$e->isRetryable(); // true: retry with the same idempotency key
}
use Yoon\Laravel\Facades\Yoon;
$payment = Yoon::createPayment([...], 'order-' . $order->id);
// routes/web.php — exclude the path from CSRF (bootstrap/app.php: validateCsrfTokens(except: ['yoon/webhook']))
Route::post('/yoon/webhook', YoonWebhookController::class)->middleware('yoon.webhook');
// in the controller
$event = $request->attributes->get('yoon_event'); // Yoon\Webhook\Event
if ($event->type() === 'payment.succeeded') {
Order::where('yoon_payment_id', $event->object()['id'])->update(['status' => 'paid']);
}
public function checkout(Order $order, Yoon $yoon): Response
{
$payment = $yoon->createPayment([...], 'order-' . $order->getId());
return $this->redirect($payment->getCheckoutUrl());
}
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Yoon\Symfony\Attribute\YoonWebhook;
use Yoon\Webhook\Event;
final class YoonWebhookController
{
#[Route('/yoon/webhook', methods: ['POST'])]
#[YoonWebhook]
public function __invoke(Event $event): Response
{
if ($event->type() === 'payment.succeeded') {
// mark the order paid, using $event->object()['id']
}
return new Response('', 204);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.