lukasz-adamski/laravel-przelewy24

Przelewy24支付处理器服务提供商,用于Laravel框架。

0.2 2019-09-22 14:21 UTC

This package is auto-updated.

Last update: 2024-09-23 01:14:21 UTC


README

Laravel包,提供Przelewy24支付处理器支持。

安装

  1. 使用以下命令安装composer包
composer require lukasz-adamski/laravel-przelewy24
  1. config/app.php中添加服务提供者
Adams\Przelewy24\Przelewy24ServiceProvider::class,
  1. config/app.php中添加外观
'Przelewy24' => Adams\Przelewy24\Facades\Facade::class,
  1. 将配置文件发布到您的项目中
php artisan vendor:publish --provider="Adams\Przelewy24\Przelewy24ServiceProvider"
  1. 如果您启用了package_routes设置,您需要在app/Http/Middleware/VerifyCsrfToken.php中排除/webhook/przelewy24路由的CSRF验证
/**
 * The URIs that should be excluded from CSRF verification.
 *
 * @var array
 */
protected $except = [
    '/webhook/przelewy24'
];

环境

您可以设置以下环境变量来配置Przelewy24 API访问

  • PRZELEWY24_MODE - 当前API模式,默认设置为sandbox以测试实现。在生产环境中,您需要将此值设置为live
  • PRZELEWY24_MERCHANT_ID - 您从支付服务提供商收到的商户标识符,
  • PRZELEWY24_POS_ID - 用于处理支付的商店标识符。如果您不想处理指定商店的进件支付,请在此处输入商户标识符,支付将不会归类到任何商店,
  • PRZELEWY24_CRC - 从支付服务提供商收到的用于签名API请求的随机字符串。

测试

要运行预定义的测试集,请使用

php vendor/bin/phpunit

用法

下面提供了一个示例控制器实现

<?php

namespace App\Http\Controllers;

use Przelewy24;
use Adams\Przelewy24\Transaction;
use App\Http\Controllers\Controller;
use Illuminate\Support\Str;

class ExampleController extends Controller
{
    /**
     * Redirect user to payment provider.
     *
     * @return Response
     */
    public function pay()
    {
        $payload = new Transaction();
        $payload->setSessionId(Str::random(30));
        $payload->setAmount($item->price * 100);
        $payload->setDescription('My item description');
        $payload->setEmail('customer@example.com');
        $payload->setUrlReturn(url('/'));

        return Przelewy24::redirect($payload);
    }
}

事件

当启用此包的接收者(package_routes设置)时,您可以监听默认webhook控制器发出的预定义事件

  • \Adams\Przelewy24\Events\TransactionReceived::class - 交易成功接收(签名有效)。如果您不使用自动验证,则需要手动进行验证以收取预付费金,
  • \Adams\Przelewy24\Events\TransactionVerified::class - 交易成功接收并通过提供商的API验证。在分发此事件后,预付费金已添加到您的账户。

示例

  1. 以下可以看到使用php artisan make:listener ReceivePayment创建的TransactionVerified事件监听器的示例代码
<?php

namespace App\Listeners;

use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Adams\Przelewy24\Events\TransactionVerified;

class ReceivePayment
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param TransactionVerified $event
     * @return void
     */
    public function handle(TransactionVerified $event)
    {
        //
    }
}
  1. 您还需要在app/Providers/EventServiceProvider.php文件中注册新的监听器。
/**
 * The event listener mappings for the application.
 *
 * @var array
 */
protected $listen = [
    \Adams\Przelewy24\Events\TransactionVerified::class => [
        \App\Listeners\ReceivePayment::class,
    ],
];