skrskr/paymob
Composer 安装命令:
composer require skrskr/paymob
包简介
Laravel paymob payment gateway api integration
README 文档
README
This is a laravel package to facilate integartion with paymob apis Paymob docs.
Installation
1- You can install the package via composer:
composer require skrskr/paymob
2- Publish config file for editing if needed:
php artisan vendor:publish --tag=config --provider="Skrskr\Paymob\PaymobServiceProvider"
Usage
- Register new merchant account or login if you already have one (Register).
- Get Paymob credentials from Paymob Dashboard (How) and update
.envfile.
PAYMOB_API_KEY =
PAYMOB_CARD_INTEGRATION_ID =
PAYMOB_CARD_IFRAME_ID =
PAYMOB_HMAC_SECRET =
- Make payment and get iframe url from paymob
<?php use Illuminate\Support\Facades\Route; use Skrskr\Paymob\Facades\Paymob; Route::get('/test', function () { $orderData = [ "amount_cents"=> "100", // required, integer value in cents "currency"=> "EGP", // required "merchant_order_id"=> 1243, // optional, A unique alpha-numeric value for each transaction "expiration" => 3600, // required // optional fields in billing data, if it isn't available, please send it to be "NA", "billing_data" => [ "first_name" => "Mohamed", // required "last_name" => "Sakr", // required "email" => "mohamed@mail.com", // required "phone_number" => "01234567890", // required "apartment" => "NA", // optional "floor" => "NA", // optional "street" => "NA", //optional "building" => "NA", // optional "shipping_method" => "NA", // optional "postal_code" => "NA", //optional "city" => "NA", // optional "country" => "NA", // optional "state" => "NA" // optional ], ]; // Get payment iframe URL $iframeUrl = Paymob::pay($orderData); return $iframeUrl; //redirect to ifram url // return redirect()->to($iframeUrl); });
-
Webhook transaction url:
POST Request: (https://yourdomain.com/paymob/webhook)
Replace your yourdomain.com with actual domain name
For testing callback, you can use tool like Ngrok
-
Add Paymob trasaction callback to integration card How
-
For handling webhook events, you should create two listeners for each event and then register events and listeners in
EventServiceProvider
# Events: - Skrskr\Paymob\Events\TransactionSuccessedEvent::class - Skrskr\Paymob\Events\TransactionFailedEvent::class # Create two listeners for each event # run two commands php artisan make:listener PaymobTransactionSuccessedListener php artisan make:listener PaymobTransactionFailedListener
1- in App\ListenersPaymobTransactionSuccessedListener.php replace file content with class below
<?php namespace App\Listeners; use Skrskr\Paymob\Events\TransactionSuccessedEvent; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; class PaymobTransactionSuccessedListener { /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param Skrskr\Paymob\Events\TransactionSuccessedEvent $event * @return void */ public function handle(TransactionSuccessedEvent $event) { \Log::info($event->payload); } }
2- in App\Listeners\PaymobTransactionFailedListener.php replace file content with class content below
<?php namespace App\Listeners; use Skrskr\Paymob\Events\TransactionFailedEvent; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; class PaymobTransactionFailedListener { /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param Skrskr\Paymob\Events\TransactionFailedEvent $event * @return void */ public function handle(TransactionFailedEvent $event) { \Log::info($event->payload); } }
3- Register events and listeners in App\Providers\EventServiceProvider
<?php namespace App\Providers; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Skrskr\Paymob\Events\TransactionFailedEvent; use Skrskr\Paymob\Events\TransactionSuccessedEvent; use App\Listeners\PaymobTransactionSuccessedListener; use App\Listeners\PaymobTransactionFailedListener; class EventServiceProvider extends ServiceProvider { /** * The event listener mappings for the application. * * @var array<class-string, array<int, class-string>> */ protected $listen = [ TransactionSuccessedEvent::class => [ PaymobTransactionSuccessedListener::class ], TransactionFailedEvent::class => [ PaymobTransactionFailedListener::class ], ]; /** * Register any events for your application. * * @return void */ public function boot() { // } }
skrskr/paymob 适用场景与选型建议
skrskr/paymob 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 83 次下载、GitHub Stars 达 9, 最近一次更新时间为 2023 年 05 月 27 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 skrskr/paymob 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 skrskr/paymob 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 83
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 9
- 点击次数: 14
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2023-05-27