vkcoin-callback-api

4.0.0 • Public • Published

vkcoin-callback-api

Модуль для работы с методами VK Coin API

VKCOIN-CALLBACK-API

NPM version NPM downloads

Авторизация пользователя

Для начала работы, необходимо получить Merchant Key от аккаунта здесь. После того как мы получили платежный ключ, необходимо авторизоваться

const VKCOIN = require("vkcoin-callback-api");
const vkcoin = new VKCOIN({
  id: 0, // Ваш ID
  key: "" // Ваш Merchant Key
});

Ссылка на оплату состоит из трех частей:

  1. Ваш ID (19039187)

  2. Сумма перевода в тысячных долях (1000 = 1 VK Coin)

  3. Payload – любое число от -2000000000 до 2000000000, вернется Вам в списке транзаций

Далее их надо объединить в такую ссылку: vk.com/coin#x190391871000 2000000000

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

vk.com/coin#x19039187_1000_2000000000_1 — свободная сумма

vk.com/coin#x19039187_1000_2000000000 — фиксированная сумма

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

/*
* amount — количество койнов по умолчанию (число).
* payload — параметр, который вернет VK Coin при пополнении по ссылке (число от -2000000000 до 2000000000).
* isFixed — параметр, отвечающий за изменение суммы пополнения (если поставить true то сумму можно будет менять, не ставьте, если нужна фиксированная сумма).
*/
vkcoin.getLink(amount, payload, isFixed);

console.log(vkcoin.getLink(100500, 123456789)); // vk.com/coin#x19039187_100500_123456789

Запуск сервера

После того как мы авторизировались необходимо подписаться на входящие транзакции VK Coin.

vkcoin.startServer({
  server: "132.123.238.45", // Сервер (Обязательное поле)
  port: 3223 // Порт (По умолчанию 1234)
});

и запустить сервер для прослушивания новых платежей

vkcoin.startPolling(event => {
  console.log(event);
  // Здесь обрабатывем транзакцию
});

Устанавливаем название магазина

vkcoin.shopName("Name");

После того как мы установили параметр названия, можно отправлять VK Coin от имени магазина.

Выполняем перевод пользователю

vkcoin.send(431035213, 5000);

Где 431035213 - ID получателя, 5000 - Количество коинов для перевода (ВНИМАНИЕ! Количество указывается в тысячных долях, то еcть 5000 = 5 VK Coin).

Для того чтобы платеж был от имени магазина, необходимо отправить третий параметр.

vkcoin.send(431035213, 5000, true);

Проверка баланса

Для проверки баланса необходимо обратиться к методу getBalance и передать массив, содержащий не более 100 ID получателей.

async function getBalance() {
  console.log(await vkcoin.getBalance([431035213]));
}

getBalance();

После чего мы получим: { response: { '431035213': 10991024280 } }

Для обработки этого ответа console.log(bal.response[431035213]), в таком случае мы получим баланс пользователя 431035213 в тысячных долях 10991024280.

Получим баланс нескольких пользователей

const usersId = [431035213, 237435213, 237435783];

async function getBalance() {
  const balRes = await vkcoin.getBalance(usersId); // Получаем баланс пользователей
  Object.values(balRes.response).map(balance => console.log(balance / 1000)); // Выведем их в консоль по одному
}

Форматирование возвращаемого значения

vkcoin.format(12345678900); // Вернет значение в привычном формате - 12 345 678,900

Пример использования совместно с vk-io

const VKCOIN = require("vkcoin-callback-api");
const { VK, getRandomId } = require("vk-io");

const vk = new VK({ token: "token" });
const vkcoin = new VKCOIN({
  id: 0, // Ваш ID
  key: "" // Ваш Merchant Key
});

vkcoin.startServer({
  server: "188.323.22.11", // Сервер (Обязательное поле)
  port: 1111 // Порт (По умолчанию 1234)
});

vkcoin.shopName("VK Coin bot"); // Устанавливаем название магазина

vkcoin.startPolling(async event => {
  console.log(event); // Выводим в консоль то, что нам вернет VK Coin при поступлении баланса
  /*
    response — объект, возвращаемый при пополнении бота по ссылке:
    {
      id: 418034787, (id транзакции)
      fromId: 431035213, (id пользователя, отправившего нам коины)
      toId: 354673884, (id нашего бота)
      amount: 5000, (Сумма пополнения * в тысячных долях, то есть нам перевели 5 VK Coin)
      payload: -944320189, (payload перевода * указывается в ссылке на пополнение)
      created_at: 1595181763, (Дата события)
      from_id: 431035213,  (id пользователя, отправившего нам коины)
      to_id: 354673884, (id нашего бота)
      key: 'dbd9579344cdc9d22e912219a3801e34' (хэш)
  }
  */

  // Далее обрабатываем

  const balance = await vkcoin.getBalance([event.fromId]); // Проверяем баланс пользователя, отправившего нам коины
  if ((balance[event.fromId] / 1000) < 5000000) {
    vkcoin.send(event.fromId, 5000000 - (balance[event.fromId] / 1000)); // Отправляем пользователю коины для того, чтобы его баланс был равен 5 000 000

    vk.api.messages.send({ user_id: event.fromId, message: `Мы отправили тебе ${5000000 - balance[event.fromId] / 1000}\nТеперь твой баланс 5 000 000`, random_id: getRandomId() }); // Отправляем пользователю сообщение о том, что его баланс пополнен
  } else {
    vk.api.messages.send({ user_id: event.fromId, message: `Твой баланс ${vkcoin.format(balance[event.fromId] / 1000)}, т.к. твой баланс больше 5 000 000 VK Coin мы тебе ничего не отправим`, random_id: getRandomId() }); // Отправляем пользователю сообщение о том, что его баланс более 5 000 000 VK Coin
  }
});

Made by ХОР ЕНОТОВ

Dependents (0)

Package Sidebar

Install

npm i vkcoin-callback-api

Weekly Downloads

1

Version

4.0.0

License

ISC

Unpacked Size

13.5 kB

Total Files

4

Last publish

Collaborators

  • xop_enotov