PHP code example of ahmed-abd0 / laravel-paymob
1. Go to this page and download the library: Download ahmed-abd0/laravel-paymob 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/ */
ahmed-abd0 / laravel-paymob example snippets
use Paymob\Laravel\Concerns\Billable;
class User extends Authenticatable
{
use Billable;
}
use Paymob\Laravel\Data\SubscriptionPlanData;
use Paymob\Laravel\Enums\PlanFrequency;
use Paymob\Laravel\Facades\Paymob;
$plan = Paymob::plans()->create(new SubscriptionPlanData(
name: 'Clinic Pro Monthly',
amountCents: 49900,
integration: (int) config('paymob.integrations.moto'),
frequency: PlanFrequency::MONTHLY,
reminderDays: 2,
retrialDays: 2,
webhookUrl: route('paymob.webhooks.subscription', [
'secret' => config('paymob.webhooks.subscription_secret')
])
));
$checkout = $user->newSubscription('default', $plan)
->billing([
'first_name' => 'Ahmed',
'last_name' => 'Abdo',
'email' => '[email protected] ',
'phone_number' => '+201000000000',
'country' => 'EG'
])
->metadata(['tenant_id' => $tenant->id])
->checkout();
return $checkout->redirect();
$checkout = $user->newSubscription('default', $plan)
->trialDays(14)
->amount(100)
->checkout();
$checkout = $user->newSubscription('default', $plan)
->trialDays(14)
->amount(100)
->paymentMethods([(int) config('paymob.integrations.verification_3ds')])
->checkout();
$user->subscribed('default');
$user->subscription('default')?->active();
$user->subscription('default')?->onTrial();
$user->subscription('default')?->onGracePeriod();
$user->subscription('default')?->pastDue();
$subscription = $user->subscription('default');
$subscription->suspend();
$subscription->resume(nextBilling: '2026-08-15');
$subscription->updateBilling([
'amount_cents' => 59900,
'ends_at' => '2027-07-15',
'next_billing' => '2026-08-15'
]);
$subscription->cancel();
$subscription->sync();
$subscription->sync(withRelations: true);
$cards = Paymob::subscriptions()->cards($subscription->paymob_id);
Paymob::subscriptions()->changePrimaryCard($subscription->paymob_id, $cardId);
Paymob::subscriptions()->deleteCard($subscription->paymob_id, $cardId);
use Paymob\Laravel\Data\BillingData;
use Paymob\Laravel\Data\IntentionData;
use Paymob\Laravel\Data\Item;
$data = new IntentionData(
amount: 100,
billingData: BillingData::fromArray($user->paymobBillingData()),
paymentMethods: [(int) config('paymob.integrations.card_3ds')],
subscriptionId: (int) $subscription->paymob_id
);
$data->items(new Item('Card verification', 100));
$response = Paymob::subscriptions()->addCard($data);
$data = new IntentionData(
amount: 10000,
billingData: BillingData::fromArray($user->paymobBillingData()),
paymentMethods: [(int) config('paymob.integrations.default')],
specialReference: 'ORDER-1001'
);
$data->items(new Item('Order 1001', 10000));
$response = Paymob::intentions()->create($data);
$url = Paymob::intentions()->checkoutUrl($response['client_secret']);
$response = Paymob::savedCards()->customerInitiated($data, [$storedToken]);
$intention = Paymob::savedCards()->merchantInitiatedIntention($motoIntention);
$paymentToken = data_get($intention->toArray(), 'payment_keys.0.key');
$charge = Paymob::savedCards()->payMoto($storedCardToken, $paymentToken);
Paymob::payments()->refund($transactionId, 5000);
Paymob::payments()->void($transactionId);
Paymob::payments()->capture($transactionId, 10000);
Paymob::transactions()->byOrder(orderId: $paymobOrderId);
Paymob::transactions()->byOrder(merchantOrderId: 'ORDER-1001');
Paymob::transactions()->find($transactionId);
$link = Paymob::quickLinks()->create([
'amount_cents' => 10000,
'payment_methods' => config('paymob.integrations.default'),
'full_name' => 'Ahmed Abdo',
'email' => '[email protected] ',
'phone_number' => '+201000000000',
'description' => 'Invoice 1001',
'reference_id' => 'INV-1001',
'is_live' => false,
'notification_url' => route('paymob.webhooks.transaction')
]);
Paymob::quickLinks()->cancel($link['id']);
Paymob\Laravel\Events\WebhookHandled
Paymob\Laravel\Events\TransactionUpdated
Paymob\Laravel\Events\SubscriptionUpdated
Paymob\Laravel\Events\PaymentMethodUpdated
use Illuminate\Support\Facades\Schedule;
Schedule::command('paymob:sync-subscriptions --plans')->hourly();
Schedule::command('paymob:prune-webhooks')->daily();
bash
composer vendor:publish --tag=paymob-config
php artisan migrate
text
POST /paymob/webhooks
POST /paymob/webhooks/transaction
POST /paymob/webhooks/token
POST /paymob/webhooks/subscription?secret=...
bash
php artisan paymob:sync-subscriptions --plans
php artisan paymob:sync-subscriptions --with-relations
php artisan paymob:prune-webhooks
php artisan paymob:prune-webhooks --days=30