abdal/abdal-zarinpal-pg

为 Laravel 设计的 ZarinPal 支付网关

16.16.4 2024-06-22 09:49 UTC

This package is auto-updated.

Last update: 2024-09-14 23:04:25 UTC


README

💎 主要目标

此包旨在集成 ZarinPal 支付网关与 Laravel。

⚓ 先决条件

PHP 7.2 或更高版本
Laravel 7.0 或更高版本

✨ 功能

  • 支付请求
  • 支付确认
  • 错误管理
  • 使用链式方法简单使用
  • 在每次交易请求时选择货币单位
  • 支持 Laravel 的最新版本和最新版本

📝 工作原理

安装

使用 Composer 安装此包

composer require abdal/abdal-zarinpal-pg

更新

使用 Composer 更新此包

 composer update  abdal/abdal-zarinpal-pg

设置

然后,在 config/app.php 文件中添加服务提供者:(对于 Laravel 11,无需执行此操作)

'providers' => [
// ...
Abdal\AbdalZarinpalPg\ZarinpalServiceProvider::class,
];

注册 Facade:(对于 Laravel 11,无需执行此操作)

'aliases' => [
// ...
'Zarinpal' => Abdal\AbdalZarinpalPg\Facades\Zarinpal::class,
];

使用

假设您已经按以下方式定义了路由

Route::get('/payment/request', [ZarinpalController::class, 'requestPayment'])->name('payment.request');
Route::get('/payment/verify', [ZarinpalController::class, 'verifyPayment'])->name('payment.verify');

在定义路由后,您可以传递用户并进入与路由连接的函数,在函数中输入以下代码以请求支付或发送客户到网关

 use Abdal\AbdalZarinpalPg\Zarinpal;

    public function requestPayment(Request $request)
    {
        $response = Zarinpal::merchantId('00000000-0000-0000-0000-000000000000')
            ->amount(13660000)
            ->currency('IRT')
            ->callbackUrl(route('payment.verify'))
            ->description('خرید تست')
            ->email('info@ebrasha.com')
            ->mobile('09022223301')
            ->request();

        if (!$response->success()) {
            return response()->json(['error' => $response->message()], 400);

        }

        $authority = $response->getAuthority(); // Save Authority in Database
        return $response->redirect();

    }

为确认支付

use Abdal\AbdalZarinpalPg\Zarinpal;


 public function verifyPayment(Request $request)
    {

        $response = Zarinpal::merchantId('00000000-0000-0000-0000-000000000000')
            ->amount(13660000)
            ->currency('IRT')
            ->authority($request->query('Authority'))
            ->verify();

        if (!$response->success()) {
            return response()->json(['error' => $response->message()], 400);
        }

        return $response->referenceId();
    }

如果您不希望在每次使用包时都输入网关代码和货币单位,您也可以使用 .env 文件。在您的项目 .env 文件中,添加 ZARINPAL_MERCHANT_ID 和 ZARINPAL_CURRENCY 的值

添加商户代码或网关代码

ZARINPAL_MERCHANT_ID=00000000-0000-0000-0000-000000000000

将货币单位更改为里亚尔(默认使用里亚尔单位)

ZARINPAL_CURRENCY=IRT

将货币单位更改为里亚尔

ZARINPAL_CURRENCY=IRR

如果已在 .env 文件中输入设置,请按以下方式使用代码,例如使用默认设置发送交易到银行网关

 use Abdal\AbdalZarinpalPg\Zarinpal;

   public function requestPayment(Request $request)
{
    $response = (new Zarinpal())
        ->amount(13660000)
        ->callbackUrl(route('payment.verify'))
        ->description('خرید تست')
        ->email('info@ebrasha.com')
        ->mobile('09022223301')
        ->request();

    if (!$response->success()) {
        return response()->json(['error' => $response->message()], 400);
    }

    $authority = $response->getAuthority(); // Save Authority in Database
    return $response->redirect();
}

为确认支付

use Abdal\AbdalZarinpalPg\Zarinpal;


public function verifyPayment(Request $request)
{
    $response = (new Zarinpal())
        ->amount(13660000)
        ->authority($request->query('Authority'))
        ->verify();

    if (!$response->success()) {
        return response()->json(['error' => $response->message()], 400);
    }

    return $response->referenceId();
}

❤️ 帮助项目

https://alphajet.ir/abdal-donation

🤵 程序员

由艾卜拉希姆·沙菲伊(艾卜拉沙)用爱制作

E-Mail = Prof.Shafiei@Gmail.com

Telegram: https://t.me/ProfShafiei

☠️ 报告错误

如果您在配置中遇到问题或某件事没有按预期工作,请使用 Prof.Shafiei@Gmail.com。GitLab 或 Github 上的问题方案也受到欢迎。