# cryptoapi
Модуль для работы с Crypto API | [Официальное приложение](https://vk.com/app51446412_-221070987)
<br>
<br>
## Установка и импорт
Для установки необходимо прописать в консоль (cmd) следующую команду:
```
pip install apicrypto
```
Для импорта модуля в проект использовать:
```python
from cryptoapi import CryptoAPI
```
## Использование
Перед началом необходимо создать экземпляр класса CryptoAPI, который принимает 2 аргумента:
| Аргумент | Тип | Описание |
| -------- |:---:|:------------------------------------------- |
| user_id | int | ID Пользователя VK, который получил токен |
| token | str | Токен, полученный в самом приложении Crypto |
```python
from cryptoapi import CryptoAPI
crypto = CryptoAPI(user_id=ваш_ID, token="Ваш_Токен")
```
### getUserCoins()
Возвращает баланс указанного пользователя.
| Аргумент | Тип | Описание |
| -------- |:---:|:--------------------------------------------------------- |
| user_id | int | ID Пользователя VK, баланс которого необходимо получить |
`Если не указывать user_id, то подставится ID из созданного экземпляра`
```python
crypto.getUserCoins(user_id=498475943)
>>> 1139888
```
### getTransfers()
Возвращает список всех переводов
```python
crypto.getTransfers()
>>> [{'name': 'Алекса...}]
```
### transfer()
Отправляет перевод.
| Аргумент | Тип | Описание |
| -------- |:---:|:---------------------------------------- |
| toId | int | ID пользователя, кому отправляем перевод |
| amount | int | Сумма перевода |
```python
crypto.transfer(toId=498475943, amount=100)
>>> {"response": {"recipient_id": 498475943, "amount": 100}}
```
### connectServer()
Настраивает отправку callback уведомлений на Ваш сервер / сайт.
| Аргумент | Тип | Описание |
| -------- |:---:|:------------------------------------------------------ |
| url | str | Адрес сервера / сайта, куда буду приходить уведомления |
```python
crypto.connectServer(url="https://mysite.mydomain")
>>> {"response": {"url": "https://mysite.mydomain", "user_id": 498475943}}
```
**Обратите внимание, что ссылка обязательно должна начинаться с https:// или http://**
После получения перевода, callback возвращает JSON Объект события следующего вида:
```json
{
"event": "new_transfer",
"object": {
"sender_id": 498475943,
"amount": 1000,
"create_date": 1687423373784,
"secretKey": "18e0f585616e1ece62316072a45f64e4"
}
}
```
### listen()
Запускает встроенный прослушиватель переводов. При получении нового перевода возвращает JSON.
| Аргумент | Тип | Описание |
| -------- |:---:|:-------------------------------------------------------------------- |
| interval | int | Задает интервал обновления переводов в секундах (По умолчанию: 1) |
```python
for object in crypto.listen(interval=0.1):
print(object)
>>> {"name": "Иван Шаповалов", "avatar": "https://sun34-2.userapi.com/impg/0MjzdwFu6WRSYod_65kU0BjdVpNcqWyxXmr76g/ZlbXvz3CTSs.jpg?size=720x720&quality=95&sign=ae29a8d9bacfab080534f3f2cb964963&type=album", "sender_id": 498475943, "recipient_id": 487364833, "create_date": 1687416286823, "amount": 1000}
```
### md5()
Генерирует secretKey для проверки callback переводов на честность (Подробней - https://vk.com/@crypto_play-api?anchor=connectserver)
`Имеется два варианта передачи параметров для генерации secretKey`
`Первый вариант`
| Аргумент | Тип | Описание |
| ----------- |:----:|:------------------------- |
| create_date | int | Дата перевода в UNIX |
| sender_id | int | ID Отправителя |
```python
crypto.md5(create_data=1689398602, sender_id=498475943)
>>> '876104e5cee8669f1b89448282215da5'
```
`Второй вариант`
| Аргумент | Тип | Описание |
| ----------- |:-----------:|:------------------------- |
| json | dict / json | JSON полученного перевода |
```python
crypto.md5(json=
{
'event': 'new_transfer',
'object': {
'sender_id': 1,
'amount': 10000,
'create_date': 1689408602,
'secretKey': '1287a00828e7e44ea83b7d90caf938a1'
}
})
>>> '1287a00828e7e44ea83b7d90caf938a1'
```
Raw data
{
"_id": null,
"home_page": "https://github.com/SartonDev/cryptoapi/",
"name": "apicrypto",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "",
"keywords": "crypto cryptoapi vk vkontakte module simple apicrypto api",
"author": "Ivan Shapovalov",
"author_email": "sartondev@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/17/bc/430ff6df49aca89b4b32a84729aaaef863f2076364a97e353fe5e5d2df40/apicrypto-0.0.231.tar.gz",
"platform": null,
"description": "# cryptoapi\r\n\u041c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Crypto API | [\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435](https://vk.com/app51446412_-221070987)\r\n<br>\r\n<br>\r\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\r\n\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c (cmd) \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443:\r\n```\r\npip install apicrypto\r\n```\r\n\r\n\u0414\u043b\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:\r\n```python\r\nfrom cryptoapi import CryptoAPI\r\n```\r\n## \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\r\n\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 CryptoAPI, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 2 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430:\r\n\r\n| \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 | \u0422\u0438\u043f | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 |\r\n| -------- |:---:|:------------------------------------------- |\r\n| user_id | int | ID \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f VK, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0442\u043e\u043a\u0435\u043d |\r\n| token | str | \u0422\u043e\u043a\u0435\u043d, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 \u0441\u0430\u043c\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 Crypto |\r\n\r\n```python\r\nfrom cryptoapi import CryptoAPI\r\ncrypto = CryptoAPI(user_id=\u0432\u0430\u0448_ID, token=\"\u0412\u0430\u0448_\u0422\u043e\u043a\u0435\u043d\")\r\n```\r\n\r\n### getUserCoins()\r\n\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u043b\u0430\u043d\u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\r\n\r\n| \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 | \u0422\u0438\u043f | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 |\r\n| -------- |:---:|:--------------------------------------------------------- |\r\n| user_id | int | ID \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f VK, \u0431\u0430\u043b\u0430\u043d\u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c |\r\n\r\n`\u0415\u0441\u043b\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c user_id, \u0442\u043e \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f ID \u0438\u0437 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430`\r\n\r\n```python\r\ncrypto.getUserCoins(user_id=498475943)\r\n>>> 1139888\r\n```\r\n\r\n### getTransfers()\r\n\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432\r\n```python\r\ncrypto.getTransfers()\r\n>>> [{'name': '\u0410\u043b\u0435\u043a\u0441\u0430...}]\r\n```\r\n\r\n### transfer()\r\n\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0432\u043e\u0434.\r\n\r\n| \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 | \u0422\u0438\u043f | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 |\r\n| -------- |:---:|:---------------------------------------- |\r\n| toId | int | ID \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u043c\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434 |\r\n| amount | int | \u0421\u0443\u043c\u043c\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 |\r\n\r\n```python\r\ncrypto.transfer(toId=498475943, amount=100)\r\n>>> {\"response\": {\"recipient_id\": 498475943, \"amount\": 100}}\r\n```\r\n\r\n### connectServer()\r\n\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 callback \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 \u0412\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 / \u0441\u0430\u0439\u0442.\r\n\r\n| \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 | \u0422\u0438\u043f | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 |\r\n| -------- |:---:|:------------------------------------------------------ |\r\n| url | str | \u0410\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 / \u0441\u0430\u0439\u0442\u0430, \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f |\r\n\r\n```python\r\ncrypto.connectServer(url=\"https://mysite.mydomain\")\r\n>>> {\"response\": {\"url\": \"https://mysite.mydomain\", \"user_id\": 498475943}}\r\n```\r\n\r\n**\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 https:// \u0438\u043b\u0438 http://**\r\n\r\n\u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430, callback \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 JSON \u041e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430:\r\n```json\r\n{\r\n \"event\": \"new_transfer\",\r\n \"object\": {\r\n \"sender_id\": 498475943,\r\n \"amount\": 1000,\r\n \"create_date\": 1687423373784,\r\n \"secretKey\": \"18e0f585616e1ece62316072a45f64e4\"\r\n }\r\n}\r\n```\r\n\r\n### listen()\r\n\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432. \u041f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 JSON.\r\n\r\n| \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 | \u0422\u0438\u043f | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 |\r\n| -------- |:---:|:-------------------------------------------------------------------- |\r\n| interval | int | \u0417\u0430\u0434\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445 (\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: 1) |\r\n\r\n```python\r\nfor object in crypto.listen(interval=0.1):\r\n print(object)\r\n>>> {\"name\": \"\u0418\u0432\u0430\u043d \u0428\u0430\u043f\u043e\u0432\u0430\u043b\u043e\u0432\", \"avatar\": \"https://sun34-2.userapi.com/impg/0MjzdwFu6WRSYod_65kU0BjdVpNcqWyxXmr76g/ZlbXvz3CTSs.jpg?size=720x720&quality=95&sign=ae29a8d9bacfab080534f3f2cb964963&type=album\", \"sender_id\": 498475943, \"recipient_id\": 487364833, \"create_date\": 1687416286823, \"amount\": 1000}\r\n```\r\n\r\n### md5()\r\n\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 secretKey \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 callback \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043d\u0430 \u0447\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c (\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439 - https://vk.com/@crypto_play-api?anchor=connectserver)\r\n\r\n`\u0418\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 secretKey`\r\n\r\n`\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442`\r\n| \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 | \u0422\u0438\u043f | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 |\r\n| ----------- |:----:|:------------------------- |\r\n| create_date | int | \u0414\u0430\u0442\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0432 UNIX |\r\n| sender_id | int | ID \u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044f |\r\n\r\n```python\r\ncrypto.md5(create_data=1689398602, sender_id=498475943)\r\n>>> '876104e5cee8669f1b89448282215da5'\r\n```\r\n\r\n`\u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442`\r\n| \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 | \u0422\u0438\u043f | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 |\r\n| ----------- |:-----------:|:------------------------- |\r\n| json | dict / json | JSON \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 |\r\n\r\n```python\r\ncrypto.md5(json=\r\n{\r\n 'event': 'new_transfer', \r\n 'object': {\r\n 'sender_id': 1, \r\n 'amount': 10000, \r\n 'create_date': 1689408602, \r\n 'secretKey': '1287a00828e7e44ea83b7d90caf938a1'\r\n }\r\n})\r\n>>> '1287a00828e7e44ea83b7d90caf938a1'\r\n```\r\n",
"bugtrack_url": null,
"license": "",
"summary": "Simple module for Crypto API",
"version": "0.0.231",
"project_urls": {
"Documentation": "https://github.com/SartonDev/cryptoapi/blob/main/README.md",
"Homepage": "https://github.com/SartonDev/cryptoapi/"
},
"split_keywords": [
"crypto",
"cryptoapi",
"vk",
"vkontakte",
"module",
"simple",
"apicrypto",
"api"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b1d9be54be8db1456e599f17c6f46cd9e54ab6484e173ace63a0cdb4abf8964e",
"md5": "a3c6304a92a7f8f249f140e850d5f9a1",
"sha256": "884e2086bd73624cddd36e0238f62c53415bc6ee20542e4215367d932bbd783f"
},
"downloads": -1,
"filename": "apicrypto-0.0.231-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a3c6304a92a7f8f249f140e850d5f9a1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 3340,
"upload_time": "2023-07-15T16:39:11",
"upload_time_iso_8601": "2023-07-15T16:39:11.832725Z",
"url": "https://files.pythonhosted.org/packages/b1/d9/be54be8db1456e599f17c6f46cd9e54ab6484e173ace63a0cdb4abf8964e/apicrypto-0.0.231-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "17bc430ff6df49aca89b4b32a84729aaaef863f2076364a97e353fe5e5d2df40",
"md5": "3bc8534ccfffe4f0e9d374616371956a",
"sha256": "1c336fb9914a4f08b0b289a7228a708db7820e9fe86a84a3c0ee314e69de1a6f"
},
"downloads": -1,
"filename": "apicrypto-0.0.231.tar.gz",
"has_sig": false,
"md5_digest": "3bc8534ccfffe4f0e9d374616371956a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 3503,
"upload_time": "2023-07-15T16:39:14",
"upload_time_iso_8601": "2023-07-15T16:39:14.979528Z",
"url": "https://files.pythonhosted.org/packages/17/bc/430ff6df49aca89b4b32a84729aaaef863f2076364a97e353fe5e5d2df40/apicrypto-0.0.231.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-15 16:39:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "SartonDev",
"github_project": "cryptoapi",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "apicrypto"
}