nazbav/vk-coin-api

Library for VK Coin API.

2.0.0 2019-04-20 14:27 UTC

README

Задать вопрос можно в беседе. Библиотека для работы с VK Coin API. Основана на "документации", и библиотеке Матвея Вишневсого.

Подключение

composer require nazbav/vk-coin-api
  1. Через Composer:
include "../vendor/autoload.php";

$coin = new \nazbav\VkCoinAPI\VkCoin(211984675, "45vyv45KJMKouj9retghrebtvrhtrehryvt54ONopiino");
  1. С обработкой исключений:

include "../vendor/autoload.php";

try {
    $coin = new \nazbav\VkCoinAPI\VkCoin(211984675, "45vyv45KJMKouj9retghrebtvrhtrehryvt54ONopiino");
//ваш код...
} catch (VkCoinException $e) {
    echo $e;
}
Параметр Тип Описание
$merchantId int ID странички, для которой был получен платёжный ключ
$key string Платёжный ключ
$checkResponse string Отлов ошибок, по умолчанию true(см. Получение ошибок ниже).

Функции

CallBack | Транзакции

Установка callBack.

    $coin->callBack('https://example.org/callback');

Удаление callBack.

    $coin->callBack();
Параметр Тип Описание
url string Адрес для отправки уведомлений

Валидация запроса:

$request = json_decode(file_get_contents('php://input'), true);

// Проверка наличия полей: id, from_id, amount, payload, key
if (!empty($request) &&
    //...
    isset($request['key'])
) {

    if ($coin->getFunc()->validationKey(
        $request['id'],
        $request['from_id'],
        $request['amount'],
        $request['payload'],
        $request['key']
    )) {
//Код...
    }
}
Параметр Тип Описание
id int номер транзакции
from_id int от кого
amount int Количество
payload int Число от -2000000000 до 2000000000.
key string Ключ

Получение списка неудавшихся запросов

    $coin->logs();
Параметр Тип Описание
status int Получение логов

Настройка магазина

Установка названия магазина

    $coin->setName('CoinShop');
Параметр Тип Описание
name string Название магазина

Получение списка транзакций

Пример:

    $coin->tx(); //type 1 -- получение транзакций по ссылке
    $coin->tx(2, -1); // получение транзакций магазина (первые 100)
Параметр Тип
type int
last int

Перевод

Пример:

$coin->send(211984675, $coin->toCoin(1));//Отправка одного коина
$coin->send(211984675, 1, false, true);//отправка 1% баланса магазина
$coin->send(211984675, 1, true);//отправка 1 коина
Параметр Тип Описание
to int ID пользователя, которому будет отправлен перевод
amount int Сумма перевода в тысячных долях (500 = 0,500 коин)
fromFloat bool amount задан в float (см. функции библиотеки ниже)?
fromPercent bool amount задан в процентах?

Получение баланса

Пример:

$coin->score([211984675]);
$coin->score(); //Для вывода баланса текущего пользователя
Параметр Тип
userIds array

Получение ссылки на оплату

Пример:

   $coin->getFunc()->link(); // vk.com/coin#tMERCHANTID - сылка для **обычной** оплаты!
   $coin->getFunc()->link(15000);//sum
   $coin->getFunc()->link(15000, 123456); //sum, payload
   $coin->getFunc()->link(15000, 0, false); //sum, payload, fixed_sum = false
      $coin->getFunc()->link(15000, 0, false, false); //sum, payload, fixed_sum = false, hex = false
Параметр Тип Описание
sum int Сумма перевода
payload int Любое число от -2000000000 до 2000000000. Поставь 0, дальше сделаем все сами ;)
fixed_sum bool Фиксация суммы перевода
hex bool Генерация hex-ссылки

Псевдонимы (Aliases)

Их вы можете указывать в параметре метода, для упращения работы.

Имя Псевдоним Описание
set config Параметры магазина
set settings Параметры магазина
tx getTransactions Список транзакций
tx transactions Список транзакций
link getPayLink Платежная ссылкка
link getLink Платежная ссылкка
send transfer Отправка перевода
send sendTransfer Отправка перевода
send pay Отправка перевода
alias getAliases Список псевдонимов
alias aliases Список псевдонимов
score getBalance Баланс игрока
score balance Баланс игрока

Формат ответа

Имя поля Тип Описание
status bool true, если запрос выполнен без критических ошибок.
response array Массив с данными (за место него может быт выдан error)
error array Для получения этого массива см. Получение ошибок

Данному формату не подчиняются методы начинающиеся с $coin->getFunc().

Получение ошибок

По стандарту библиотека сама обрабатывает ошибки и выдает VkCoinException на этот счет. Для того чтобы самостоятельно обрабатывать ошибки необходимо передать всего один параметр при инициализации:

include "../vendor/autoload.php";

$coin = new \nazbav\VkCoinAPI\VkCoin(211984675, "45vyv45KJMKouj9retghrebtvrhtrehryvt54ONopiino", true);

Error code 100

В случай если библиотеке не удалось получить данные c сервера, и т.д. (ошибки curl). Будет выдана 100 ошибка:

{"status":false,
      "error":{
        "code":100,
        "message":"Описание ошибки."
      }
}

Функции библиотеки

Получение Key

$coin->getFunc()->getMerchkey();

Получение MerchantId

$coin->getFunc()->getMerchantId();

Перевод числа с плавающей точкой в коины

$coin->getFunc()->toCoin(100.000); //100000
$coin->getFunc()->toCoin(100.435); //100435

Пример: отправка 1 коина (1.000) пользователю:

$coin->send(211984675, $coin->getFunc()->toCoin(1));//1000
$coin->send(211984675, $coin->getFunc()->toCoin(1.000));//1000

Перевод коинов в число с плавающей точкой

$coin->getFunc()->toFloat(100000); //100.000
$coin->getFunc()->toFloat(100435); //100.435

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

$coin->getFunc()->toFloat($account1); //float(124414.662)

Получение процента (A) от числа (B)

$coin->getFunc()->toFloat($coin->getFunc()->getPercent(75, $coin->getFunc()->toCoin(1)));//75% от 1 коина (1,000)

Пример: 75% от 10.000 VKC = 7.500 VKC:

$coin->getFunc()->toFloat($coin->getFunc()->getPersent(75, $coin->getFunc()->toCoin(10)));

Процент числа A от числа B

//Сколько процентов занимает 1 коин от 100 коинов
$coin->getFunc()->whatPercent($coin->getFunc()->toFloat(1),$coin->getFunc()->toFloat(100));

Пример: на сколько процетов баланс пользователя id539620705 больше баланса пользователя id211984675:

$coin->getFunc()->whatPercent($account2, $account1)

Сколько процентов составляет баланс пользователя id211984675 от баланса пользователя id539620705:

$coin->getFunc()->whatPercent($account1, $account2)

Даные в примерах:

 $balance = $coin->score([539620705, 211984675])['response'];
    $account1 = $balance[211984675];
    $account2 = $balance[539620705];