yoomoney-sdk
Advanced tools
Comparing version 1.1.4 to 1.1.5
{ | ||
"name": "yoomoney-sdk", | ||
"version": "1.1.4", | ||
"version": "1.1.5", | ||
"description": "YooMoney typed SDK", | ||
@@ -14,3 +14,4 @@ "main": "dist/index.js", | ||
"lib": "./dist", | ||
"doc": "./docs" | ||
"doc": "./docs", | ||
"example": "./examples" | ||
}, | ||
@@ -25,7 +26,11 @@ "scripts": { | ||
"lint": "eslint src/*", | ||
"prettify": "prettier --write src/**/*" | ||
"prettify": "prettier --write src/**/*", | ||
"docs": "typedoc --out docs/api src/index.ts" | ||
}, | ||
"files": [ | ||
"dist", | ||
"docs" | ||
"docs", | ||
"examples", | ||
"README.md", | ||
"CONTRIBUTING.md" | ||
], | ||
@@ -78,2 +83,4 @@ "repository": { | ||
"ts-node": "^10.0.0", | ||
"typedoc": "^0.22.5", | ||
"typedoc-plugin-markdown": "^3.11.3", | ||
"typescript": "^4.3.2" | ||
@@ -80,0 +87,0 @@ }, |
181
README.md
@@ -12,23 +12,4 @@ # YooMoney NodeJS SDK | ||
## Содержание | ||
## 🍬 Почему именно эта библиотека? | ||
- [YooMoney NodeJS SDK](#yoomoney-nodejs-sdk) | ||
- [Содержание](#содержание) | ||
- [Почему именно эта библиотека?](#почему-именно-эта-библиотека) | ||
- [📦 Установка](#-установка) | ||
- [NPM:](#npm) | ||
- [Yarn:](#yarn) | ||
- [✏️ Примеры](#️-примеры) | ||
- [🔎 Получение информации о владельце кошелька](#-получение-информации-о-владельце-кошелька) | ||
- [💸 Отправка перевода](#-отправка-перевода) | ||
- [Приём платежей](#приём-платежей) | ||
- [Небольшое НО](#небольшое-но) | ||
- [ℹ️ Доп. информация](#ℹ️-доп-информация) | ||
- [🧑⚖️ Лицензия](#️-лицензия) | ||
- [❤️ Контрибьютинг](#️-контрибьютинг) | ||
- [🙋 Поддержка](#-поддержка) | ||
- [Интересует приём и отправка P2P платежей по РФ на NodeJS?](#интересует-приём-и-отправка-p2p-платежей-по-рф-на-nodejs) | ||
## Почему именно эта библиотека? | ||
1. Есть поддержка TypeScript | ||
@@ -42,3 +23,3 @@ 2. Покрывает большую часть https://yoomoney.ru/docs/wallet | ||
### NPM: | ||
**Используя `NPM`** | ||
@@ -49,3 +30,3 @@ ```shell | ||
### Yarn: | ||
**Используя `Yarn`** | ||
@@ -56,153 +37,23 @@ ```shell | ||
## ✏️ Примеры | ||
**Используя `pnpm`** | ||
### 🔎 Получение информации о владельце кошелька | ||
```typescript | ||
import { YMApi } from "yoomoney-sdk"; | ||
const token = "..."; // Где-то здесь берём oauth токен кошелька | ||
const api = new YMApi(token); | ||
api.accountInfo().then(console.log); | ||
```shell | ||
pnpm add yoomoney-sdk | ||
``` | ||
Который в консоль выведет | ||
## 🛠️ Использование | ||
```javascript | ||
{ | ||
account: '41xxxxxxxxxx848', | ||
balance: 34.18, | ||
currency: '643', | ||
account_type: 'personal', | ||
identified: true, | ||
account_status: 'identified', | ||
balance_details: { total: 34.18, available: 34.18 } | ||
} | ||
``` | ||
1. [⚙️ Список методов](./docs/api/modules.md) | ||
2. [🦄 Примеры](./examples/README.md) | ||
3. 🧑⚖️ Лицензия - [**MIT**](./LICENSE) | ||
### 💸 Отправка перевода | ||
#### Небольшое НО | ||
```typescript | ||
// Платежи куда угодно 101 | ||
Если вызов метода API возвращает ошибку (то-есть есть поле `error` в ответе), то библиотека кидает ошибку `YMApiError`, которая содержит поля: | ||
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); | ||
``` | ||
### Приём платежей | ||
```javascript | ||
// ♂️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**](./LICENSE) | ||
### ❤️ Контрибьютинг | ||
**🇬🇧: `Contributing`** | ||
_Что делаем?_: | ||
@@ -215,6 +66,4 @@ | ||
### 🙋 Поддержка | ||
## 🙋 Поддержка | ||
**🇬🇧: `Support`** | ||
Библиотека - маленькая, я отвечаю быстро. Не стесняйтесь писать Issue, даже если кажется что они глупые. Если что, можете писать в | ||
@@ -224,4 +73,4 @@ | ||
### Интересует приём и отправка P2P платежей по РФ на NodeJS? | ||
## Интересует приём и отправка P2P платежей по РФ на NodeJS? | ||
У нас есть точно такое-же типизированное SDK для QIWI 👉 [github.com/AlexXanderGrib/node-qiwi-sdk](https://github.com/AlexXanderGrib/node-qiwi-sdk) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
210753
42
2108
23
71
2