midohawy/laravel-payfort

laravel-payfort 是一个用于处理通过 Payfort 支付网关进行支付的一个简单包。

v2.0.0 2021-04-16 07:55 UTC

This package is auto-updated.

Last update: 2024-09-16 15:31:27 UTC


README

Software License laravel version lib version

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 将被调用。

GitHub Logo

请参阅 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

此库由以下人员实现: