Подключение платежного шлюза
Для организации приема платежей через Relictum Pay необходимы следующие атрибуты:
Белая нода.
Ключи шифрования.
Relictum PHP SDK.
Платежный контракт, зарегистрированный в белой ноде.
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. Регистрация платежного контракта в белой ноде:
Зайдите в раздел Продукты -> Платежный контракт -> Добавить контракт.
Заполните следующие поля:
Системное имя контракта: любое название на латинице в нижнем регистре, желательно одним словом.
Поставщик - выберите любое название, желательно короткое - его будет видно в разделе RelictumPay как объект, который выставил счет на оплату. Если название поставщика будет длинным, то оно будет переноситься построчно, поэтому желательно использовать короткое).
Результат на скриншоте:
При сохранении и создании платежного контракта с вас спишется 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