tural/epoint

The library provides convenient access to the Epoint API from applications written in the PHP language. It includes a pre-defined set of static class functions for API resources that initialize themselves dynamically from Tural/Epoint class which makes it easier without writing repetitive configurat

v1.0.0 2022-01-14 23:30 UTC

This package is auto-updated.

Last update: 2024-03-29 04:46:17 UTC


README

The library provides convenient access to the Epoint.az API from applications written in the PHP language. It includes a pre-defined set of static class functions for API resources that initialize themselves dynamically from Tural/Epoint class which makes it easier without writing repetitive configuration.

Requirements

PHP 7 and later

Installation

composer require tural/epoint

To include use Composer's autoload:

require_once("vendor/autoload.php");

Dependencies

Guzzle

Getting started

Payment by typing card number

$response = Epoint::typeCard(PRIVATE_KEY, PUBLIC_KEY, "your_order_id", "0.01", "Test payment");

if ($response->status == "success") {

    // if successful it redirects to bank's payment page,
    // when user pays successfully, epoint will call the success webhook you provided
    $this->flashSuccess()->redirect($response->redirect_url);
    
} else {

    // handle failure
    
}

Cancel payment

$response = Epoint::cancel("write epoint transaction id");

if ($response->status == "success") {

    // handle success
    
} else {

    // handle failure
    
}

Check payment

// if false, it will check by order_id, if true,
// it will check by epoint transaction id
$epoint_transaction = false;

$response = Epoint::checkPayment("order or transaction id", $epoint_transaction);

// handle response
dd($response);

Save card for payment

$response = Epoint::saveCardForPayment("Kartı yadda saxla");

if ($response->status == "success") {

    // save it to db
    $card_uid=$response->card_id;

    $this->flashSuccess()->redirect($response->redirect_url);
    
} else {

    // handle failure
    
}

Save card for refund

$response = Epoint::saveCardForRefund("Kartı yadda saxla");

if ($response->status == "success") {

    // save it to db
    $card_uid = $response->card_id;
    $this->flashSuccess()->redirect($response->redirect_url);
    
} else {

    // handle failure
    
}

Pay with saved card

// if successful it returns success
$response = Epoint::payWithSaved("card_uid", "order_id", "amount for ex. 0.01", "write description");

if ($response->status == "success") {

    $epoint_transaction = $response->transaction;
    $bank_transaction = $response->bank_transaction;
    
} else {

    // handle failure
    
}

Refund action

$response = Epoint::refund("card_uid", "order_id", "amount 0.05", "write description");

if ($response->status == "success") {

    // handle success
    $this->redirect($response->redirect_url, true);
    
} else {

    // handle failure
    
}

Webhook called by Epoint on success or failure

$data = $this->req("data");

if (!empty($data)) {

    $epoint = new Epoint([
        "data" => $_POST["data"], 
        "signature" => $_POST["signature"]
    ]);

    // verify the response is really coming from epoint
    if ($epoint->isSignatureValid()) {

        $json_string = $epoint->getDataAsJson();
        $json = $epoint->getDataAsObject();

        // handle them for your needs
        $json->order_id ?? null,
        $json->status ?? null, 
        $json->code ?? null, 
        $json->transaction ?? null, 
        $json->bank_transaction ?? null, 
        $json->card_id ?? null, 
        $json->card_name ?? null, 
        $json->card_mask ?? null, 
        $json->operation_code ?? null, 
        
        // json as string
        $json_string ?? null;

        // if payment is successful
        if ($json->status == "success") {

            // if card_id is set it means it is save_card response
            if (!empty($json->card_id)) {

                // handle

            }
        }

    }
}

All the parameters of the class are inline-documented inside class.

You can have a look at Api documentation in Azerbaijani, English and Russian.