Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

yoomoney-sdk

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

yoomoney-sdk

YooMoney typed SDK

  • 1.1.4
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
44
increased by4.76%
Maintainers
1
Weekly downloads
 
Created
Source

YooMoney NodeJS SDK

license MIT npm GitHub last commit

YooMoney SDK

Содержание

Почему именно эта библиотека?

  1. Есть поддержка TypeScript
  2. Покрывает большую часть https://yoomoney.ru/docs/wallet
  3. Документация прямо в коде
  4. Всего 2 зависимости: node-fetch и redirect-form-builder (для генерации html форм)
  5. Есть API генерации frontend форм перенаправления для Авторизации и Оплаты

📦 Установка

NPM:

npm i -S yoomoney-sdk

Yarn:

yarn add yoomoney-sdk

✏️ Примеры

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

import { YMApi } from "yoomoney-sdk";

const token = "..."; // Где-то здесь берём oauth токен кошелька

const api = new YMApi(token);

api.accountInfo().then(console.log);

Который в консоль выведет

{
  account: '41xxxxxxxxxx848',
  balance: 34.18,
  currency: '643',
  account_type: 'personal',
  identified: true,
  account_status: 'identified',
  balance_details: { total: 34.18, available: 34.18 }
}

💸 Отправка перевода

// Платежи куда угодно 101

import { YMApi, ymTypes } from "yoomoney-sdk";

const api = new YMApi(process.env.YM_TOKEN);

type PayoutMethod = "qiwi" | "yoomoney" | "card" | "mobile";

function getRequest(
  method: PayoutMethod,
  account: string,
  amount: number
): ymTypes.RequestPaymentParams {
  switch (method) {
    case "yoomoney":
      return {
        amount,
        pattern_id: "p2p",
        to: account
      };

    case "qiwi":
      // Взято из доков и с https://yoomoney.ru/api/showcase/97186
      return {
        rapida_param1: account.slice(1),
        netSum: amount.toString(),
        pattern_id: "97186",
        ShopID: "135960",
        ShowCaseID: "44",
        ShopArticleID: "434586"
      };

    case "mobile":
      return {
        pattern_id: "phone-topup",
        "phone-number": account,
        amount
      };

    case "card":
      // Искал часа 2 как сделать перевод через API - ничего
      throw new Error("Метод недоступен");
  }
}

async function sendPayment(method: PayoutMethod, account: string, amount: number) {
  // Запрашиваем платёж
  const request = await api.requestPayment(getRequest(method, account, amount));

  // Где-то тут можно сохранить ID платежа в ДБ и оставить на потом

  // Подтверждаем платёж
  const response = await api.processPayment({
    money_source: "wallet",
    request_id: request.request_id
  });

  console.log(response);
}

// Донатим на разработку этой библиотеки :)
sendPayment("yoomoney", "410016348581848", 100);

Приём платежей

// ♂️Gachi♂️ магазинчик на Express
const express = require("express");
const app = express();
const { YMPaymentFromBuilder, YMFormPaymentType } = require("yoomoney-sdk");

const port = parseInt(process.env.PORT);

app.get("/pay", (_req, res) => {
  const builder = new YMPaymentFromBuilder()
    .setQuickPayForm("shop")
    .setAmount((300 * 74.3).toFixed(2)) // 300 баксов
    .requirePhone() // Требуем с плательщика ввести телефон
    .setSuccessURL(`http://localhost:${port}/success`)
    .setPaymentType(YMFormPaymentType.FromCard) // Просим деньги с карты
    .setReceiver("410016348581848") // Номер кошелька получателя (ваш)
    .setLabel("payment-001") // Чтобы потом вычленить в уведомлении
    .setComment("За ♂️Fisting♂️");

  res.whiteHead(200, "OK", {
    "Content-Type": "text/html; charset=utf-8"
  });

  res.end(builder.buildHtml(true)); // true = делаем полную страничку, а не только форму
});

app.get("/success", (_req, res) => {
  res.end("Спасибо за покупку!");
});

app.listen(port);

Небольшое НО

Если API возвращает ошибку (то-есть поле error в ответе), то библиотека кидает ошибку YMApiError, которая содержит поля:

  • code - Значение поля error в ответе
  • response - Ответ полностью

ℹ️ Доп. информация

🇬🇧: Additional info

🧑‍⚖️ Лицензия

🇬🇧: License

MIT

❤️ Контрибьютинг

🇬🇧: Contributing

Что делаем?:

  1. ⁉️ Не стесняемся писать Issue
  2. 🛠️ Если хотите что-то поправить следуйте гайду CONTRIBUTING.md
  3. 💸 Донатим 👉 https://sobe.ru/na/yoomoney_sdk
  4. 🌟 Ставим звёздочки, если библиотека понравилась.

🙋 Поддержка

🇬🇧: Support

Библиотека - маленькая, я отвечаю быстро. Не стесняйтесь писать Issue, даже если кажется что они глупые. Если что, можете писать в

Telegram: @AlexXanderGrib

Интересует приём и отправка P2P платежей по РФ на NodeJS?

У нас есть точно такое-же типизированное SDK для QIWI 👉 github.com/AlexXanderGrib/node-qiwi-sdk

Keywords

FAQs

Package last updated on 27 Sep 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc