midohawy / laravel-payfort
laravel-payfort 是一个用于处理通过 Payfort 支付网关进行支付的一个简单包。
Requires
- php: >=7.2
- guzzlehttp/guzzle: ~5.0|~6.0|~7.0
- illuminate/support: ^7.0
- nesbot/carbon: ~2.0
Requires (Dev)
- fabpot/goutte: ~3.2
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-09-16 15:31:27 UTC
README
Laravel Payfort
提供了一种简单且丰富的方式来执行和处理 Payfort
(中东地区基于在线支付网关)的操作。查看更多 Payfort 信息。
此包支持以下列出的 Payfort
操作,其他操作将留待未来工作及贡献。
- 授权/购买
- 捕获
- 令牌化
- SDK_TOKEN
- 检查状态
- 退款
在开始使用任何包之前,您必须仔细阅读 Payfort
文档,包作者不会编写关于 Payfort
操作的内容,以及如何使用。
安装
您可以通过 composer 命令将 Laravel Payfort
包安装到您的 laravel 项目中
$ composer require midoelhawy/laravel-payfort
配置
Laravel > 7.0
安装 Laravel Payfort
库后,在您的 config/app.php
配置文件中注册 LaravelPayfort\Providers\PayfortServiceProvider
'providers' => [ // Other service providers... LaravelPayfort\Providers\PayfortServiceProvider::class, ],
此外,将 Payfort
门面添加到您的 app
配置文件中的 aliases
数组
'Payfort' => LaravelPayfort\Facades\Payfort::class
然后,运行以下命令以发布配置文件
$ php artisan vendor:publish --provider "LaravelPayfort\Providers\PayfortServiceProvider"
这将在 config
文件夹中创建一个名为 payfort.php
的新配置文件。然后您必须在 .env
文件中添加以下常量,您可以在您的 Payfort
账户中找到大多数这些值。
PAYFORT_USE_SANDBOX=true #Defines wether to activate the payfort sandbox env or not.
PAYFORT_USE_TEST_ENV=true #Define Test env mode for development
PAYFORT_MERCHANT_IDENTIFIER=51e316554 # The payfort merchant account identifier
PAYFORT_ACCESS_CODE=XwMv28sHSAkSaB71uGON # The payfort account access code
PAYFORT_SHA_TYPE=sha256 # The payfort account sha type. sha256/sha512
PAYFORT_SHA_REQUEST_PHRASE=58obfoddsfg.. # The payfort account sha request phrase
PAYFORT_SHA_RESPONSE_PHRASE=86md5f56s.. # The payfort account sha response phrase
PAYFORT_CURRENCY=SAR # The default currency for you app. Currency ISO code 3.
PAYFORT_LANGUAGE=EN # The system default langauge for response messages
PAYFORT_RETURN_URL=/payfort/response # The url to return after submitting payfort forms.
基本用法
一旦完成所有配置步骤,您就可以在您的应用程序中使用 payfort 操作。以下是一些如何使用此包的示例
授权/购买请求(重定向)
要显示 payfort 授权或购买页面,在您的控制器方法中添加以下代码片段
return Payfort::redirection()->displayRedirectionPage([ 'command' => 'AUTHORIZATION', # AUTHORIZATION/PURCHASE according to your operation. 'merchant_reference' => 'ORDR.'.rand(10000,100000), 'amount' => 3501.35, 'currency' => 'SAR', 'customer_email' => 'example@example.com', 'payment_option' => 'VISA', //Mada and others types "language"=>'ar', 'return_url'=>"https://expm.com/response" ]);
⚠ 注意
Mada 支付方式仅作为购买(不是作为授权)工作。
可以通过以下方式传递给 displayRedirectionPage
方法的其他可选参数
- token_name
- sadad_olp
- eci
- 订单描述
- 客户 IP
- 客户姓名
- 商户额外信息
- 商户额外信息1
- 商户额外信息2
- 商户额外信息3
Payfort
页面将被显示,一旦用户提交支付表单,环境配置中定义的返回 URL 将被调用。
请参阅 Payfort
文档 以获取更多信息。
令牌化请求
要显示 payfort 令牌化页面,在您的控制器方法中添加以下代码片段
return Payfort::redirection()->displayTokenizationPage([ 'merchant_reference' => 'ORDR.34562134', # You reference id for this operation (Order id for example). ]);
Payfort
页面将被显示,一旦用户提交支付表单,配置文件中定义的返回 URL 将被调用。
捕获支付
在回调授权后进行捕获,在您的控制器方法中添加以下代码片段
$checkpayfort->captureOperationByFortId( [ "fort_id"=>$payfort_return["fort_id"], "merchant_reference"=>$payfort_return["merchant_reference"], "amount"=>3501.35,//your amount to capture (max : the authraized amount) "currency"=>"SAR", ] );
请参阅 Payfort
文档 以获取更多信息。
处理 Payfort 授权/购买响应
处理回调(返回)
在处理返回 URL 的控制器中,您可以简单地使用 PayfortResponse
特性如下
use LaravelPayfort\Traits\PayfortResponse as PayfortResponse;
class PayfortOrdersController extends Controller{
use PayfortResponse;
public function processReturn(Request $request){
$payfort_return = $this->handlePayfortCallback($request);
$checkpayfort =new PayfortAPI(config('payfort'));
$checkStatus = $checkpayfort->checkOrderStatusByFortId($payfort_return["fort_id"]);
if($checkStatus->isSuccess()){
return $checkStatus->getResponse();//return payfort json array
}
if($payfort_return["command"] == "AUTHORIZATION"){
$captureAuthorizaPymnt = $checkpayfort->captureOperationByFortId(
[
"fort_id"=>$payfort_return["fort_id"],
"merchant_reference"=>$payfort_return["merchant_reference"],
"amount"=>3501.35,//your amount to capture (max : the authraized amount)
"currency"=>"SAR",
]
);
if($captureAuthorizaPymnt->isSuccess()){
//success payment
}
//....
}
}
}
请参阅 Payfort
文档 以获取更多信息。
处理直接交易反馈
与处理payfort响应相同,只是需要调用 handlePayfortFeedback
而不是 handlePayfortCallback
贡献
想要改进这个包或者发现了一个bug?请创建一个issue,或者自己进行贡献,并赢得这份荣誉。
简单来说,fork => 进行你的工作 => 提交pull request。
编写清晰的注释和描述 ;-).
许可证
Laravel Payfort
是一个开源软件,遵循 MIT许可证
laravel-payfort
此库由以下人员实现: