skrskr / paymob
该软件包最新版本(v1.0.3)没有可用的许可证信息。
Laravel paymob支付网关API集成
v1.0.3
2023-06-03 18:00 UTC
This package is auto-updated.
Last update: 2024-09-03 20:51:31 UTC
README
这是一个laravel软件包,用于简化与paymob api的集成 Paymob文档。
安装
1- 您可以通过composer安装此软件包
composer require skrskr/paymob
2- 如果需要,发布配置文件进行编辑
php artisan vendor:publish --tag=config --provider="Skrskr\Paymob\PaymobServiceProvider"
使用方法
PAYMOB_API_KEY =
PAYMOB_CARD_INTEGRATION_ID =
PAYMOB_CARD_IFRAME_ID =
PAYMOB_HMAC_SECRET =
- 进行支付,并从paymob获取iframe URL
<?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交易URL
POST请求:(https://yourdomain.com/paymob/webhook)
将yourdomain.com替换为实际的域名
对于测试回调,您可以使用如Ngrok之类的工具
-
将Paymob交易回调添加到集成卡 如何
-
为了处理webhook事件,您应该为每个事件创建两个监听器,然后在
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- 在App\ListenersPaymobTransactionSuccessedListener.php
中,将文件内容替换为以下类
<?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- 在App\Listeners\PaymobTransactionFailedListener.php
中,将文件内容替换为以下类内容
<?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- 在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() { // } }