redberry/georgian-card-gateway

使用格鲁吉亚卡网关简化您的支付。

v1.0.2 2020-05-22 00:00 UTC

This package is auto-updated.

Last update: 2024-09-28 15:06:36 UTC


README

格鲁吉亚卡网关是一个易于使用的包。它可以为您减轻很多负担。

使用此包,您可以进行以下操作:

  • 常规支付(每次交易都需要输入用户的信用卡信息)
  • 周期性支付(基本上,您可以使用此方法将用户的信用卡信息保存到商户处,然后无需每次都询问用户信用卡信息即可进行支付。)

安装

安装相当简单

$ composer require redberry/georgian-card-gateway

设置

1. 环境变量

您必须在环境变量文件中输入商户的必要凭证。

MERCHANT_ID=---YOUR-MERCHANT-ID---
PAGE_ID=---YOUR-PAGE-ID---
ACCOUNT_ID=---YOUR-ACCOUNT-ID---
CCY=---YOUR-CURRENCY-CODE---
REFUND_API_PASS=---YOUR-REFUND-API-PASSWORD---
BACK_URL_S=https://your-website.ge/payment/succeed
BACK_URL_F=https://your-website.ge/payment/failed
MERCHANT_ID

代表您的商户标识符,这将由BOG提供给您。

PAGE_ID

代表支付页面的标识符,可以根据您的喜好进行自定义和样式设置。

ACCOUNT_ID

在商户处可以有多个POS终端。每个终端都会有相应的账户,支付将指向这些账户。您可能只需要一个终端。但在本文件中,我们还将展示如何管理多个终端的支付。

CCY

表示交易应使用的货币。您最可能使用的是981,代表拉里。 查看更多

REFUND_API_PASS

表示进行交易退款时的密码。

BACK_URL_S

成功交易后将访问的URL。例如: https://your-web-site.ge/payments/success

BACK_URL_F

失败交易后将访问的URL。例如: https://your-web-site.ge/payments/success

2. 发布供应商

php artisan vendor:publish --provider="Redberry\GeorgianCardGateway\Support\ServiceProvider"

3. 绑定格鲁吉亚卡处理器

为了能够在数据库中创建交易记录、执行周期性交易或在交易成功/失败时执行某些操作,您需要创建一个格鲁吉亚卡类并将其绑定到容器中。

因此...让我们创建一个类,其路径为:"app/Library/GeorgianCard.php",并实现GeorgianCardHandler接口

<?php

namespace App\Library;

use Redberry\GeorgianCardGateway\Contracts\GeorgianCardHandler;
use Illuminate\Http\Request;

class GeorgianCard implements GeorgianCardHandler
{
  /**
   * Get primary transaction id
   * for recurrent transactions.
   * 
   * @param   Request $request
   * @return  string|null
   */
  public function getPrimaryTransactionId( Request $request )
  {
    // Return primary transaction id
  }

  /**
   * Determine if it should save card or pay
   * and proceed accordingly.
   * 
   * @param   Request  $request
   * 
   * @return  void
   */
  public function update( Request $request )
  {
    // Do things...
  }

  /**
   * Success method will be executed if
   * transaction is to end successfully.
   * 
   * @return mixed
   */
  public function success()
  {
    dump( 'Success' );
  }

  /**
   * Failed method will be executed if
   * transaction is to end with failure.
   * 
   * @return mixed
   */
  public function failure()
  {
    dump( 'Failure' );
  }
}

现在将其绑定到我们的应用程序服务提供商

namespace App\Providers;

use App\Library\GeorgianCard;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this -> app -> bind( 'redberry.georgian-card.handler', GeorgianCard :: class );
    }

现在您可以执行简单的常规交易

use Redberry\GeorgianCardGateway\Transaction;

$transaction = new Transaction;

$transaction 
      -> setOrderId   ( $orderId    )
      -> setAmount    ( $amount     ) // 100 = 1 lari
      -> setUserId    ( $userId     ) // optional
      -> setUserCardId( $userCardId ) // optional
      -> set( 'rame'  , 'rume' ) 
      -> execute();

当我们使用Transaction的新实例设置这些字段时,我们可以在执行GeorgianCard -> update()方法时看到这些字段和其他BOG信息。在这种情况下,您可以将数据库记录保存等...

进行交易退款

use Redberry\GeorgianCardGateway\Refund;

$refund =  new Refund;

$refund
      -> setTrxId ( $trxId  )
      -> setRRN   ( $RRN    )
      -> setAmount( $amount )
      -> execute();
TrxId和RRN

TrxId和RRNs是交易ID,您将在GeorgianCard -> update方法中获得,您必须将其保存在数据库中,然后使用它进行该交易的退款。