abdal / abdal-zarinpal-pg
为 Laravel 设计的 ZarinPal 支付网关
16.16.4
2024-06-22 09:49 UTC
Requires
- php: ^7.2|^8.0
- laravel/framework: ^7.0|^8.0|^9.0|^10.0|^11.0
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 上的问题方案也受到欢迎。