Skip to content

m1handr/spworlds

Repository files navigation

JS Библиотека сайтов СП

Это библиотека для Node.js для упрощения API сайтов СП. Документация к API тут.

Установка

Вы можете установить эту библиотеку при помощи npm или альтернативного пакетного менеджера (pnpm, yarn).

npm i spworlds

Использование

import { SPWorlds } from 'spworlds'
// const { SPWorlds } = require('spworlds');

// Где получить ID и токен - https://github.com/sp-worlds/api-docs/blob/main/AUTHORIZATION.md#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D0%B0-%D0%B8-id-%D0%BA%D0%B0%D1%80%D1%82%D1%8B
const api = new SPWorlds({ id: 'ID карты', token: 'Токен карты' })

Использование

Проверка доступности SPWorlds API

const pong = await api.ping()

if (pong) {
  return 'Работает!!'
} else 'Не работает :('

Инициализирование платежной формы

Если вы хотите принимать оплату в АРах на своем сайте, используйте этот метод.

Получение ссылки на страницу оплаты 16 АР, после успешной оплаты пользователь перейдет со страницы оплаты на https://eximple.com/success, а сайт СП отправит запрос на https://api.example.com/webhook с данными этого платежа, в том числе и SomeString. Последнее поле можно использовать, например, для ID заказа или чего-то подобного.

const url = await api.initPayment({
  items: [
    {
      name: 'SomeName',
      count: '1',
      price: '1',
      comment: 'SomeComment'
    }
  ],
  redirectUrl: 'https://eximple.com/success',
  webhookUrl: 'https://api.example.com/webhook',
  data: 'SomeString'
})

Перевод АРов на другую карту

Перевод 16 АР на карту с номером 55555 и комментарием "С днем рождения!"

api.createTransaction({
  receiver: '55555',
  amount: '16',
  comment: 'С днём рождения!'
})

Получение информации о карте

Метод возвращает объект с балансом и подключенным к карте вебхуком

const balance = await api.getCardInfo()

Получение всех карт игрока

Метод возвращает массив со следующими значениями:

name - Название карты number - Номер карты

const cards = await api.getCards('5opka')

Получение информации о владельце токена

Метод возвращает объект с большим количеством информации, которую можно узнать из официальной документации API

const user = await api.getCardOwner()

Получение ника игрока

Метод принимает ID игрока в Discord и возвращает его nickname и uuid, если у него есть проходка на сервер.

const userData = await api.findUser('111111111111111111')

if (!userData) throw 'У этого игрока нет проходки'

console.log(`Никнейм игрока: ${userData.username}`)
console.log(`Айди игрока: ${userData.uuid}`)

Установка вебхука для карты

Метод возвращает id и установленный webhook карты

На установленный вебхук будут отправляться все новые транзакции связанные с картой Данные будут отправлены через POST запрос

const res = await api.setWebhook('https://api.example.com/webhook')

Подтверждение вебхука

Проверка хеша из req.headers['X-Body-Hash'] на валидность. Если метод возвращает не true, не обрабатывайте этот запрос.

const isValid = api.validateHash(req.body, req.headers['X-Body-Hash'])

if (!isValid) throw 'Ошибка проверки цифровой подписи'

Contributing

Если вы хотите дополнить или улучшить библиотеку или документацию к ней, то сделайте pull запрос к этому репозиторию. Пожалуйста, используйте pnpm вместо npm и форматируйте js и ts код при помощи prettier, чтобы все было красиво.