omidgfx/payir-gateway

使您的(pay.ir)支付变得简单,并为支付网关实现可靠的接口。

v1.0.8 2021-02-04 08:37 UTC

This package is auto-updated.

Last update: 2024-09-29 05:29:34 UTC


README

使您的(pay.ir)支付变得简单,并为支付网关实现可靠的接口。

Payir Gateway 是一个 composer 库,用于帮助与 pay.ir 支付网关一起工作。

  • 安全
  • 可靠
  • 易于使用

教程

▷ 在 aparat 观看教程视频

基本场景

为了健康的支付,首先您需要将订单信息发送到 pay.ir 并获取一个令牌,并将其存储在您的数据库中(唯一),然后通过涉及您刚获取的令牌的地址将您的客户发送过去。客户支付后,再次返回您的网站。

现在客户已在您的网站上,您应该验证他的支付并销售您的商品。

如何使用?

  • 步骤 1

    Payir Gateway 添加到您的项目中。

    $ composer require omidgfx/payir-gateway
  • 步骤 2

    使用您的 API-KEY 创建 Omidgfx\Payir 类的一个实例。

     $payir = new Omidgfx\Payir(
         # api key
            'API-KEY-STRING',
         # language
            Payir::LANGUAGE_FARSI // or Payir::LANGUAGE_ENGLISH
     );
  • 步骤 3

    通过 send 方法从 pay.ir 获取一个新的 token 并用于打开支付网关。

    $response = $payir->send(
        # total amount of the order
            1000,
        # callback url to your website
            'https://myshop.com/verify?order=123',
        # mobile number [optional]
            '09121111111',
        # factor number
            '123',
        # description of the order
            'Some description',
        # valid card number
            '6219861012345678'
    );
    > Use `try-catch` to catch the exceptions.
    
  • 步骤 4

    检查 $response 是否是 Omidgfx\Payir\SendResponse 类的实例。

    • 如果 $responseOmidgfx\Payir\SendResponse 类的实例,则将令牌保存到您的数据库中,然后通过 $response->redirectToPayLink() 或通过 $response->getPayLink() 获取 支付链接 作为字符串,将您的客户重定向到 支付链接
    • 如果 $responseOmidgfx\Payir\ErrorResponse 类的实例,则通过 $response->error() 向您的客户显示错误消息或追踪它以修复它。

    if ($response instanceof Omidgfx\Payir\SendResponse) {
       $response->redirectToPayLink(); # redirection
    } elseif ($response instanceof Omidgfx\Payir\ErrorResponse) {
       echo 'ERR ' . $response->errorCode . ': ' . $response->error();
    }
  • 步骤 5

    支付操作执行后,客户将被传递到您的网站,现在您需要验证交易。Payir Gateway 将为您执行此操作,如下面的回调监听器所示:

    假设 https://site.com/verify.php?invoice=123 是您的回调(重定向),以下代码必须在您的回调监听器控制器中编写,例如 verify.php

    verify.php 中再次执行 步骤 2

    $payir = new Omidgfx\Payir(
        # api key
           'API-KEY-STRING',
        # language
           Payir::LANGUAGE_FARSI // or Payir::LANGUAGE_ENGLISH
    );

    创建您的回调监听器

    $cb = $payir->makeCallbackListener();

    设置回调监听器的事件

    • setOnError
    • setOnSuccess
    • setOnException
    $cb->setOnError(function (Payir\ErrorResponse $errorResponse) {
     echo 'ERR ' . $errorResponse->errorCode . ': ' . $errorResponse->error();
    })->setOnSuccess(function (Payir\VerifyResponse $verifyResponse) {
     // $verifyResponse->status is always 1 here
     /*
     // Save these data or use them to check if transId is in your database already.
     $status       = $verifyResponse->status;
     $amount       = $verifyResponse->amount;
     $transId      = $verifyResponse->transId;
     $factorNumber = $verifyResponse->factorNumber;
     $mobile       = $verifyResponse->mobile;
     $factorNumber = $verifyResponse->factorNumber;
     $description  = $verifyResponse->description;
     $message      = $verifyResponse->message;
     */
      if(DB::getInstance()->exists('orders', ['trans_id' => $verifyResponse->transId]) == false){
          // SELL YOUR STUFF HERE
      }else{
          echo 'ERR: Security reason';
      }
    })->setOnException(function (Exception $exception) {
     //throw $exception;
     echo 'ERR: ' . $exception->getMessage();
    });

    现在按照以下方式启动您的回调监听器:

    $cb->listen();

Pejman Chatrrouz (Omidgfx) 以 ❤ 创建

🎁 捐赠给我

邮箱 | Facebook