用于处理伊朗银行系统互联网支付网关的Laravel包

v1.2 2023-01-03 13:40 UTC

This package is auto-updated.

Last update: 2024-09-30 01:25:41 UTC


README

Laravel支付网关

用于处理伊朗银行系统互联网支付网关(IPGs)的Laravel包

接受Sadad (Melli)Pay.irZarinpal以及其他伊朗支付网关。只需使用PBPayment即可直接在您的网站上接收付款。

Latest Stable Version Total Downloads Latest Unstable Version License

网关

要求

  • PHP >= 7.4
  • PHP ext-curl
  • PHP ext-json
  • PHP ext-soap
  • Laravel (或 Lumen) >= 5.7

安装

  1. 通过composer require命令将包添加到您的composer文件中

    $ composer require salamzadeh/pb-payment:^1.2.0

    或手动将其添加到composer.json

    "require": {
        "salamzadeh/pb-payment": "^1.2.0"
    }
  2. PBPayment的服务提供者将自动使用Laravel的自动发现功能进行注册。

    注意:对于Lumen,您必须手动将PBPayment服务提供者添加到bootstrap/app.php

    $app->register( Salamzadeh\PBPayment\PBPaymentServiceProvider::class);
  3. 使用以下命令发布配置文件和迁移

    php artisan vendor:publish --provider="Salamzadeh\PBPayment\PBPaymentServiceProvider"
  4. 迁移发布后,您可以通过运行迁移来创建交易表

    php artisan migrate

使用方法

新建付款

use Salamzadeh\PBPayment\PBPayment;

// Default gateway
$payment = PBPayment::create();
// Select one of available gateways
$payment = PBPayment::create('sadad');
// Test gateway (Would not work on production environment)
$payment = PBPayment::create('test');
// Or use your own gateway
$payment = PBPayment::create(NewGateway::class);

$payment->setUserId($user->id)
        ->setAmount($data['amount'])
        ->setCallbackUrl(route('bank.callback'))
        ->ready();

return $payment->redirect();

验证付款

use Salamzadeh\PBPayment\PBPayment;
use Salamzadeh\PBPayment\Exceptions\PBPaymentException;

try {
    $payment = PBPayment::detect()->confirm();
    $trackingCode = $payment->getTrackingCode();
    $statusText = $payment->getTransactionStatusText();
} catch (Salamzadeh\PBPayment\Exceptions\PBPaymentException $ex) {
    throw $ex;
}

创建您自己的支付网关类

use Salamzadeh\PBPayment\Gateways\AbstractGateway;
use Salamzadeh\PBPayment\Gateways\GatewayInterface;

class NewGateway extends AbstractGateway implements GatewayInterface
{
    public function getName(): string
    {
        return 'new-gateway';
    }

    public function initialize(array $parameters = []): self
    {
        parent::initialize($parameters);
    
        return $this;
    }
    
    public function purchase(): void
    {
        // Send Purchase Request

        $reference_number = 'xxxx';

        $this->transactionUpdate([
            'reference_number' => $reference_number,
        ]);
    }

    
    public function purchaseUri(): string
    {
        return 'http://new-gateway.com/token/xxxx';
    }
    
    public function verify(): void
    {
        $this->transactionVerifyPending();
            
        // Send Payment Verify Request

        $tracking_code = 'yyyy';

        $this->transactionSucceed([
            'tracking_code' => $tracking_code
        ]);
    }
}

从v1.x升级

待办事项

贡献

欢迎贡献!

支持

如果您认为发现了错误,请使用GitHub问题跟踪器报告,或者更好的方式是,分支库并提交拉取请求。

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件