Подключение платежного шлюза

Для организации приема платежей через Relictum Pay необходимы следующие атрибуты:

  1. Белая нода.

  2. Ключи шифрования.

  3. Relictum PHP SDK.

  4. Платежный контракт, зарегистрированный в белой ноде.

1. Белая нода

Белая нода - это нода с публичным IP-адресом, с помощью которого можно организовать любой собственный домашний сервер для публикации в сети Интернет.

По ссылке на Medium вы можете найти инструкцию по установке белой ноды.

2. Ключи шифрования

Следующий шаг - нужно сгенерировать ключи доступа для авторизации на ноде при выполнении запросов на выставление счетов и переводов активов.

В консоли поочередно введите следующие команды:

openssl genrsa - out private .key 2048
openssl rsa - in private . key -pubout -out key .pub

Пошаговая инструкция ниже:

Шаг 1. Ввод первой команды

Шаг 2. Результат

Шаг 3. Ввод второй команды

Шаг 4. Результат

В результате вышеуказанных действий будут сгенерированы ключи. В папке это будет выглядеть таким образом:

Для выставления счетов через RelictumPay необходимо переименовать файл key.pub таким образом, чтобы его название соответствовало URI вашего контракта. Название должно быть без "system://" и включать символ "-" в качестве разделителя. Перенесите его в директорию (корень) ноды.

Пример: ваш контракт system://payments/mycontract - в этом случае файл (ключ) должен называться payments-mycontract.pub .

Организация выплат с ноды:

  • Для отправки токенов $GTN файл key.pub необходимо переименовать в transfer.pub .

  • Для отправки любых других токенов файл key.pub необходимо переименовать в transfer2.pub .

Пример, как выглядит папка с нодой с файлами:

При авторизации запроса направлять вместе с данными также файл .key , который соответствует своей паре ключа .pub .

Еще один вариант, как создать счёт на оплату для клиента через смарт-контракт на языке php с использованием нашего SDK:

$r = $request->doPaymentCreate( 'contract' , [ 'data' => [
        'payment' => $id,
        'addressfrom' => $relictum,
        'addressto' => $myaddress,
        'token' => 'usdr' ,
        'amount' => $sum
    ]]);

Результат на скриншоте ниже:

3. Relictum PHP SDK

Если вы используете PHP в своем проекте, то SDK поможет вам в организации этого процесса.

Установка. Введите команду в консоли:

composer require relictumblockchain/rphpsdk

Если вы используете версии PHP8 и выше, то необходимо добавить флажок отключения проверки версий, так как в противном случае произойдет ошибка при установке:

--ignore-platform-req=php

Вы также можете делать запросы и на других языках или другими способами. Описанная выше последовательность работает для PHP.

По ссылке пример готовой ноды с подключенным платежным контрактом и подробным примером скриптов на PHP.

4. Регистрация платежного контракта в белой ноде:

  1. Зайдите в раздел Продукты -> Платежный контракт -> Добавить контракт.

  2. Заполните следующие поля:

  • Системное имя контракта: любое название на латинице в нижнем регистре, желательно одним словом.

  • Поставщик - выберите любое название, желательно короткое - его будет видно в разделе RelictumPay как объект, который выставил счет на оплату. Если название поставщика будет длинным, то оно будет переноситься построчно, поэтому желательно использовать короткое).

Результат на скриншоте:

  1. При сохранении и создании платежного контракта с вас спишется 50 USDR.

Выглядит это таким образом:

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

<?php

require ( _DIR__ . '/vendor/autoload.php' );

$privateKeyPath = _DIR__ . '/transfer.key';
$authorizationHelper = new
\Relictum\RPHPSDK\Helpers\AuthorizationHelper($privateKeyPath);

// Create configurator and set node uri
$configurator = new Relictum\RPHPSDK\RequestConfigurator([
    'config' => [ 'base_uri' => 'http://127.0.0.1/api/' ],
    'authorization' => $authorizationHelper
]);

// Create a new request
$request = new Relictum\RPHPSDK\Request($configurator);

try {
    // Create a new payment invoice
    
    $id = 10 ; // Payment id (any number, unique for this
    contract)
    $contract = 'mycontract' ; // Contract alias
    $relictum = 100 ; // The account of the user to whom the
    invoice is being issued
    $myaddress = 1 ; // The account to which the tokens will be
    transferred after payment
    
    $response = $request->doPaymentCreate($contract, [ 'data' => [
        'payment' => $id,
        'accountfrom' => $relictum, // or addressfrom for use
        relictum address instead of id
        'accountto' => $myaddress, // or addressto for use
        relictum address instead of id
        'token' => 'usdr' ,
        'amount' => 200
    ]]);
}
catch (Relictum\RPHPSDK\Exceptions\NodeRequestException $e) {
    // Catch exception and output error data
    var_dump($e);
}

// Output node response
var_dump($response);

Last updated