tohidplus/zarrinpal

用于连接(伊朗)Zarrinpal网关的Laravel包

v1.0.2 2018-10-15 19:15 UTC

This package is auto-updated.

Last update: 2024-09-14 18:31:40 UTC


README

GitHub issues Total Downloads GitHub stars GitHub license

Zarinpal的Laravel包

此包用于连接伊朗网站到Zarrinpal网关。

安装

  1. 运行以下命令
composer require tohidplus/zarrinpal
  1. 将以下代码添加到config/app.php文件中的providers数组末尾。
'providers'=>[
    Tohidplus\Zarrinpal\ZarrinpalServiceProvider::class,
];
  1. 将以下代码添加到config/app.php文件中的aliases数组末尾。
'aliases' => [
   'Zarrinpal'=>Tohidplus\Zarrinpal\Facades\Zarrinpal::class,
];
  1. 运行以下命令
php artisan vendor:publish --provider=Tohidplus\Zarrinpal\ZarrinpalServiceProvider
  1. 迁移数据库
php artisan migrate
  1. 现在您可以在config目录中看到一个名为zarrinpal.php的新配置文件已被添加。因此,打开此文件...
<?php
return [
    'merchantId'=>'XXXXX XXXXX XXXXX',
    'callBackUrl'=>'http://yourwebsite.com/verifyPayment',
    'description'=>'Some text here',
];

添加您想要在交易完成后将用户重定向到银行的merchantId , description和callBackUrl。

注意:您可以将callbackUrl和description留空,并在下一部分解释的动态调用setData方法时定义它。

方法

setData方法

在将用户重定向到网关之前,您必须使用此方法初始化字段,否则您将收到异常。

参数

  • amount(必需)
  • email(可选)
  • mobile(可选)
  • description如果您在配置文件中未定义它,则必须在此设置
  • callBackUrl如果您在配置文件中未定义它,则必须在此设置

redirect方法

初始化字段后,您可以使用此方法将用户重定向到银行。

参数

  • 它仅接受一个参数作为回调函数,如果重定向过程中出现错误,则回调函数将以状态代码作为参数被触发。

verify方法

此方法指示交易是否成功。

参数

  • request是从银行获取的请求,您必须将其传递给verify方法。
  • success是当交易成功时将被触发的回调函数,并接受refId作为参数。
  • error是当交易不成功时将被触发的回调函数。

完整示例

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Tohidplus\Zarrinpal\Facades\Zarrinpal;

class PaymentController extends Controller
{
    public function redirectUserToBank()
    {

        Zarrinpal::setData(100,'someone@example.com','09XXXXXXXXX','Some descripion','another/callback/url');

        return Zarrinpal::redirect(function($status){
            // Do something if there was a problem while redirection
        });
    }

    public function verifyPayment(Request $request)
    {
        return Zarrinpal::verify($request,
        function ($refId){
            // The transaction is successfull    
        },function ($message,$status=null){
            // The trasnsaction is unsuccessful
            // if message was canceled it means user has canceled transaction them self
            // if message was unsuccessful it means an error has occurred 
        });
    }
}

交易日志

所有事件都保存在与Tohidplus\Zarrinpal\Models\ZarrinpalLog模型关联的zarrinpal_logs表中。

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Tohidplus\Zarrinpal\Models\ZarrinpalLog;

class ZarrinpalLogController extends Controller
{
    public function index()
    {
        $successfulTransactions = ZarrinpalLog::successful()->get();
        $unsuccessfulTransactions = ZarrinpalLog::unsuccessful()->get();
        $successfulTransactions = ZarrinpalLog::canceled()->get();
        $pendingTransactions = ZarrinpalLog::pending()->get();
    }
}