Skip to content

kravetsone/payok

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PAYOK

NODE JS модуль, который позволит принимать оплату с помощью платёжного агрегатора payok.io

PAYOK

Downloads Downloads/month last commit GitHub npm

📦 Установка

  • используя npm
    npm install payok
  • используя Yarn
    yarn add payok
  • используя pnpm
    pnpm add payok
  • используя bun
    bun install payok

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

import { PAYOK } from "payok";

const payok = new PAYOK({
    apiId: 1,
    apiKey: "yourApiKey",
    secretKey: "yourSecretKey",
    shop: 2000,
});
Параметр Тип Описание Обязательный
apiId number Ваш идентификатор (ID) API ключа +
apiKey string Ваш API ключ +
secretKey string Секретный ключ, который принадлежит проекту +
shop number Идентификатор (ID) проекта +

const link = payok.getPaymentLink({
    amount: 10,
    desc: "Описание вашего товара",
    success_url: `https://github.com/kravetsone/payok`,
    email: "[email protected]",
    custom: { id: 123456 },
});
console.log(link); // { payUrl: "https://payok.io/pay?...", paymentId: "98dd5-51e1-a0644"}
Параметр Тип Описание Обязательный
amount number Сумма платежа +
desc string Название или описание вашего товара +
success_url string Ссылка, на которую переадресует пользователя после успешной оплаты -
email string Email пользователя -
method string Способ оплаты -
lang string Язык интерфейса (RU/ENG) -
custom.* any Любой ваш параметр, который придёт к вам на вебхук в случае оплаты -

🚧 Параметр sign, приходящий вместе с платежём, уже проверен библиотекой, так что с ним вам взаимодействовать не потребуется.

// Запускаем сам веб-сервер
payok.createWebhook(3000, "/amazing-secret-url-path");
// Слушаем обработанное событие пополнения
payok.events.on("payment", (payment) => {
        console.log(payment);
        /*{
            payment_id: '51387-77a3-d3724',
            shop: '2000',
            amount: '10',
            profit: '10',
            desc: 'Описание вашего товара',
            currency: 'RUB',
            currency_amount: '10.69',
            sign: 'b7453a35683171d235dfb13a16b61f41',
            email: '[email protected]',
            date: '11.06.2022 12:13:15',
            method: 'Qiwi',
            custom: { id: '123456' }
        }*/
    });
});
Параметр Тип Описание Обязательный
port number Порт на котором вы хотите раскрыть вебхук +
path string Путь по которому будет доступен вебхук -

payok.api.getBalance().then((res) => {
    console.log(res); //{ balance: "10.00", ref_balance: "0" }
});

Без параметров


payok.api.getTransactions({ offset: 1 }).then((res) => {
    console.log(res);
    /*[{
                "id": "1",
                "transaction": 10000,
                "email": "[email protected]",
                "amount": "1065",
                "currency": "USD",
                "currency_amount": "14.26",
                "comission_percent": 5 ,
                "comission_fixed": "15",
                "amount_profit": "1000",
                "method": Visa/Mastercard,
                "payment_id": "10500",
                "description": "Описание транзакции",
                "date": "26.09.2021 20:40:07",
                "pay_date": "26.09.2021 21:00:00"
                "transaction_status": 0
                "custom_fields": null
                "webhook_status": 1
                "webhook_amount": 1
            }]*/
});
Параметр Тип Описание Обязательный
payment string Идентификатор (ID) платежа -
offset number Пропуск определённого числа строк -

payok.api.getPayouts({ offset: 1 }).then((res) => {
    console.log(res);
    /*[{
                "id": "1",
                "payout": 10000,
                "method": "card",
                "reciever": "5000400030002000",
                "type": "main",
                "amount": "1000",
                "comission_percent": 2 ,
                "comission_fixed": "50",
                "amount_profit": 930,
                "date_create": "26.09.2021 20:40:07",
                "date_pay": "26.09.2021 20:55:01",
                "status": 0
            }]*/
});
Параметр Тип Описание Обязательный
payout_id string Идентификатор (ID) выплаты -
offset number Пропуск определённого числа строк -

payok.api
    .createPayout({
        amount: 10,
        method: "qiwi",
        reciever: "+79851628442",
        comission_type: "balance",
    })
    .then((res) => {
        console.log(res);
        /*
            {
                "status":"success",
                "remain_balance":"229.44",
                "data": {
                    "payout_id": 100,
                    "method": "card",
                    "reciever": "5000400030002000",
                    "amount": 1000,
                    "comission_percent": 2 ,
                    "comission_fixed": "50",
                    "amount_profit": 930,
                    "date": "26.09.2021 20:40:07",
                    "payout_status_code": 0,
                    "payout_status_text": "WAIT"
                }
            }
        */
    });
Параметр Тип Описание Обязательный
amount number Сумма выплаты +
method string Способ выплаты +
reciever string Реквезиты на которые придёт выплата +
comission_type string Комиссия с баланса - balance, а если с выплаты - payment +
webhook_url string URL вебхука для отправки статуса выплаты -

Если нашли ошибку, то создайте ISSUES

Changelog:

2.0.0 - Избавился от Axios, qs, добавил типов для ответа и всякие разные improves (но API всё ещё плохое)

1.0.4 - Breaking Change. Поменяли систему событий. Добавили примеры и множество более скромных деяних. Подробнее

1.0.3 - Поддержка TypeScript. Рефакторинг кода. Мелкие изменения в Readme. Зависимость node-fetch заменена на axios.

1.0.2 - Исправлены проблемы с API запросами (был неверно передан Content-Type). Убраны лишние зависимости (7 => 3)

1.0.1 - Фикс множества ошибок.

1.0.0 - Релиз библиотеки. Добавлен Readme