Search by

Platon integration

Package info

github.com/wearesho-team/platon

pkg:composer/wearesho-team/platon

Statistics

Installs: 438

Dependents: 0

Suggesters: 1

Stars: 1

Open Issues: 1

3.5.0 2026-10-26 20:18 UTC

README

PHP Composer Latest Stable Version Total Downloads codecov

Platon SDK for PHP.
Changelog | Usage Examples

Compatibility: tested on PHP 8.4, PHP 8.5

API

Installation

Using composer:

composer require wearesho-team/platon

Usage

Configuration

For configuration you have to use ConfigInterface. Available implementations:

  • Config - simple entity. Example:
<?php

use Wearesho\Bobra\Platon;

$config = new Platon\Config("Key", "Pass", "PaymentType");
<?php

use Wearesho\Bobra\Platon;

$config = new Platon\EnvironmentConfig();

Environment configuration:

Variable Required Default Description
PLATON_KEY yes public key
PLATON_PASS yes secret key
PLATON_URL no https://secure.platononline.com/ base url to make C2C requests
PLATON_PAYMENT no CC default payment type
PLATON_LANGUAGE no ua language: ru or ua

Generating payment configuration

Use Client to fetch payment config

<?php

use Wearesho\Bobra\Platon;
use Wearesho\Bobra\Payments;

$config = new Platon\EnvironmentConfig();
$client = new Platon\Client($config);

$payment = $client->createPayment(
    new Payments\UrlPair(
        'http://redirect-url-on-success',
        'http://redirect-url-on-fail'
    ),
    new Platon\Transaction(
        $serviceId = 1,
        $amount = 500,
        $paymentType = 'paymentType',
        $description = 'description for payment',
        $ext = [
            0 => 'some-info'            
        ], // optional, will be returned in notification
        $currency = 'UAH', // optional 
        $formId = 'Form id for front-end' // optional
    )
);

Rendering form

<?php

$config = $payment->jsonSerialize(); // ['action' => 'URL', 'data' => 'url']

*You should send data to action url.

Notification

Use Notification\Server to create payment instance from platon`s request:

<?php

use Wearesho\Bobra\Platon;

class PlatonController
{
    public function actionHandle()
    {
        // You can use several platon configs in different cases.
        // Handler will get that one that matches `key` param from platon`s request.
        // All platon configs should be passed into ConfigProvider.
        $configProvider = new Platon\Notification\ConfigProvider([
            new Platon\Config('First key', 'first pass', 'CC'),    
            new Platon\Config('Second key', 'second pass', 'CC'),    
        ]);

        $server = new Platon\Notification\Server($configProvider);

        try {
            $payment = $server->handle($_POST);   
        } catch (Platon\Notification\InvalidSignException $exception) {
            // handle invalid sign
        } catch (\InvalidArgumentException $exception) {
            // When received data is incorrect or some required fields are empty
        }

        // You can use returned Payment instance to save transaction data.
    }
}

Direct Debit

Recurring charge of previously saved card token (no 3DS, customer is not present). Use DirectDebit\Client:

<?php

use Wearesho\Bobra\Platon;

$client = new Platon\DirectDebit\Client(new Platon\EnvironmentConfig(), new GuzzleHttp\Client());

try {
    $response = $client->charge(new Platon\DirectDebit\Request(
        orderId: 'order-1',
        amount: 100.50,
        description: 'Recurring charge',
        cardToken: $cardToken, // from previous payment notification
        termUrl: 'https://example.com/',
        phone: '380930000000',
        email: 'payer@example.com', // the same email as in original payment, if any
        ext: ['ext1 value', 'ext2 value'], // optional, ext3 is reserved
    ));
    // $response['result']: SUCCESS or DECLINED (see $response['decline_reason'])
} catch (Platon\DirectDebit\InvalidCardException $exception) {
    // card token can not be used anymore
} catch (Platon\DirectDebit\Exception $exception) {
    // request failed
}

Info

Fetching information about account balance. Use Info\ConfigInterface for configuration. EnvironmentConfig available:

Variable Required Description
PLATON_INFO_PUBLIC_KEY yes Public Key for Info API
PLATON_INFO_PRIVATE_KEY yes Private Key for Info API
<?php

use Wearesho\Bobra\Platon;

$publicKey = readline("Public Key: ");
$privateKey = readline("Private Key: ");

$config = new Platon\Info\Config($publicKey, $privateKey);
$client = new GuzzleHttp\Client();

$repository = new Platon\Info\Repository($config, $client);

// All items can be converted to string and JSON formats
$responses = $repository->get();

See Info\Response for details.

Author

License

MIT