PHP-SDK

Данная библиотека может быть использована для расширенного взаимодействия с Platbox.

В библиотеке используется объектно-ориентированный подход. Реализован базовый функционал для проведения платежей. А именно:

  • функции генерации адреса на платёжную страницу
  • функции обработки входящих нотификаций от Platbox

Используйте composer для установки данной библиотеки:

composer require platbox/sdk-php

Требуемые расширения и зависимости:

{
	"ext-json": "*",
	"php": "^7.1",
	"symfony/serializer": "^4.1",
	"symfony/property-access": "^4.1"
}

Ссылка на проект в github:

https://github.com/platbox/sdk-php

Пример реализации обработчика запросов:

<?php

/**
 * Example of demo merchant callbacks handler.
 */

require __DIR__.'/vendor/autoload.php';

use Platbox\Enum\CallbackActionEnum;
use Platbox\Enum\PlatboxErrorCodeEnum;
use Platbox\Exception\PlatboxBadSignatureException;
use Platbox\Services\Callback\CallbackRequest;
use Platbox\Services\Callback\PlatboxCallbackHandler;
use Platbox\Services\Payment\MerchantData;

/**
 * Init parameters
 */
$secretKey = "__insert_your_secret_key__";

/**
 * Input request data
 */
$inputRequestBody = file_get_contents("php://input");
$inputRequestSign = $_SERVER['HTTP_X_SIGNATURE'] ?? '';

/**
 * Fill sdk objects
 */
$merchantData = new MerchantData();
$merchantData->setSecretKey($secretKey);

$callbackRequest = new CallbackRequest($inputRequestBody, $inputRequestSign);
$callbackHandler = new PlatboxCallbackHandler($merchantData, $callbackRequest);

try {
    $callbackHandler->validateSign();

    $action = $callbackHandler->getAction();

    switch ($action) {
        case CallbackActionEnum::CHECK:

            /**
             * Insert here your code for validation parameters
             */

            $response = $callbackHandler->getCheckCallback()->getResponse();

            /**
             * Stub for merchant transaction id.
             * Merchant transaction id must be an unique.
             */
            $response->setMerchantTxId(sprintf("%s_%s_%s", 'sandy', time(), rand(1, 9999)));
            $response->setMerchantTxExtra(["test_flag" => true]);
            break;
        case CallbackActionEnum::PAY:

            /**
             * Insert here your code for approving transaction
             */

            $response = $callbackHandler->getPayCallback()->getResponse();
            $response->setMerchantTxTimestamp((new DateTime())->format("c"));
            break;
        case CallbackActionEnum::CANCEL:

            /**
             * This callback request reports about declined transaction on provider side.
             * Insert here your code for canceling transaction.
             */

            $response = $callbackHandler->getCancelCallback()->getResponse();
            $response->setMerchantTxTimestamp((new DateTime())->format("c"));
            break;
        default:
            throw new Exception("Unknown action: $action");
    }

} catch (PlatboxBadSignatureException $e) {
    $response = $callbackHandler->getErrorCallback()->getResponse();
    $response->setCode(PlatboxErrorCodeEnum::BAD_SIGNATURE);
    $response->setDescription("Bad input signature");
} catch (Exception $e) {
    $response = $callbackHandler->getErrorCallback()->getResponse();
    $response->setCode(PlatboxErrorCodeEnum::INTERNAL_ERROR);
    $response->setDescription("Internal error");
}

$result        = $callbackHandler->toJson($response);
$generatedSign = $callbackHandler->generateSign($response);

header("X-Signature: $generatedSign");
echo $result;