# Heleket Python SDK

Python SDK module for working with the Heleket API

## Installation and connection

Installation using [pip](https://pip.pypa.io/en/stable/installation/):

```bash
$ pip install heleket
```

## Documentation

**Methods for working with api**: https://doc.heleket.com/ <br>

## Authorization

`PAYOUT_KEY` or `PAYMENT_KEY`, also `MERCHANT_UUID` required to use SDK details in [documentation](https://doc.heleket.com/general/request).

```python
from heleket import Client

PAYMENT_KEY = 'uQ4LFWCBE3dT84uQnt7ycL7p9Wc...gMPI8lzKl7Ct2I43R6SSC3gVDS3rkGX'
MERCHANT_UUID = 'c26b80a8-9549-4b66-bb53-774f12809249'

payment = Client.payment(PAYMENT_KEY, MERCHANT_UUID)

```

```python
from heleket import Client

PAYMENT_KEY = 'uQ4LFWCBE3dT84uQnt7ycL7p9Wc...gMPI8lzKl7Ct2I43R6SSC3gVDS3rkGX'
MERCHANT_UUID = 'c26b80a8-9549-4b66-bb53-774f12809249'

payout = Client.payout(PAYMENT_KEY, MERCHANT_UUID)
```

## Payout methods

### Payout request

```python
data = {
    'amount': '15',
    'currency': 'USD',
    'network': 'TRON',
    'order_id': '555321',
    'address': 'TXguLRFtrAFrEDA17WuPfrxB84jVzJcNNV',
    'is_subtract': '1',
    'url_callback': 'https://example.com/callback'
}

result = payout.create(data)
```

Output:

```python
 {
    "uuid": "a7c0caec-a594-4aaa-b1c4-77d511857594",
    "amount": "15",
    "currency": "TRX",
    "network": "tron",
    "address": "TJ...",
    "txid": None,
    "status": "process",
    "is_final": False,
    "balance": 129
}
```

### Info

```python
data = {
    "uuid": "a7c0caec-a594-4aaa-b1c4-77d511857594",
    "order_id": "12345"
}

result = payout.info(data)
```

Output:

```python
{
  "uuid": "a7c0caec-a594-4aaa-b1c4-77d511857594",
  "amount": "3.00000000",
  "currency": "TRX",
  "network": "tron",
  "address": "TJZ...",
  "txid": None,
  "status": "process",
  "is_final": False,
  "balance": "129.00000000"
}
```

## Payment methods

### Payment services

```python
result = payment.services()
```

Output:

```python
{
  {                                #[0]
    "network": "TRON",
    "currency": "TRX",
    "is_available": True,
    "limit": {
      "min_amount": "1.00000000",
      "max_amount": "10.00000000"
    },
    "commission": {
      "fee_amount": "0.00",
      "percent": "0.00"
    }
  },
  { ... },                       #[1]
  { ... }                        #[2] and so on
}
```

### Payment create

```python
data = {
    'amount': '16',
    'currency': 'USD',
    'network': 'ETH',
    'order_id': '555123',
    'url_return': 'https://example.com/return',
    'url_callback': 'https://example.com/callback',
    'is_payment_multiple': False,
    'lifetime': '7200',
    'to_currency': 'ETH'
};

result = payment.create(data)
```

Output:

```python
{
  "uuid": "8b03432e-385b-4670-8d06-064591096795",
  "amount": "16",
  "order_id": "test_19",
  "currency": "TRX",
  "comments": None,
  "network": "tron",
  "address": "TW...",
  "from": None,
  "txid": None,
  "payment_status": "check",
  "url":  "https://pay.heleket.com/pay/8b03432e-385b-4670-8d06-064591096795",
  "expired_at": 1650980953,
  "status": "check",
  "is_final": False
}
```

### Info

```python
data = {
    "uuid": "a7c0caec-a594-4aaa-b1c4-77d511857594",
    "order_id": "12345"
}

result = payment.info(data)
```

Output:

```python
{
  "uuid": "8b03432e-385b-4670-8d06-064591096795",
  "order_id": "test_10",
  "amount": "16.00000000",
  "payment_amount": "0.000000",
  "currency": "TRX",
  "comments": None,
  "network": "tron",
  "address": "TW...",
  "from": None,
  "txid": None,
  "payment_status": "check",
  "url": "https://pay.heleket.com/pay/8b03432e-385b-4670-8d06-064591096795",
  "expired_at": 1650980953,
  "status": "paid",
  "is_final": True
}
```

### Payment History

```python
page = 3
result = payment.history(page)
```

Output:

```python
{
  "items": [
    {     #    [0]
      "uuid": "87094a43-5fe4-4629-b2fd-c37e8e2af76c",
      "order_id": "1650956609",
      "amount": "16.00000000",
      "payment_amount": "0.01200000",
      "currency": "ETH",
      "comments": None,
      "network": "eth",
      'address': '0xa30b82321a83922b792eef731d84b5d655449225', 
      'from': None, 
      'txid': None, 
      'payment_status': 'cancel', 
      'url': 'https://pay.heleket.com/pay/3347cd9e-4b63-4605-b269-c45b51d03f8d', 
      'expired_at': 1663952410, 
      'status': 'cancel', 
      'is_final': True},
    { ... }, # [1]
    { ... }, # [2] and so on ...
    ], 
  'paginate': {
      'count': 3, 
      'hasPages': False, 
      'nextCursor': None, 
      'previousCursor': None, 
      'perPage': 15}
}
```

### Balance

```python
result = payment.balance()
```

Output:

```python
[
    {
        "balance": {
            "merchant": [
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "24.00000000",
                    "currency_code": "TRX",
                    "balance_usd": "24.00",
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "MATIC",
                    "balance_usd": "0.00",
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "LTC",
                    "balance_usd": "0.00",
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "BUSD",
                    "balance_usd": "0.00",
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "1.00000000",
                    "currency_code": "BTC",
                    "balance_usd": "19328.00",
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "USDT",
                    "balance_usd": "0.00",
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "ETH",
                    "balance_usd": "0.00",
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "DASH",
                    "balance_usd": "0.00",
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "BNB",
                    "balance_usd": "0.00",
                },
            ],
            "user": [
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "BTC",
                    "balance_usd": None,
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "USDT",
                    "balance_usd": None,
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "LTC",
                    "balance_usd": None,
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "TRX",
                    "balance_usd": None,
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "ETH",
                    "balance_usd": None,
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "DASH",
                    "balance_usd": None,
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "MATIC",
                    "balance_usd": None,
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "BNB",
                    "balance_usd": None,
                },
                {
                    "uuid": "abcdabcd-abcd-1234-1234-abcdabcd",
                    "balance": "0.00000000",
                    "currency_code": "BUSD",
                    "balance_usd": None,
                },
            ],
        }
    }
]


```

### Resend notifications 

```python
data = {
    "uuid": "a7c0caec-a594-4aaa-b1c4-77d511857594",
    "order_id": "12345"
}

result = payment.resend_notification(data)
```

Output:

```python
bool(True)
```

### Wallet create

```python
data = {
    'network': 'TRON',
    'currency': 'USDT',
    'order_id': '5535321',
    'url_callback': 'https://example.com/callback'
}

result = payment.create_wallet(data)
```

Output:

```python
{
  "uuid": "9f64a7ce-...",
  "order_id": "24",
  "currency": "USDT",
  "network": "tron",
  "address": "TK8..."
}
```

### Exceptions

All methods can throw RequestBuilderException.

## Requirements

* **Python 3** or higher
* extension  **requests**