Platon integration

2.0.1 2023-05-24 12:37 UTC

README

PHP Composer Latest Stable Version Total Downloads codecov

Platon SDK for PHP.
Changelog | Usage Examples

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.
    }
}

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