2017 © Pedro Peláez
 

yii2-extension yii2-paystack

Yii 2 Paystack Payment extension (Component and widget)

image

smladeoye/yii2-paystack

Yii 2 Paystack Payment extension (Component and widget)

  • Tuesday, February 28, 2017
  • by smladeoye
  • Repository
  • 3 Watchers
  • 1 Stars
  • 42 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 2 Open issues
  • 3 Versions
  • 40 % Grown

The README.md

yii2-paystack

YII 2 component for paystack payment integration, (*1)

Latest Stable Version Total Downloads, (*2)

  • [Installation] (https://github.com/smladeoye/yii2-paystack#installation)
  • [Configuration] (https://github.com/smladeoye/yii2-paystack#configuration)
  • [Usage] (https://github.com/smladeoye/yii2-paystack#usage-example)
  • [Event Handling for Paystack Operations] (https://github.com/smladeoye/yii2-paystack#handling-events)
  • [Paystack Inline Widget] (https://github.com/smladeoye/yii2-paystack#using-the-paystack-inline-payment-widget)

Installation

The preferred way to install this extension is through composer., (*3)

Either run, (*4)

composer require smladeoye/yii2-paystack

or, (*5)

add '"smladeoye/yii2-paystack": "1.0.0"' to the require section of your composer.json file, then run:, (*6)

composer install

Configuration

In your configuration file (web.php) register the component with the necessary configurations, for example:, (*7)

'components'=>[
    //  ...
    'Paystack' => [
        'class' => 'smladeoye\paystack\Paystack',
        'environment' => 'test',
        'testPublicKey'=>'pk_test_365589cc6b0e95f1fb53fa0eeaef6b1819f1b0f2',
        'testSecretKey'=>'sk_test_1a4a88eaec6f4f3b23771edb2c60fe8d8b95cbe',
        'livePublicKey'=>'',
        'liveSecretKey'=>'',
    ],
    //  ...
]

Usage Example


// Initializing a payment transaction $paystack = Yii::$app->Paystack; $transaction = $paystack->transaction(); $transaction->initialize(['email'=>'smladeoye@gmail.com','amount'=>'100000','currency'=>'NGN']); // check if an error occured during the operation if (!$transaction->hasError) { //response property for response gotten for any operation $response = $transaction->getResponse() // redirect the user to the payment page gotten from the initialization $transaction->redirect(); } else { // display message echo $transaction->message; // get all the errors information regarding the operation from paystack $error = $transaction->getError(); }

There are seven operations available that can be performed which have been grouped based on Paystack's own grouping. Each of the operations also have their individual methods that can be called for performing different actions (create, list -- fetchAll, fetch, update,...) which can accept all the necessary parameters as an array., (*8)

The following are the available operations and methods (all sample codes are based on the demo configuration above):, (*9)

  1. customer: To initiatiate any customer operation:, (*10)

    $paystack = Yii::$app->Paystack;
    $customer = $paystack->customer();
    

    Distinct methods available to customer:, (*11)

  • whitelist --> whitelist a particular customer.Example:, (*12)

        $customer->whitelist($customer_id);
    
  • blacklist --> blacklist a particular customer.Example:, (*13)

        $customer->blacklist($customer_id);
    
  1. transaction: To initiate a transaction operation:, (*14)

    $paystack = Yii::$app->Paystack;
    $transaction = $paystack->transaction();
    

    Distinct methods available to transaction:, (*15)

  • initialize --> initialize a transaction; an authorization url is generated from this method after which the redirect method can then be called to redirect to the payment page. Example:, (*16)

    $transaction->initialize(['email'=>'smladeoye@gmail.com','amount'=>'10000']);
    if (!$transaction->hasError)
        $transaction->redirect();
    
  • verify --> verify a transaction.Example:, (*17)

        $transaction->verify($trans_reference);
    
  • charge --> charge authorization for recurring transactions.Example:, (*18)

    $transaction->charge($options = []);
    
  • timeline --> timeline for a particular transactions.Example:, (*19)

    $transaction->timeline($trx_id);
    
  • total --> get total for transactions within a specified range.Example:, (*20)

    $transaction->total($from,$to);
    //An array could be provided instead with the available parameters in key => value format.
    
  • export --> export a range of transaction details;a url is generated from this method from which the file can be downloaded. To get the path simpley call the path method or call the download method to download the file. Example:, (*21)

     $transaction->export($options = []);
    
    //get download link url
    $transaction->getExportUrl();
    

    OR to download the file, call:, (*22)

        $transaction->download();
    
  1. subscription: To initiate a subscription operation:, (*23)

    $paystack = Yii::$app->Paystack;
    $subscription = $paystack->subscription();
    

    Distinct methods available to subscription:, (*24)

  • enable --> enable a customer subscription.Example:, (*25)

      $subscription->enable($code, $token);
      //an array can be provided instead, containing the necessary parameters as key => value
    
  • disable --> disable a customer subscription.Example:, (*26)

      $subscription->disable($code, $token);
      //an array can be provided instead, containing the necessary parameters as key => value
    
  1. subaccount: To initiate a subaccount operation:, (*27)

    $paystack = Yii::$app->Paystack;
    $subaccount = $paystack->subaccount();
    

    Distinct methods available to subaccount:, (*28)

  • listBank --> list the available bank for creating subaccounts on the system.Example:, (*29)

          $subaccount->enable($code, $token);
          //an array can be provided instead, containing the necessary parameters as key => value
    
  1. plan: To initiate a plan operation:, (*30)

    $paystack = Yii::$app->Paystack;
    $plan = $paystack->plan();
    

    Plan operation contains all the basic methods (create,fetch,fetchAll,update);, (*31)

  2. page: To initiate a page operation:, (*32)

    $paystack = Yii::$app->Paystack;
    $page = $paystack->page();
    

    Distinct methods available to page:, (*33)

  • checkAvailability --> check the availability of a particular slug.Example:, (*34)

          $page->checkAvailability($slud_id);
    
  1. settlement: To initiate a settlement operation: php $paystack = Yii::$app->Paystack; $settlement = $paystack->settlement(); Distinct methods available to settlement:
  • fetchAll --> fetch all settlements.Example:, (*35)

    $settlement->fetchAll($from_date,$to_date);
    //an array can be provided instead, containing the necessary parameters as key => value
    

The follwing methods are also available:

  • fetchAll: The fetchall (list) method is available for all operations.Example:
        $customer->fetchAll(['page'=>'','perPage'=>'']);
  • create: The create method is available for customer, subscription, subaccount, page and plan operations.Example:
        $customer->create(['email'=>'smladeoye@gmail.com']);
  • fetch --> The fetch method is available to all operations except settlement.Example:
        $customer->fetch($customer_id);
  • update --> The update method is available for customer, subaccount, page and plan operations.Example:
        $customer->update($id,$info = array();

Handling Events

The component also supports event handling before and after every request. You can read more on YII2 EVENTS [HERE] (http://www.yiiframework.com/doc-2.0/guide-concept-events.html). You can set the event handler by configuring the property beforeSend - (event before sending the request) and the afterSend - (event after sending the request). The event handlers can be set for all operations or for specific operations; event handlers set for specific operations overwrites the one set for all operations. Example:, (*36)

'Paystack' => [
            'class' => 'smladeoye\paystack\Paystack',
            ...//other configurations just like example above

            //setting the event handler for all operations before any request is made
            'beforeSend'=>'myFunction',

            //will set the event handler for all operations after any request is made
            'afterSend'=>'myFunction',

            //setting the event handler for the transaction operation; this will overwrite the event handlers above
            'transaction'=>array(
                //handler for the event before any request is made for a transaction operation
                'beforeSend'=>'myFunction',

                //handler for the event after any request is made for a transaction operation
                'afterSend'=>'myFunction',
            )
        ]

Using the Paystack Inline Payment Widget

To use the widget, call the widget from your view and set the widget parameters, example:, (*37)

use smladeoye\paystack\widget\PaystackWidget;

    echo PaystackWidget::widget(
        [
        //set the text to be displayed on the button
            'buttonText'=>'PAY',
        //array to set other button attributes like id, class,style etc
            'buttonOptions'=>array(
                'class'=>'btn btn-danger',
                'style'=>'width: 80px;',
            ),
        //array to set all necessary paystack inline payment options
        //some values can be set dynamically by passing the element id as value (email,amount,currency,quantity)
            'options'=>[
                //your paystack public key
                'key'=>Yii::$app->Paystack->testPublicKey,
                'email'=>'smladeoye@ymail.com',
                'ref'=>'123456789',
                //'amount' => '#amount' --> the value is gotten from the html element with id = amount
                // OR
                'amount'=>'2000',
                //'currency' => '#currency' --> the value is gotten from the html element with id = currency
                // OR
                'currency' =>'NGN',
                'plan' =>'my-plan',
                //'quantity' => '#quantity' --> the value is gotten from the html element with id = quantity
                // OR
                'quantity' =>'2',
                //callbackUrl can be set, where the tansaction reference would be passed as GET parameter
                'callbackUrl' =>'www.google.com',
                //also u can override the default with the callback option, simply provide javascript anonymous function as a string
                //'callback'=>'function(response){alert(response.trxref);};',
            ],
        ]
    );

The Versions

28/02 2017

dev-master

9999999-dev

Yii 2 Paystack Payment extension (Component and widget)

  Sources   Download

MIT

The Requires

 

by Avatar smladeoye

component payment yii2 widget paystack yii2 extension smladeoye paystack widget

28/02 2017

dev-dev

dev-dev

Yii 2 Paystack Payment extension (Component and widget)

  Sources   Download

MIT

The Requires

 

by Avatar smladeoye

component payment yii2 widget paystack yii2 extension smladeoye paystack widget

28/02 2017

v1.0.0

1.0.0.0

Yii 2 Paystack Payment extension (Component and widget)

  Sources   Download

MIT

The Requires

 

by Avatar smladeoye

component payment yii2 widget paystack yii2 extension smladeoye paystack widget