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仪表板(如何)获取Paymob凭证并更新.env文件。
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()
    {
        //
    }
}