diff --git a/docs/src/en/payme-pkg/initializing-payments.md b/docs/src/en/payme-pkg/initializing-payments.md index 0f034ca..394a336 100644 --- a/docs/src/en/payme-pkg/initializing-payments.md +++ b/docs/src/en/payme-pkg/initializing-payments.md @@ -5,7 +5,7 @@ description: Initializing payments # [Generate pay link](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/generate_link.py){:target="_blank"} -- Example +> Example ```python from pprint import pprint @@ -19,7 +19,7 @@ pay_link = GeneratePayLink( pprint(pay_link) ``` -- Output +> Output ```shell https://checkout.paycom.uz/bT01ZTczMGU4ZTBiODUyYTQxN2FhNDljZWI7YWMub3JkZXItaWQ9OTk5O2E9OTk5OTtjPXlvdXItY2FsbGJhY2stdXJs ``` @@ -34,7 +34,8 @@ https://checkout.paycom.uz/bT01ZTczMGU4ZTBiODUyYTQxN2FhNDljZWI7YWMub3JkZXItaWQ9O ### Methods - generate_link() -> to generate payment link. -> Does not take any arguments +> **Does not take any arguments** + - to_tiyin() -> convert from sum to tiyin. | Argument | Type | Description | diff --git a/docs/src/en/payme-pkg/setup.md b/docs/src/en/payme-pkg/setup.md index 6051e1a..c719c85 100644 --- a/docs/src/en/payme-pkg/setup.md +++ b/docs/src/en/payme-pkg/setup.md @@ -14,6 +14,7 @@ Unix-based OS pip3 install payme-pkg ```
+ # Setup (django) 1. Add `'payme'` to your installed apps ```python diff --git a/docs/src/ru/payme-pkg/index.md b/docs/src/ru/payme-pkg/index.md index 5554065..2ffc50c 100644 --- a/docs/src/ru/payme-pkg/index.md +++ b/docs/src/ru/payme-pkg/index.md @@ -2,4 +2,8 @@ title: Введение --- -# **Добро пожаловать!** +# **Введение** + +Добро пожаловать в документацию нашего пакета [payme-pkg](https://github.com/PayTechUz/payme-pkg/tree/master){:target="_blank"}. + +Продолжайте читать документацию. Смотреть [раздел настройки](setup/). diff --git a/docs/src/ru/payme-pkg/initializing-payments.md b/docs/src/ru/payme-pkg/initializing-payments.md new file mode 100644 index 0000000..9a34767 --- /dev/null +++ b/docs/src/ru/payme-pkg/initializing-payments.md @@ -0,0 +1,49 @@ +--- +title: Инициализация платежей +description: Инициализация платежей +--- + +# [Generate pay link](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/generate_link.py){:target="_blank"} + +> Пример +```python +from pprint import pprint + +from payme.methods.generate_link import GeneratePayLink + +pay_link = GeneratePayLink( + order_id="999", + amount=9999, + callback_url="callback-url" +).generate_link() + +pprint(pay_link) +``` +> Результат +```shell +https://checkout.paycom.uz/bT01ZTczMGU4ZTBiODUyYTQxN2FhNDljZWI7YWMub3JkZXItaWQ9OTk5O2E9OTk5OTtjPXlvdXItY2FsbGJhY2stdXJs +``` + +- Параметры + +| Аргумент | Тип | Описание | +|--------------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------| +| order_id | str | _Oбязательный_. ID заказа для оплаты | +| amount | Decimal | _Oбязательный_. Сумма принадлежит заказу | +| callback_url | str | _Необязательный_. URL обратного вызова API продавца, который будет перенаправлен после оплаты. По умолчанию требуется PAYME_CALL_BACK_URL из ваших настроек. | + +### Методы +- generate_link() -> создать ссылку для оплаты. +> **Не принимает никаких аргументов** + +- to_tiyin() -> перевести сум в тийин. + +| Аргумент | Тип | Описание | +|----------|---------|------------------------------| +| amount | Decimal | _Oбязательный_. Сумма заказа | + +- to_sum() -> convert from tiyin to sum. + +| Аргумент | Тип | Описание | +|----------|---------|------------------------------| +| amount | Decimal | _Oбязательный_. Сумма заказа | diff --git a/docs/src/ru/payme-pkg/merchant-api.md b/docs/src/ru/payme-pkg/merchant-api.md index 1398766..d074637 100644 --- a/docs/src/ru/payme-pkg/merchant-api.md +++ b/docs/src/ru/payme-pkg/merchant-api.md @@ -4,3 +4,39 @@ description: Методы Merchant API --- # Методы Merchant API + +### [CheckPerformTransaction](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/check_perform_transaction.py){:target="_blank"} +_Это используется для проверки выполнения транзакции_ +> **Не имеет методов** + + +### [CreateTransaction](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/create_transaction.py){:target="_blank"} +_Это используется для создания транзакции_ + + +#### Методы +- _convert_ms_to_datetime() -> конвертировать время из мс в формат даты и времени + +| Аргумент | Тип | Описание | +|----------|------|----------------------------------------| +| time_ms | int | _Oбязательный_. Время конвертации в мс | + + +### [PerformTransaction](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/perform_transaction.py){:target="_blank"} +_Это используется для выполнения транзакции_ +> **Не имеет методов** + + +### [CancelTransaction](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/cancel_transaction.py){:target="_blank"} +_Используется для отмены транзакции_ +> **Не имеет методов** + + +### [CheckTransaction](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/check_transaction.py){:target="_blank"} +_Это используется для проверки транзакции_ +> **Не имеет методов** + + +### [GetStatement](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/get_statement.py){:target="_blank"} +_Информация о транзакциях используется для сверки транзакций продавца и Payme Business._ +> **Не имеет методов** diff --git a/docs/src/ru/payme-pkg/setup.md b/docs/src/ru/payme-pkg/setup.md index 38307c2..512b70d 100644 --- a/docs/src/ru/payme-pkg/setup.md +++ b/docs/src/ru/payme-pkg/setup.md @@ -3,4 +3,74 @@ title: Настройка description: Настройка --- -# Настройка +# Установка +Windows +```shell +pip install payme-pkg +``` + +Unix-based OS +```shell +pip3 install payme-pkg +``` +
+ +# Настройка (Джанго) +1. Добавьте `'payme'` в установленные приложения. +```python +INSTALLED_APPS = [ + ... + 'payme', + ... +] +``` + +2. Добавьте учетные данные `'payme'` в свои настройки. +```python +PAYME: dict = { + 'PAYME_ID': 'payme-id', + 'PAYME_KEY': 'payme-key', + 'PAYME_URL': 'payme-checkout-url', + 'PAYME_CALL_BACK_URL': 'your-callback-url', # merchant api callback url + 'PAYME_MIN_AMOUNT': 'payme-min-amount', # integer field + 'PAYME_ACCOUNT': 'order-id', +} + +ORDER_MODEL = 'your_app.models.Your_Order_Model' +``` + +3. Создайте новое представление об обработке обратных вызовов. +```python +from payme.views import MerchantAPIView + + +class PaymeCallBackAPIView(MerchantAPIView): + def create_transaction(self, order_id, action, *args, **kwargs) -> None: + print(f"create_transaction for order_id: {order_id}, response: {action}") + + def perform_transaction(self, order_id, action, *args, **kwargs) -> None: + print(f"perform_transaction for order_id: {order_id}, response: {action}") + + def cancel_transaction(self, order_id, action, *args, **kwargs) -> None: + print(f"cancel_transaction for order_id: {order_id}, response: {action}") +``` + +4. Добавьте путь `payme` в ядро URL-шаблонов. +```python +from django.urls import path + +from your_app.views import PaymeCallBackAPIView + +urlpatterns = [ + ... + path("payments/merchant/", PaymeCallBackAPIView.as_view()), + ... +] +``` + +5. Запуск миграции +```shell +python manage.py makemigrations +``` + +> 🎉 Поздравляем, вы интегрировали методы торгового API с Django, продолжайте читать документацию. После успешной миграции проверьте панель администратора и посмотрите, что произошло. diff --git a/docs/src/ru/payme-pkg/subscribe-api.md b/docs/src/ru/payme-pkg/subscribe-api.md index b1fe530..3489112 100644 --- a/docs/src/ru/payme-pkg/subscribe-api.md +++ b/docs/src/ru/payme-pkg/subscribe-api.md @@ -4,3 +4,791 @@ description: Методы Subscribe API --- # Методы Subscribe API + +## [PaymeSubscribeCards](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/cards/subscribe_cards.py){:target="_blank"} +_Класс PaymeSubscribeCards включает в себя все методы paycom, принадлежащие картам._ + +### cards_create() +_Чтобы создать токен новой карты_ + +| Аргумент | Тип | Описание | +|----------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| number | str | _Oбязательный_. Номер карты. Максимальная длина 18 символов. | +| expire | str | _Oбязательный_. Строка срока действия карты. Максимальная длина 5 символов. | +| save | boolean | _Необязательный_. **По умолчанию оно равно true**. Тип токена. Опция включается или отключается в зависимости от бизнес-логики приложения. Если флаг true, токен можно использовать для дальнейших платежей. Если флаг false, токен можно использовать только один раз. Одноразовый токен удаляется после оплаты | + +> Пример метода создания карточка +```python +from pprint import pprint + +from payme.cards.subscribe_cards import PaymeSubscribeCards + +client = PaymeSubscribeCards( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id" +) + +response = client.cards_create( + number="8600069195406311", + expire="0399", + save=True +) + +pprint(response) +``` +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "result": { + "card": { + "number": "860006******6311", + "expire": "03/99", + "token": "63119784d15d8d8d093b37b8_ADHrAykwnAIc2hm4hPPriktZ8nnuvR96S9Kzmjb3Fcix25IrJmMKrGxP9VUEP9rRDKRhtYjUw0vsXON7PYEyMCHtDKpMuM4krrIk8jdnyK7bXkSBSCyiGs2aahIrep6TSodIAxqutMJ4g3O8FZ8vC1DSMKzOaX0UF8fDKNexXV039Qnj4bNQc6NcpKGJn0wUX8d0RBqkmKid4WyUQnT987ZQDM2mT2IGNZtugvN4tDJTXBVTpqCWkXnZ0YWj64Ye0ztr91Mibtndo0Y1s5nCA6wufUZZugJ6c7rse19XNFSSieFM7AWi9VqybMe4eeWiZEBriAbFhrf8kQvrpBmwUEp05GjvFMgH0ku3vyUtSuJI36exHheXuJK66KstcX1i69EaF3", + "recurrent": true, + "verify": false, + "type": "22618" + } + } +} +``` + +### card_get_verify_code() +_Чтобы получить код подтверждения_ + +| Аргумент | Тип | Описание | +|----------|-------|----------------------------------------| +| token | str | _Oбязательный_. Неактивный токен карты | + +> Пример получения кода подтверждения карты +```python +from pprint import pprint + +from payme.cards.subscribe_cards import PaymeSubscribeCards + + +client = PaymeSubscribeCards( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id" +) + +resp = client.card_get_verify_code( + token="630e5ffdd15d8d8d093b379b_2fsaoABWafecn20kofV4PFafFZjeGDWS9adM1PmboQaEZbbaxMcnaskctMbU9Iv8qgrOuKGz8SnjvZvYXDK64m1eS9gA5jZ7BBRaQybMXrDPtFPJ1fwek5B1KoIv5cMiCWYXj7ezpYEdJAKTIQw0Np9HsTXjqco4gQG3m8MOfeH9ovkdm66O6yj45oKXRmJyAK5i0SchXNNomACH3Oq80KyoRE1VoBRxvoKyMkOx0xcepXovxK9d3v26a8z7UtyokwY33N8MupviM3A5WHB5Xh35WZJJyFnxTSi1vvnYnG7uVd6Bb1GjV2yAHnimss8aEZGW5V7ZiPrhf8r6WJAeHciYDGK3msRKZJBQTfjgOdE9tGrEnMezVkxr1JXX0xSn5qqec2" +) + +pprint(resp) +``` + +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "result": { + "sent": true, + "phone": "99890*****66", + "wait": 60000 + } +} +``` + +### cards_verify() +_Верификация карты с помощью кода, отправленного по SMS_ + +| Аргумент | Тип | Описание | +|-------------|------|----------------------------------------| +| verify_code | str | _Oбязательный_. Код для проверки | +| token | str | _Oбязательный_. Неактивный токен карты | + +> Пример проверки карты +```python +from pprint import pprint + +from payme.cards.subscribe_cards import PaymeSubscribeCards + + +client = PaymeSubscribeCards( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id" +) + +resp = client.cards_verify( + verify_code="666666", + token="630e691fd15d8d8d093b379c_70mKyzqS8d1wTWzovIGjt9dKmjpn1KI8Y9XakPrfpbUASTBaZYbC1DjDcjYRmuNJep9gZrTRtHyEGBQYmBaPufuozF51bv4qEPsQnodq1VcD7tYyREwUXjMXXZUeu7Ek0REQCekCvVHX6rtNBpb4vtViJoNVjp94XpTqu0Bn3yYYb0CHu951wFydzRsieGxjGNrvx1oKyBcq0CdOUwoffRIt2VPvx5R2aVmc6ahwyhn387FEEcpO1PnjIJkWKTBWdI35ZPQnb1u1oss5aPg06E279THXRkoTThixbeqiD2JkWSXweNVGGDhTS30V4j61G3NWEPO2H3k4uFmCjjIQSzx4TxKzUgHg1i2q953PRUGjT4JZBRHMDxaN5tWuctEMNmY06p" +) + +pprint(resp) +``` + +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "result": { + "card": { + "number": "860006******6311", + "expire": "03/99", + "token": "63118a5dd15d8d8d093b37b7_X2j34OIJPnROfsgzYZCZ0w7OcC50zzwiowTsotEVO1uUbxkzaDrvdOno6jicQTrcRmxvibxrye4vUS3AynTNPaPCTGpfk3RCKmT9NaOAyyTmctAjWsjwvqGR5XUzAP1Xcx12GkhuQi6VJ4BeaIXOokSRu06rRjaivmJQ8HTiJiR9b3OmZtrhkIRNcNXnnp9zYm1mFP4BuqGpS8BMnY0ASIE6ffxWykjgBcDTAfWBFt4mg7O9Dsvx0aj3IB8z3RIbZYtDZJnUVhCZrwW7ONVI9uEAdxNthorjO6PbV7TQ8XCjrztgGf6uCtOwwxasiIUVZN6tCVDk8A8NvVSUzUHXQHVkaPn5heJNa3K4WsffIckq7SwMbiw3UbawipeZKyD3iwk1Km", + "recurrent": true, + "verify": true, + "type": "22618" + } + } +} +``` + +### cards_check() +_Проверка активности или неактивности токена карты_ + +| Аргумент | Тип | Описание | +|----------|-------|----------------------------------------| +| token | str | _Oбязательный_. Неактивный токен карты | + +> Пример проверки карт +```python +from pprint import pprint + +from payme.cards.subscribe_cards import PaymeSubscribeCards + + +client = PaymeSubscribeCards( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id" +) + +resp = client.cards_check( + token="630e691fd15d8d8d093b379c_70mKyzqS8d1wTWzovIGjt9dKmjpn1KI8Y9XakPrfpbUASTBaZYbC1DjDcjYRmuNJep9gZrTRtHyEGBQYmBaPufuozF51bv4qEPsQnodq1VcD7tYyREwUXjMXXZUeu7Ek0REQCekCvVHX6rtNBpb4vtViJoNVjp94XpTqu0Bn3yYYb0CHu951wFydzRsieGxjGNrvx1oKyBcq0CdOUwoffRIt2VPvx5R2aVmc6ahwyhn387FEEcpO1PnjIJkWKTBWdI35ZPQnb1u1oss5aPg06E279THXRkoTThixbeqiD2JkWSXweNVGGDhTS30V4j61G3NWEPO2H3k4uFmCjjIQSzx4TxKzUgHg1i2q953PRUGjT4JZBRHMDxaN5tWuctEMNmY06p" +) + +pprint(resp) +``` + +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "result": { + "card": { + "number": "860006******6311", + "expire": "03/99", + "token": "63119b36d15d8d8d093b37c1_IJtHxZ46h5viyo8RIJCmQyE8qBw6PUWUdFKTMCVWrPoMMi4kJYsKyVdjQrIx6a12jDfEPVhhEqWm94FYvYh7IEjIs4xn0n3mM8Quw5dhd6ZT0dOK6u1spqWRMIDBpDMhHj2Ga8zZMAfeoiDAcrWScXS1AP2tkQHcJ40rBzHGHS6DoVeIheF70c0wO1kVQG0G5hDWguSGf2ZRFcBtpabv5BQkqSchxWKdCSVPIGiS6X7eF8YStdz1aGPzFyjDbaKT0vXNUMbQ7gaKh4PeQbruVVwFDfeIWqGeNmgCCPU4X0wCHFjTt8K61e9VOauNeU81ckoKHD8XGzCwGFJHrC4sHvNv4no3RifWhHCQF9GmFKf8cP2qh4pqTKwu3gOITaX5Ss71tC", + "recurrent": true, + "verify": true, + "type": "22618" + } + } +} +``` + +### cards_remove() +_Удалить токен карты в случае успеха возвращает успех_ + +| Аргумент | Тип | Описание | +|----------|--------|----------------------------------------| +| token | str | _Oбязательный_. Неактивный токен карты | + +> Пример удаления карт +```python +from pprint import pprint + +from payme.cards.subscribe_cards import PaymeSubscribeCards + + +client = PaymeSubscribeCards( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id" +) + +resp = client.cards_remove( + token="630e691fd15d8d8d093b379c_70mKyzqS8d1wTWzovIGjt9dKmjpn1KI8Y9XakPrfpbUASTBaZYbC1DjDcjYRmuNJep9gZrTRtHyEGBQYmBaPufuozF51bv4qEPsQnodq1VcD7tYyREwUXjMXXZUeu7Ek0REQCekCvVHX6rtNBpb4vtViJoNVjp94XpTqu0Bn3yYYb0CHu951wFydzRsieGxjGNrvx1oKyBcq0CdOUwoffRIt2VPvx5R2aVmc6ahwyhn387FEEcpO1PnjIJkWKTBWdI35ZPQnb1u1oss5aPg06E279THXRkoTThixbeqiD2JkWSXweNVGGDhTS30V4j61G3NWEPO2H3k4uFmCjjIQSzx4TxKzUgHg1i2q953PRUGjT4JZBRHMDxaN5tWuctEMNmY06p" +) + +pprint(resp) +``` + +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "result": { + "success": true + } +} +``` + + +## [PaymeSubscribeReceipts](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/receipts/subscribe_receipts.py){:target="_blank"} +_Класс PaymeSubscribeReceipts включает в себя все методы paycom, относящиеся к квитанциям._ + +### receipts_create() +_Чтобы создать новую квитанцию об оплате_ + +| Аргумент | Тип | Описание | +|----------|-------|----------------------------------------------| +| amount | float | _Oбязательный_. Сумма платежа в тиынах | +| order_id | int | _Oбязательный_. Идентификатор объекта заказа | + +> Пример создания квитанций +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_create( + amount=10000, + order_id=1 +) + +pprint(resp) +``` + +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "result": { + "receipt": { + "_id": "63119becc4420cbf2712a24c", + "create_time": 1662098412270, + "pay_time": 0, + "cancel_time": 0, + "state": 0, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": "Номер чека", + "value": "2326", + "main": true + } + ], + "card": null, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": "Internet", + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb" + }, + "processing_id": null + } + } +} +``` + +### receipts_pay() +_Для оплаты существующего чека_ + +| Аргумент | Тип | Описание | +|------------|-------|------------------------------------------------------------------| +| invoice_id | str | _Oбязательный_. Идентификатор счета для идентификации транзакции | +| token | str | _Oбязательный_. Неактивный токен карты | +| phone | str | _Oбязательный_. Телефон плательщика | + +> Пример оплаты квитанций +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_pay( + invoice_id="631186b6c4420cbf2712a243", + token="63118a5dd15d8d8d093b37b7_X2j34OIJPnROfsgzYZCZ0w7OcC50zzwiowTsotEVO1uUbxkzaDrvdOno6jicQTrcRmxvibxrye4vUS3AynTNPaPCTGpfk3RCKmT9NaOAyyTmctAjWsjwvqGR5XUzAP1Xcx12GkhuQi6VJ4BeaIXOokSRu06rRjaivmJQ8HTiJiR9b3OmZtrhkIRNcNXnnp9zYm1mFP4BuqGpS8BMnY0ASIE6ffxWykjgBcDTAfWBFt4mg7O9Dsvx0aj3IB8z3RIbZYtDZJnUVhCZrwW7ONVI9uEAdxNthorjO6PbV7TQ8XCjrztgGf6uCtOwwxasiIUVZN6tCVDk8A8NvVSUzUHXQHVkaPn5heJNa3K4WsffIckq7SwMbiw3UbawipeZKyD3iwk1Km", + phone="998901304527" +) + +pprint(resp) +``` + +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": { + "receipt": { + "_id": "63119becc4420cbf2712a24c", + "create_time": 1662098438706, + "pay_time": 1662098438804, + "cancel_time": 0, + "state": 4, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": "Номер чека", + "value": "2326", + "main": true + } + ], + "card": { + "number": "860006******6311", + "expire": "9903" + }, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": "Internet", + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb" + }, + "processing_id": 0 + } + } +} +``` + +### receipts_send() +_Отправить квитанцию об оплате в SMS-сообщении_ + +| Аргумент | Тип | Описание | +|------------|-------|------------------------------------------------------------------| +| invoice_id | str | _Oбязательный_. Идентификатор счета для идентификации транзакции | +| phone | str | _Oбязательный_. Телефон плательщика | + +> Пример отправки квитанций +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_send( + invoice_id="631186b6c4420cbf2712a243", + phone="998901304527" +) + +pprint(resp) +``` + +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": { + "success": true + } +} +``` + + +### receipts_cancel() +_Оплаченный чек в очереди на аннулирование_ + +| Аргумент | Тип | Описание | +|------------|-------|------------------------------------------------------------------| +| invoice_id | str | _Oбязательный_. Идентификатор счета для идентификации транзакции | + +> Пример отмены чеков +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_cancel( + invoice_id="63119303c4420cbf2712a245" +) + +pprint(resp) +``` + +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": { + "receipt": { + "_id": "63119becc4420cbf2712a24c", + "create_time": 1662098438706, + "pay_time": 1662098438804, + "cancel_time": 0, + "state": 21, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": "Номер чека", + "value": "2326", + "main": true + } + ], + "card": { + "number": "860006******6311", + "expire": "9903" + }, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": "Internet", + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb", + "source_cancel": "subscribe" + }, + "processing_id": null + } + } +} +``` + + +### receipts_check() +_Проверьте наличие квитанции_ + +| Аргумент | Тип | Описание | +|------------|------|------------------------------------------------------------------| +| invoice_id | str | _Oбязательный_. Идентификатор счета для идентификации транзакции | + +> Пример проверки чеков +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_check( + invoice_id="63119303c4420cbf2712a245" +) + +pprint(resp) +``` + +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": { + "state": 0 + } +} +``` + + +### receipts_get() +_Проверить статус существующего чека_ + +| Аргумент | Тип | Описание | +|------------|------|------------------------------------------------------------------| +| invoice_id | str | _Oбязательный_. Идентификатор счета для идентификации транзакции | + +> Пример получения квитанций +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_get( + invoice_id="6311946bc4420cbf2712a247" +) + +pprint(resp) +``` + +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": { + "receipt": { + "_id": "6311946bc4420cbf2712a247", + "create_time": 1662096491076, + "pay_time": 0, + "cancel_time": 0, + "state": 0, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": "Номер чека", + "value": "2325", + "main": true + } + ], + "card": null, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": "Internet", + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb" + }, + "processing_id": null + } + } +} +``` + + +### receipts_get_all() +_Получите всю полную информацию по проверкам за определенный период_ + +| Аргумент | Тип | Описание | +|----------|------|-----------------------------------------------------------------| +| count | int | _Oбязательный_. Количество проверок. Максимальное значение - 50 | +| _from | int | _Oбязательный_. Дата начала | +| _to | int | _Oбязательный_. Дата окончания | +| offset | int | _Oбязательный_. Количество последующих пропущенных проверок | + +> Пример квитанций получить все +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_get_all( + count=2, + _from=1636398000000, + _to=1636398000000, + offset=0 +) + +pprint(resp) +``` + +> Пример ответа +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": [ + { + "_id": "6311946bc4420cbf2712a247", + "create_time": 1662096491076, + "pay_time": 0, + "cancel_time": 0, + "state": 0, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": { + "ru": "Номер чека", + "uz": "Chek raqami" + }, + "value": 2325, + "main": true + } + ], + "card": null, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": { + "ru": "Internet", + "uz": "Internet" + }, + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb" + }, + "processing_id": null + }, + { + "_id": "63119303c4420cbf2712a245", + "create_time": 1662096131667, + "pay_time": 0, + "cancel_time": 1662096182979, + "state": 50, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": { + "ru": "Номер чека", + "uz": "Chek raqami" + }, + "value": 2324, + "main": true + } + ], + "card": null, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": { + "ru": "Internet", + "uz": "Internet" + }, + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb", + "source_cancel": "subscribe" + }, + "processing_id": null + } + ] +} +``` diff --git a/docs/src/uz/payme-pkg/index.md b/docs/src/uz/payme-pkg/index.md index 7905467..68365bc 100644 --- a/docs/src/uz/payme-pkg/index.md +++ b/docs/src/uz/payme-pkg/index.md @@ -2,4 +2,8 @@ title: Kirish --- -# **Xush kelibsiz!** +# **Kirish** + +[payme-pkg](https://github.com/PayTechUz/payme-pkg/tree/master){:target="_blank"} kutubxonamizning yo'riqnomasiga xush kelibsiz! + +O'qishda davom eting. Dastlab [sozlash bosqichini](setup/) ko'ring. diff --git a/docs/src/uz/payme-pkg/initializing-payments.md b/docs/src/uz/payme-pkg/initializing-payments.md new file mode 100644 index 0000000..74ad0c4 --- /dev/null +++ b/docs/src/uz/payme-pkg/initializing-payments.md @@ -0,0 +1,49 @@ +--- +title: Tezkor to'lovlar +description: Tezkor to'lovlar +--- + +# [Generate pay link](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/generate_link.py){:target="_blank"} + +> Namuna +```python +from pprint import pprint + +from payme.methods.generate_link import GeneratePayLink + +pay_link = GeneratePayLink( + order_id="999", + amount=9999, + callback_url="callback-url" +).generate_link() + +pprint(pay_link) +``` +> Natija +```shell +https://checkout.paycom.uz/bT01ZTczMGU4ZTBiODUyYTQxN2FhNDljZWI7YWMub3JkZXItaWQ9OTk5O2E9OTk5OTtjPXlvdXItY2FsbGJhY2stdXJs +``` + +- Parameterlar + +| Argument | Turi | Izoh | +|--------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------| +| order_id | str | _Majburiy_. To'lanadigan buyurtmaning ID'si | +| amount | Decimal | _Majburiy_. Buyurtmaning miqdori | +| callback_url | str | _Ixtiyoriy_. Merchant API uchun to'lovdan keyingi yo'naltiriladigan link. Birlamchi holatda loyiha sozlamalaridan PAYME_CALL_BACK_URL ni oladi | + +### Metodlari +- generate_link() -> to'lov linkini generatsiya qilish uchun. +> **Hech qanday argument olmaydi** + +- to_tiyin() -> so'mdan tiyinga konvertatsiya qiladi. + +| Argument | Turi | Izoh | +|----------|---------|------------------------------| +| amount | Decimal | _Majburiy_. Buyurtma miqdori | + +- to_sum() -> tiyindan so'mga konvertatsiya qiladi. + +| Argument | Turi | Izoh | +|----------|---------|------------------------------| +| amount | Decimal | _Majburiy_. Buyurtma miqdori | diff --git a/docs/src/uz/payme-pkg/merchant-api.md b/docs/src/uz/payme-pkg/merchant-api.md index 8e5f324..8a73f1a 100644 --- a/docs/src/uz/payme-pkg/merchant-api.md +++ b/docs/src/uz/payme-pkg/merchant-api.md @@ -4,3 +4,39 @@ description: Merchant API metodlari --- # Merchant API metodlari + +### [CheckPerformTransaction](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/check_perform_transaction.py){:target="_blank"} +_Tranzaksiyalarni bajarishni tekshirish uchun ishlatiladi_ +> **Hech qanday metodlari yo'q** + + +### [CreateTransaction](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/create_transaction.py){:target="_blank"} +_Tranzaksiyalarni yaratish uchun ishlatiladi_ + + +#### Metodlari +- _convert_ms_to_datetime() -> time ms formatidan datetime formatiga konvertatsiya qiladi + +| Argument | Turi | Izoh | +|----------|------|-----------------------------------------------------------| +| time_ms | int | _Majburiy_. Konvertatsiya qilinishi kerak bo'lgan time ms | + + +### [PerformTransaction](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/perform_transaction.py){:target="_blank"} +_Tranzaksiyalarni amalga oshirish uchun ishlatiladi_ +> **Hech qanday metodlari yo'q** + + +### [CancelTransaction](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/cancel_transaction.py){:target="_blank"} +_Tranzaksiyalarni bekor qilish uchun ishlatiladi_ +> **Hech qanday metodlari yo'q** + + +### [CheckTransaction](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/check_transaction.py){:target="_blank"} +_Tranzaksiyalarni tekshirish uchun ishlatiladi_ +> **Hech qanday metodlari yo'q** + + +### [GetStatement](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/methods/get_statement.py){:target="_blank"} +_Tranzaksiya ma'lumotlari savdogar va Payme Business operatsiyalarini solishtirish uchun ishlatiladi_ +> **Hech qanday metodlari yo'q** diff --git a/docs/src/uz/payme-pkg/setup.md b/docs/src/uz/payme-pkg/setup.md index fb18afd..115a047 100644 --- a/docs/src/uz/payme-pkg/setup.md +++ b/docs/src/uz/payme-pkg/setup.md @@ -3,4 +3,74 @@ title: Sozlash (Setup) description: Sozlash (Setup) --- -# Sozlash (Setup) +# O'rnatish +Windows +```shell +pip install payme-pkg +``` + +Unix-ga asoslangan OS'larda (Linux, macOS, ...) +```shell +pip3 install payme-pkg +``` +
+ +# Sozlash (django) +1. Loyihangiz sozlamarining INSTALLED_APPS qismiga `'payme'` ni qo'shing +```python +INSTALLED_APPS = [ + ... + 'payme', + ... +] +``` + +2. `payme` hisob ma'lumotlarini qo'shing +```python +PAYME: dict = { + 'PAYME_ID': 'payme-id', + 'PAYME_KEY': 'payme-key', + 'PAYME_URL': 'payme-checkout-url', + 'PAYME_CALL_BACK_URL': 'your-callback-url', # merchant api callback url + 'PAYME_MIN_AMOUNT': 'payme-min-amount', # integer field + 'PAYME_ACCOUNT': 'order-id', +} + +ORDER_MODEL = 'your_app.models.Your_Order_Model' +``` + +3. Callbacklarni boshqarish uchun yangi view yarating +```python +from payme.views import MerchantAPIView + + +class PaymeCallBackAPIView(MerchantAPIView): + def create_transaction(self, order_id, action, *args, **kwargs) -> None: + print(f"create_transaction for order_id: {order_id}, response: {action}") + + def perform_transaction(self, order_id, action, *args, **kwargs) -> None: + print(f"perform_transaction for order_id: {order_id}, response: {action}") + + def cancel_transaction(self, order_id, action, *args, **kwargs) -> None: + print(f"cancel_transaction for order_id: {order_id}, response: {action}") +``` + +4. Loyihangizning asosiy urlpatternlari qatoriga `payme` ni qo'shing. +```python +from django.urls import path + +from your_app.views import PaymeCallBackAPIView + +urlpatterns = [ + ... + path("payments/merchant/", PaymeCallBackAPIView.as_view()), + ... +] +``` + +5. Migratsiya qiling +```shell +python manage.py makemigrations +``` + +> 🎉 Tabriklaymiz! Siz merchant api va django loyihangizni integratsiya qildingiz, yo'riqnomani o'qishda davom eting. Migratsiyalar muvaffaqiyatli amalga oshganidan so'ng, nima sodir bo'lganini ko'rish uchun admin panelni tekshiring. diff --git a/docs/src/uz/payme-pkg/subscribe-api.md b/docs/src/uz/payme-pkg/subscribe-api.md index cce1674..db044c4 100644 --- a/docs/src/uz/payme-pkg/subscribe-api.md +++ b/docs/src/uz/payme-pkg/subscribe-api.md @@ -4,3 +4,792 @@ description: Subscribe API metodlari --- # Subscribe API metodlari + + +## [PaymeSubscribeCards](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/cards/subscribe_cards.py){:target="_blank"} +_Subscribe cards ga bog'liq bo'lgan barcha paycom metodlarini o'z ichiga oladi_ + +### cards_create() +_Yangi kartaning tokenini yaratish uchun_ + +| Argument | Turi | Izoh | +|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| number | str | _Majburiy_. Kartaning raqami. Maksimum uzunligi 18 sondan iborat. | +| expire | str | _Majburiy_. Kartaning amal qilish muddati Maksimum uzunligi 5 belgidan iborat. | +| save | boolean | _Ixtiyoriy_. **Birlamchi holatda _true_ qiymatini oladi**. Token turi. Biznes logikaga qarab faol yoki nofaol holatda bo'lishi mumkin. Agar qiymat true bo'lsa, kartaning tokenidan yana qayta foydalanish mumkin bo'ladi. Agar false bo'lsa kartaning tokeni faqat bir marta ishlatiladi. Bu bir martalik token esa to'lovdan keyin o'chirib tashlanadi | + +> cards create metodi uchun namuna +```python +from pprint import pprint + +from payme.cards.subscribe_cards import PaymeSubscribeCards + +client = PaymeSubscribeCards( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id" +) + +response = client.cards_create( + number="8600069195406311", + expire="0399", + save=True +) + +pprint(response) +``` +> Natija +```json +{ + "jsonrpc": "2.0", + "result": { + "card": { + "number": "860006******6311", + "expire": "03/99", + "token": "63119784d15d8d8d093b37b8_ADHrAykwnAIc2hm4hPPriktZ8nnuvR96S9Kzmjb3Fcix25IrJmMKrGxP9VUEP9rRDKRhtYjUw0vsXON7PYEyMCHtDKpMuM4krrIk8jdnyK7bXkSBSCyiGs2aahIrep6TSodIAxqutMJ4g3O8FZ8vC1DSMKzOaX0UF8fDKNexXV039Qnj4bNQc6NcpKGJn0wUX8d0RBqkmKid4WyUQnT987ZQDM2mT2IGNZtugvN4tDJTXBVTpqCWkXnZ0YWj64Ye0ztr91Mibtndo0Y1s5nCA6wufUZZugJ6c7rse19XNFSSieFM7AWi9VqybMe4eeWiZEBriAbFhrf8kQvrpBmwUEp05GjvFMgH0ku3vyUtSuJI36exHheXuJK66KstcX1i69EaF3", + "recurrent": true, + "verify": false, + "type": "22618" + } + } +} +``` + +### card_get_verify_code() +_Tasdiqlash kodini olish uchun_ + +| Argument | Turi | Izoh | +|----------|------|-------------------------------------| +| token | str | _Majburiy_. Kartaning nofaol tokeni | + +> card get verify code metodi uchun namuna +```python +from pprint import pprint + +from payme.cards.subscribe_cards import PaymeSubscribeCards + + +client = PaymeSubscribeCards( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id" +) + +resp = client.card_get_verify_code( + token="630e5ffdd15d8d8d093b379b_2fsaoABWafecn20kofV4PFafFZjeGDWS9adM1PmboQaEZbbaxMcnaskctMbU9Iv8qgrOuKGz8SnjvZvYXDK64m1eS9gA5jZ7BBRaQybMXrDPtFPJ1fwek5B1KoIv5cMiCWYXj7ezpYEdJAKTIQw0Np9HsTXjqco4gQG3m8MOfeH9ovkdm66O6yj45oKXRmJyAK5i0SchXNNomACH3Oq80KyoRE1VoBRxvoKyMkOx0xcepXovxK9d3v26a8z7UtyokwY33N8MupviM3A5WHB5Xh35WZJJyFnxTSi1vvnYnG7uVd6Bb1GjV2yAHnimss8aEZGW5V7ZiPrhf8r6WJAeHciYDGK3msRKZJBQTfjgOdE9tGrEnMezVkxr1JXX0xSn5qqec2" +) + +pprint(resp) +``` + +> Natija +```json +{ + "jsonrpc": "2.0", + "result": { + "sent": true, + "phone": "99890*****66", + "wait": 60000 + } +} +``` + +### cards_verify() +_Telefonga SMS orqali jo'natilgan kodni tasdiqlash uchun_ + +| Argument | Turi | Izoh | +|-------------|-------|-------------------------------------| +| verify_code | str | _Majburiy_. Tasdiqlash kodi | +| token | str | _Majburiy_. Kartaning nofaol tokeni | + +> cards verify metodi uchun namuna +```python +from pprint import pprint + +from payme.cards.subscribe_cards import PaymeSubscribeCards + + +client = PaymeSubscribeCards( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id" +) + +resp = client.cards_verify( + verify_code="666666", + token="630e691fd15d8d8d093b379c_70mKyzqS8d1wTWzovIGjt9dKmjpn1KI8Y9XakPrfpbUASTBaZYbC1DjDcjYRmuNJep9gZrTRtHyEGBQYmBaPufuozF51bv4qEPsQnodq1VcD7tYyREwUXjMXXZUeu7Ek0REQCekCvVHX6rtNBpb4vtViJoNVjp94XpTqu0Bn3yYYb0CHu951wFydzRsieGxjGNrvx1oKyBcq0CdOUwoffRIt2VPvx5R2aVmc6ahwyhn387FEEcpO1PnjIJkWKTBWdI35ZPQnb1u1oss5aPg06E279THXRkoTThixbeqiD2JkWSXweNVGGDhTS30V4j61G3NWEPO2H3k4uFmCjjIQSzx4TxKzUgHg1i2q953PRUGjT4JZBRHMDxaN5tWuctEMNmY06p" +) + +pprint(resp) +``` + +> Natija +```json +{ + "jsonrpc": "2.0", + "result": { + "card": { + "number": "860006******6311", + "expire": "03/99", + "token": "63118a5dd15d8d8d093b37b7_X2j34OIJPnROfsgzYZCZ0w7OcC50zzwiowTsotEVO1uUbxkzaDrvdOno6jicQTrcRmxvibxrye4vUS3AynTNPaPCTGpfk3RCKmT9NaOAyyTmctAjWsjwvqGR5XUzAP1Xcx12GkhuQi6VJ4BeaIXOokSRu06rRjaivmJQ8HTiJiR9b3OmZtrhkIRNcNXnnp9zYm1mFP4BuqGpS8BMnY0ASIE6ffxWykjgBcDTAfWBFt4mg7O9Dsvx0aj3IB8z3RIbZYtDZJnUVhCZrwW7ONVI9uEAdxNthorjO6PbV7TQ8XCjrztgGf6uCtOwwxasiIUVZN6tCVDk8A8NvVSUzUHXQHVkaPn5heJNa3K4WsffIckq7SwMbiw3UbawipeZKyD3iwk1Km", + "recurrent": true, + "verify": true, + "type": "22618" + } + } +} +``` + +### cards_check() +_Karta tokeni faol yoki nofaolligini tekshirish uchun_ + +| Argument | Turi | Izoh | +|----------|------|-------------------------------------| +| token | str | _Majburiy_. Kartaning nofaol tokeni | + +> cards check metodi uchun namuna +```python +from pprint import pprint + +from payme.cards.subscribe_cards import PaymeSubscribeCards + + +client = PaymeSubscribeCards( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id" +) + +resp = client.cards_check( + token="630e691fd15d8d8d093b379c_70mKyzqS8d1wTWzovIGjt9dKmjpn1KI8Y9XakPrfpbUASTBaZYbC1DjDcjYRmuNJep9gZrTRtHyEGBQYmBaPufuozF51bv4qEPsQnodq1VcD7tYyREwUXjMXXZUeu7Ek0REQCekCvVHX6rtNBpb4vtViJoNVjp94XpTqu0Bn3yYYb0CHu951wFydzRsieGxjGNrvx1oKyBcq0CdOUwoffRIt2VPvx5R2aVmc6ahwyhn387FEEcpO1PnjIJkWKTBWdI35ZPQnb1u1oss5aPg06E279THXRkoTThixbeqiD2JkWSXweNVGGDhTS30V4j61G3NWEPO2H3k4uFmCjjIQSzx4TxKzUgHg1i2q953PRUGjT4JZBRHMDxaN5tWuctEMNmY06p" +) + +pprint(resp) +``` + +> Natija +```json +{ + "jsonrpc": "2.0", + "result": { + "card": { + "number": "860006******6311", + "expire": "03/99", + "token": "63119b36d15d8d8d093b37c1_IJtHxZ46h5viyo8RIJCmQyE8qBw6PUWUdFKTMCVWrPoMMi4kJYsKyVdjQrIx6a12jDfEPVhhEqWm94FYvYh7IEjIs4xn0n3mM8Quw5dhd6ZT0dOK6u1spqWRMIDBpDMhHj2Ga8zZMAfeoiDAcrWScXS1AP2tkQHcJ40rBzHGHS6DoVeIheF70c0wO1kVQG0G5hDWguSGf2ZRFcBtpabv5BQkqSchxWKdCSVPIGiS6X7eF8YStdz1aGPzFyjDbaKT0vXNUMbQ7gaKh4PeQbruVVwFDfeIWqGeNmgCCPU4X0wCHFjTt8K61e9VOauNeU81ckoKHD8XGzCwGFJHrC4sHvNv4no3RifWhHCQF9GmFKf8cP2qh4pqTKwu3gOITaX5Ss71tC", + "recurrent": true, + "verify": true, + "type": "22618" + } + } +} +``` + +### cards_remove() +_Karta tokenini o'chirish uchun_ + +| Argument | Turi | Izoh | +|----------|------|-------------------------------------| +| token | str | _Majburiy_. Kartaning nofaol tokeni | + +> cards remove metodi uchun namuna +```python +from pprint import pprint + +from payme.cards.subscribe_cards import PaymeSubscribeCards + + +client = PaymeSubscribeCards( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id" +) + +resp = client.cards_remove( + token="630e691fd15d8d8d093b379c_70mKyzqS8d1wTWzovIGjt9dKmjpn1KI8Y9XakPrfpbUASTBaZYbC1DjDcjYRmuNJep9gZrTRtHyEGBQYmBaPufuozF51bv4qEPsQnodq1VcD7tYyREwUXjMXXZUeu7Ek0REQCekCvVHX6rtNBpb4vtViJoNVjp94XpTqu0Bn3yYYb0CHu951wFydzRsieGxjGNrvx1oKyBcq0CdOUwoffRIt2VPvx5R2aVmc6ahwyhn387FEEcpO1PnjIJkWKTBWdI35ZPQnb1u1oss5aPg06E279THXRkoTThixbeqiD2JkWSXweNVGGDhTS30V4j61G3NWEPO2H3k4uFmCjjIQSzx4TxKzUgHg1i2q953PRUGjT4JZBRHMDxaN5tWuctEMNmY06p" +) + +pprint(resp) +``` + +> Natija +```json +{ + "jsonrpc": "2.0", + "result": { + "success": true + } +} +``` + + +## [PaymeSubscribeReceipts](https://github.com/PayTechUz/payme-pkg/blob/master/lib/payme/receipts/subscribe_receipts.py){:target="_blank"} +_Subscribe receipts ga bog'liq bo'lgan barcha paycom metodlarini o'z ichiga oladi_ + +### receipts_create() +_Yangi to'lov kvitansiyasini yaratish uchun_ + +| Argument | Turi | Izoh | +|----------|-------|---------------------------------------| +| amount | float | _Majburiy_. To'lov qiymati tiyinlarda | +| order_id | int | Majburiy_. Buyurtmaning ID'si | + +> receipts create metodi uchun namuna +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_create( + amount=10000, + order_id=1 +) + +pprint(resp) +``` + +> Natija +```json +{ + "jsonrpc": "2.0", + "result": { + "receipt": { + "_id": "63119becc4420cbf2712a24c", + "create_time": 1662098412270, + "pay_time": 0, + "cancel_time": 0, + "state": 0, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": "Номер чека", + "value": "2326", + "main": true + } + ], + "card": null, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": "Internet", + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb" + }, + "processing_id": null + } + } +} +``` + +### receipts_pay() +_Allaqachon mavjud kvitansiyaga to'lash uchun_ + +| Argument | Turi | Izoh | +|------------|------|--------------------------------------------------------------| +| invoice_id | str | _Majburiy_. Tranzaksiyani aniqlash uchun hisob-faktura ID'si | +| token | str | _Majburiy_. Kartaning faol tokeni | +| phone | str | _Majburiy_. To'lovchining telefon raqami | + +> receipts pay metodi uchun namuna +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_pay( + invoice_id="631186b6c4420cbf2712a243", + token="63118a5dd15d8d8d093b37b7_X2j34OIJPnROfsgzYZCZ0w7OcC50zzwiowTsotEVO1uUbxkzaDrvdOno6jicQTrcRmxvibxrye4vUS3AynTNPaPCTGpfk3RCKmT9NaOAyyTmctAjWsjwvqGR5XUzAP1Xcx12GkhuQi6VJ4BeaIXOokSRu06rRjaivmJQ8HTiJiR9b3OmZtrhkIRNcNXnnp9zYm1mFP4BuqGpS8BMnY0ASIE6ffxWykjgBcDTAfWBFt4mg7O9Dsvx0aj3IB8z3RIbZYtDZJnUVhCZrwW7ONVI9uEAdxNthorjO6PbV7TQ8XCjrztgGf6uCtOwwxasiIUVZN6tCVDk8A8NvVSUzUHXQHVkaPn5heJNa3K4WsffIckq7SwMbiw3UbawipeZKyD3iwk1Km", + phone="998901304527" +) + +pprint(resp) +``` + +> Natija +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": { + "receipt": { + "_id": "63119becc4420cbf2712a24c", + "create_time": 1662098438706, + "pay_time": 1662098438804, + "cancel_time": 0, + "state": 4, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": "Номер чека", + "value": "2326", + "main": true + } + ], + "card": { + "number": "860006******6311", + "expire": "9903" + }, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": "Internet", + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb" + }, + "processing_id": 0 + } + } +} +``` + +### receipts_send() +_SMS orqali to'lov kvitansiyasini yuborish uchun_ + +| Argument | Turi | Izoh | +|------------|------|--------------------------------------------------------------| +| invoice_id | str | _Majburiy_. Tranzaksiyani aniqlash uchun hisob-faktura ID'si | +| phone | str | _Majburiy_. To'lovchining telefon raqami | + +> receipts send metodi uchun namuna +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_send( + invoice_id="631186b6c4420cbf2712a243", + phone="998901304527" +) + +pprint(resp) +``` + +> Natija +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": { + "success": true + } +} +``` + + +### receipts_cancel() +_To'langan tranzaksiyani bekor qilish uchun_ + +| Argument | Turi | Izoh | +|------------|------|--------------------------------------------------------------| +| invoice_id | str | _Majburiy_. Tranzaksiyani aniqlash uchun hisob-faktura ID'si | + +> receipts cancel metodi uchun namuna +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_cancel( + invoice_id="63119303c4420cbf2712a245" +) + +pprint(resp) +``` + +> Natija +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": { + "receipt": { + "_id": "63119becc4420cbf2712a24c", + "create_time": 1662098438706, + "pay_time": 1662098438804, + "cancel_time": 0, + "state": 21, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": "Номер чека", + "value": "2326", + "main": true + } + ], + "card": { + "number": "860006******6311", + "expire": "9903" + }, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": "Internet", + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb", + "source_cancel": "subscribe" + }, + "processing_id": null + } + } +} +``` + + +### receipts_check() +_Mavjud tranzaksiyani tekshirish uchun_ + +| Argument | Turi | Izoh | +|------------|------|--------------------------------------------------------------| +| invoice_id | str | _Majburiy_. Tranzaksiyani aniqlash uchun hisob-faktura ID'si | + +> receipts check metodi uchun namuna +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_check( + invoice_id="63119303c4420cbf2712a245" +) + +pprint(resp) +``` + +> Natija +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": { + "state": 0 + } +} +``` + + +### receipts_get() +_Mavjud tranzaksiyani holatini tekshirish uchun_ + +| Argument | Turi | Izoh | +|------------|------|--------------------------------------------------------------| +| invoice_id | str | _Majburiy_. Tranzaksiyani aniqlash uchun hisob-faktura ID'si | + +> receipts get metodi uchun namuna +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_get( + invoice_id="6311946bc4420cbf2712a247" +) + +pprint(resp) +``` + +> Natija +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": { + "receipt": { + "_id": "6311946bc4420cbf2712a247", + "create_time": 1662096491076, + "pay_time": 0, + "cancel_time": 0, + "state": 0, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": "Номер чека", + "value": "2325", + "main": true + } + ], + "card": null, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": "Internet", + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb" + }, + "processing_id": null + } + } +} +``` + + +### receipts_get_all() +_Muayyan davr uchun cheklar bo'yicha barcha to'liq ma'lumotlarni olish uchun_ + +| Argument | Turi | Izoh | +|----------|------|-----------------------------------------------------------| +| count | int | _Majburiy_. Tranzaksiyalar soni. Maksimum qiymat - 50 | +| _from | int | _Majburiy_. Boshlanish sanasi | +| _to | int | _Majburiy_. Tugash sanasi | +| offset | int | _Majburiy_. Keyingi tranzaksiyalar soni | + +> receipts get all metodi uchun namuna +```python +from pprint import pprint + +from payme.receipts.subscribe_receipts import PaymeSubscribeReceipts + + +rclient = PaymeSubscribeReceipts( + base_url="https://checkout.test.paycom.uz/api/", + paycom_id="paycom-id", + paycom_key="paycom-key" +) + +resp = rclient.receipts_get_all( + count=2, + _from=1636398000000, + _to=1636398000000, + offset=0 +) + +pprint(resp) +``` + +> Natija +```json +{ + "jsonrpc": "2.0", + "id": 123, + "result": [ + { + "_id": "6311946bc4420cbf2712a247", + "create_time": 1662096491076, + "pay_time": 0, + "cancel_time": 0, + "state": 0, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": { + "ru": "Номер чека", + "uz": "Chek raqami" + }, + "value": 2325, + "main": true + } + ], + "card": null, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": { + "ru": "Internet", + "uz": "Internet" + }, + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb" + }, + "processing_id": null + }, + { + "_id": "63119303c4420cbf2712a245", + "create_time": 1662096131667, + "pay_time": 0, + "cancel_time": 1662096182979, + "state": 50, + "type": 2, + "external": false, + "operation": -1, + "category": null, + "error": null, + "description": "", + "detail": null, + "amount": 400000, + "currency": 860, + "commission": 0, + "account": [ + { + "name": "transaction", + "title": { + "ru": "Номер чека", + "uz": "Chek raqami" + }, + "value": 2324, + "main": true + } + ], + "card": null, + "merchant": { + "_id": "5e730e8e0b852a417aa49ceb", + "name": "test", + "organization": "ЧП «test test»", + "address": "", + "business_id": "5e730e740b852a417aa49cea", + "epos": { + "merchantId": "106600000050000", + "terminalId": "20660000" + }, + "date": 1584598670296, + "logo": null, + "type": { + "ru": "Internet", + "uz": "Internet" + }, + "terms": null + }, + "meta": { + "source": "subscribe", + "owner": "5e730e8e0b852a417aa49ceb", + "source_cancel": "subscribe" + }, + "processing_id": null + } + ] +} +```