## რა დამჭირდება გადახდის API-ს გამოსაყენებლად
ონლაინ გადახდების API-ს გამოსაყენებლად საჭიროა აუტენტიფიკაცია [HTTP Basic Auth](https://en.wikipedia.org/wiki/Basic_access_authentication)-ის გამოყენებით. ამისთვის თქვენ დაგჭირდებათ, იცოდეთ სისტემაში შესასვლელი რეკვიზიტები (Credentials), რომელიც თითოეული ბიზნესისთვის უნიკალურია. რეკვიზიტები მოიცავს ორ პარამეტრს: client_id და client_secret, რომელიც გამოიყენება, როგორც  username-ი და password-ი, ბიზნესის აუტენტიფიკაციისას.

## როგორ გავიგოთ ბიზნესის სისტემაში შესასვლელი რეკვიზიტები
მას შემდეგ, რაც კომპანია დარეგისტრირდება ბიზნესად საბანკო სისტემაში და შეავსებს ყველა საჭირო მონაცემს, მას მიენიჭება და გადაეცემა სისტემაში შესასვლელი რეკვიზიტები client_id და client_secret. რეკვიზიტები ბიზნესის უნიკალური მაიდენტიფიცირებელია. ამასთან, client_secret პაროლის მნიშვნელობის პარამეტრია - მისი სხვა პირისთვის გადაცემა, გასაჯაროება, დაუშვებელია. ამან შეიძლება ბიზნესისთვის საფრთხის ალბათობა მნიშვნელოვნად გაზარდოს! client_secret-ის ცვლილება ბიზნესის მიერ შეუძლებელია.

## მეთოდის აღწერა
მოცემული მეთოდის საშუალებით, ბიზნესი გადის აუტენტიფიკაციის პროცესს. გამოძახების შედეგად, ონლაინ გადახდების სერვერის მიერ ბრუნდება Bearer Token, რომელიც ყველა შემდგომი მეთოდის  გამოძახებისთვის არის აუტენტიფიკაციისთვის აუცილებელი პარამეტრი.

### Header-ის პარამეტრები

- `Content-Type` — application/x-www-form-urlencoded, required

- `Authorization` — Basic <base64>, required

  გადაეცემა „Basic „ + „<client_id>:<secret_key>“  მნიშვნელობა კოდირებული Base64 ფორმატში
  (მაგ: „Basic ODI4Mjo3Njk3MDY0OTlmMDcwOWUyMzQ4NDU4NjNmOThiMjMxNA==“),
  სადაც <client_id> და <secret_key> არის ბანკის მიერ ბიზნესისთვის გადაცემული, სისტემაში შესვლისთვის საჭირო, რეკვიზიტები.

### Body-ს პარამეტრები

- `grant_type` — client_credentials, required

  მნიშვნელობად გადაეცემა ფიქსირებული ტექსტი: `client_credentials`

**CURL**

```bash
curl -X POST 'https://oauth2.bog.ge/auth/realms/bog/protocol/openid-connect/token' \
-u {client_id}:{client_secret} \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials'
```

### Response

- `access_token` — string

  ავტორიზაციის სერვერის მიერ დაბრუნებული Token-ის მნიშვნელობა

- `token_type` — string

  Token-ის ტიპი (ბრუნდება ტექსტური მნიშვნელობა - `Bearer`)

- `expires_in` — number

  აბრუნებს რიცხვით მნიშვნელობას, თუ რამდენი წამის განმავლობაში არის აქტიური Token.

**RESPONSE**

```json
{
  "access_token": "<JWT>",
  "token_type": "Bearer",
  "expires_in": 1634719923245
}
```
