mirror of
https://github.com/deesiigneer/pyspapi.git
synced 2026-04-20 12:35:26 +00:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f551a860bc | ||
|
|
1065b5748b | ||
|
|
1d6af2b8ec | ||
|
|
f244e3f4db | ||
|
|
76dc15a332 | ||
|
|
a2a4ac9fab | ||
|
|
ef40d83a9c | ||
|
|
4a611396a1 | ||
|
|
7cc708ee03 | ||
|
|
8cba25a754 |
39
.github/workflows/python-publish.yml
vendored
Normal file
39
.github/workflows/python-publish.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# This workflow will upload a Python Package using Twine when a release is created
|
||||||
|
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
|
||||||
|
|
||||||
|
# This workflow uses actions that are not certified by GitHub.
|
||||||
|
# They are provided by a third-party and are governed by
|
||||||
|
# separate terms of service, privacy policy, and support
|
||||||
|
# documentation.
|
||||||
|
|
||||||
|
name: Upload to PYPI
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v3
|
||||||
|
with:
|
||||||
|
python-version: '3.x'
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install build
|
||||||
|
- name: Build package
|
||||||
|
run: python -m build
|
||||||
|
- name: Publish package
|
||||||
|
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
|
||||||
|
with:
|
||||||
|
user: __token__
|
||||||
|
password: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
29
README.md
29
README.md
@@ -1,16 +1,16 @@
|
|||||||
# pyspapi
|
# pyspapi
|
||||||
Фреймворк [API](https://github.com/sp-worlds/api-docs) для серверов СП
|
[API](https://github.com/sp-worlds/api-docs) обертка для серверов СП, написанная на Python.
|
||||||
|
|
||||||
## Установка
|
## Установка
|
||||||
**Требуется *Python 3.7* или выше**
|
**Требуется *Python 3.7* или выше**
|
||||||
|
|
||||||
*Windows*
|
*Windows*
|
||||||
```commandline
|
```commandline
|
||||||
> pip install pyspapi
|
pip install pyspapi
|
||||||
```
|
```
|
||||||
*Linux*
|
*Linux*
|
||||||
```commandline
|
```commandline
|
||||||
$ sudo apt pip3 install pyspapi
|
sudo apt pip3 install pyspapi
|
||||||
```
|
```
|
||||||
|
|
||||||
## Примеры
|
## Примеры
|
||||||
@@ -33,8 +33,8 @@ print(api.payment(amount=1,
|
|||||||
- `amount` - Стоимость покупки в АРах
|
- `amount` - Стоимость покупки в АРах
|
||||||
- `redirectUrl` - URL страницы, на которую попадет пользователь после оплаты
|
- `redirectUrl` - URL страницы, на которую попадет пользователь после оплаты
|
||||||
- `webhookUrl` - URL, куда наш сервер направит запрос, чтобы оповестить ваш сервер об успешной оплате
|
- `webhookUrl` - URL, куда наш сервер направит запрос, чтобы оповестить ваш сервер об успешной оплате
|
||||||
- `data` - Строка до 100 символов, сюда можно пометить любые полезные данных.
|
- `data` - Строка до 100 символов, сюда можно поместить любые полезные данных.
|
||||||
#### Получение данных об успешной оплате
|
#### [Получение данных об успешной оплате](https://github.com/sp-worlds/api-docs/blob/main/PAYMENTS.md#%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BE%D0%B1-%D1%83%D1%81%D0%BF%D0%B5%D1%88%D0%BD%D0%BE%D0%B9-%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5)
|
||||||
После успешной оплаты на URL указанный в `webhookUrl` придет POST запрос.
|
После успешной оплаты на URL указанный в `webhookUrl` придет POST запрос.
|
||||||
|
|
||||||
*Тело запроса будет в формате JSON:*
|
*Тело запроса будет в формате JSON:*
|
||||||
@@ -43,6 +43,23 @@ print(api.payment(amount=1,
|
|||||||
- `amount` - Стоимость покупки
|
- `amount` - Стоимость покупки
|
||||||
- `data` - Данные, которые вы отдали при создании запроса на оплату
|
- `data` - Данные, которые вы отдали при создании запроса на оплату
|
||||||
|
|
||||||
|
Для проверки достоверности webhook'a используйте:
|
||||||
|
```Python
|
||||||
|
import spapi
|
||||||
|
|
||||||
|
api = spapi.Api(card_id='CARD_ID',
|
||||||
|
token='TOKEN')
|
||||||
|
|
||||||
|
print(api.webhook_verify(data='webhook_data',
|
||||||
|
header='webhook_header'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
```
|
||||||
|
В ответ вы получите:
|
||||||
|
- True - webhook достоверен
|
||||||
|
- False - webhook не является достоверным
|
||||||
|
|
||||||
### [Переводы](https://github.com/sp-worlds/api-docs/blob/main/TRANSACTIONS.md)
|
### [Переводы](https://github.com/sp-worlds/api-docs/blob/main/TRANSACTIONS.md)
|
||||||
|
|
||||||
```Python
|
```Python
|
||||||
@@ -61,7 +78,7 @@ print(api.transaction(receiver='12345',
|
|||||||
- `receiver` - Номер карты получателя
|
- `receiver` - Номер карты получателя
|
||||||
- `amount` - Количество АР для перевода
|
- `amount` - Количество АР для перевода
|
||||||
- `comment` - Комментарий к переводу
|
- `comment` - Комментарий к переводу
|
||||||
-
|
|
||||||
### [Проверка наличия проходки](https://github.com/sp-worlds/api-docs/blob/main/USERS.md)
|
### [Проверка наличия проходки](https://github.com/sp-worlds/api-docs/blob/main/USERS.md)
|
||||||
|
|
||||||
```Python
|
```Python
|
||||||
|
|||||||
4
setup.py
4
setup.py
@@ -9,8 +9,8 @@ requires = ['requests==2.25.1']
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='pyspapi',
|
name='pyspapi',
|
||||||
version='1.0.0a',
|
version='1.0.2',
|
||||||
description='Framework for SP API',
|
description='API wrapper for SP servers written in Python',
|
||||||
long_description=description,
|
long_description=description,
|
||||||
long_description_content_type='text/markdown',
|
long_description_content_type='text/markdown',
|
||||||
author='deesiigneer',
|
author='deesiigneer',
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
# pyspapi by deesiigneer
|
# pyspapi by deesiigneer
|
||||||
#
|
#
|
||||||
|
|
||||||
|
import hmac
|
||||||
|
import hashlib
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
from requests import post, get
|
from requests import post, get
|
||||||
|
|
||||||
|
|
||||||
class Error(Exception):
|
class Error(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -40,9 +44,9 @@ class Api:
|
|||||||
"""
|
"""
|
||||||
Создание запроса на оплату.
|
Создание запроса на оплату.
|
||||||
|
|
||||||
:param amount: Стоимость покупки в АРах
|
:param amount: Стоимость покупки в АРах.
|
||||||
:param redirecturl: URL страницы, на которую попадет пользователь после оплаты
|
:param redirecturl: URL страницы, на которую попадет пользователь после оплаты.
|
||||||
:param webhookurl: URL, куда наш сервер направит запрос, чтобы оповестить ваш сервер об успешной оплате
|
:param webhookurl: URL, куда наш сервер направит запрос, чтобы оповестить ваш сервер об успешной оплате.
|
||||||
:param data: Строка до 100 символов, сюда можно поместить любые полезные данных.
|
:param data: Строка до 100 символов, сюда можно поместить любые полезные данных.
|
||||||
|
|
||||||
:return: url - Ссылка на страницу оплаты, на которую стоит перенаправить пользователя.
|
:return: url - Ссылка на страницу оплаты, на которую стоит перенаправить пользователя.
|
||||||
@@ -52,15 +56,27 @@ class Api:
|
|||||||
'webhookUrl': webhookurl,
|
'webhookUrl': webhookurl,
|
||||||
'data': data})
|
'data': data})
|
||||||
|
|
||||||
|
def webhook_verify(self, data, header):
|
||||||
|
"""
|
||||||
|
Проверяет достоверность webhook'а.
|
||||||
|
|
||||||
|
:param data : data из webhook.
|
||||||
|
:param header : headers из webhook.
|
||||||
|
|
||||||
|
:return: Если header из webhook'а достоверен возвращает True, иначе False
|
||||||
|
"""
|
||||||
|
hmac_data = base64.b64encode(hmac.new(self.token.encode('utf-8'), data, hashlib.sha256).digest())
|
||||||
|
return hmac.compare_digest(hmac_data, header.encode('utf-8'))
|
||||||
|
|
||||||
def transaction(self, receiver, amount, comment):
|
def transaction(self, receiver, amount, comment):
|
||||||
"""
|
"""
|
||||||
Перевод АР на карту.
|
Перевод АР на карту.
|
||||||
|
|
||||||
:param receiver : Номер карты получателя
|
:param receiver : Номер карты получателя.
|
||||||
|
|
||||||
:param amount: Количество АР для перевода
|
:param amount: Количество АР для перевода.
|
||||||
|
|
||||||
:param comment: Комментарий для перевода
|
:param comment: Комментарий для перевода.
|
||||||
"""
|
"""
|
||||||
return self._fetch('transactions', data={'receiver': receiver,
|
return self._fetch('transactions', data={'receiver': receiver,
|
||||||
'amount': amount,
|
'amount': amount,
|
||||||
@@ -69,7 +85,7 @@ class Api:
|
|||||||
def check_user(self, discord_user_id):
|
def check_user(self, discord_user_id):
|
||||||
"""
|
"""
|
||||||
Проверка на наличие проходки
|
Проверка на наличие проходки
|
||||||
:param discord_user_id: Стоимость покупки в АРах
|
:param discord_user_id: ID пользователя в Discord.
|
||||||
|
|
||||||
:return: username - Ник пользователя или null, если у пользователя нет проходки на сервер.
|
:return: username - Ник пользователя или null, если у пользователя нет проходки на сервер.
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user