# Callback ⚠️(Deprecated)

განსხვავებით სხვა მეთოდებისგან, როდესაც გამოძახების ინიციატორი იყო ონლაინ მაღაზია, callback მეთოდის გამოძახება ონლაინ გადახდების სისტემიდან ხდება, ხოლო ინფორმაციის მიღება და დამუშავების ლოგიკა ონლაინ მაღაზიის მხარეს უნდა იყოს რეალიზებული. ეს მეთოდი საშუალებას გაძლევთ, რეალურ დროში მიიღოთ ინფორმაცია გადახდის სტატუსის ცვლილების შესახებ.
თითოეული ონლაინ მაღაზიისთვის callback მისამართების გაწერა ხდება მისი ბანკში მერჩანტად დარეგისტრირების დროს [(იხილეთ შესავალი)](./introduction.md).  გადახდების სისტემაში ხდება ორი ტიპის callback url-ის გაწერა:

- [გადახდის სტატუსის ცვლილების](#payment-status-change-callback)
- [თანხის დაბრუნების](#payment-amount-return-callback)

შემდგომში, უკვე გადახდის სტატუსის ყოველი ცვლილების დროს, წინასწარ გაწერილ callback მისამართზე იგზავნება POST მეთოდით გადახდის დეტალები. პასუხის წარმატებით მიღების დასადასტურებლად, მერჩანტმა უნდა დააბრუნოს `HTTP CODE 200`.
ინფორმაციის წარუმატებლად გაგზავნის შემთხვევაში, ყოველ 15 წამში, იგზავნება განმეორებითი მოთხოვნა, სანამ მცდელობის რაოდენობა არ მიაღწევს 5-ს ან მერჩანტი არ დააბრუნებს `HTTP CODE 200` სტატუსს. თუ ვერ მოხერხდა callback-ის წარმატებით გამოძახება, გადახდის სტატუსი მაინც წარმატებულია. სტატუსის გადასამოწმებლად მერჩანტმა უნდა გამოიყენოს [გადახდის დეტალების მეთოდი](get-payment-details.md).

:::note
შენიშვნა: callback-ს არაფერი აქვს საერთო მერჩანტის გადახდების ონლაინ სისტემიდან მის ონლაინ მაღაზიის ვებგვერდზე გადამისამართებასთან. გადამისამართება ხდება შეკვეთის მოთხოვნის request-ში, მერჩანტის მიერ გადაცემული redirect_url პარამეტრში მითითებული მნიშვნელობის მიხედვით.
:::

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

- `status` — string, required

  გადახდის სტატუსი. იღებს შემდეგ მნიშვნელობებს:
  - `success` - გადახდის პროცესი დასრულდა წარმატებით.
  - `error ` - გადახდის პროცესი დასრულდა წარუმატებლად.
  - `in_progress` - გადახდის პროცესი არაა დასრულებული. თუ ორდერის გენერაციიდან 1 საათში მომხმარებელი არ დაასრულებს ტრანზაქციას, ის ავტომატურად გაუქმდება და გადავა error სტატუსზე. ეს სტატუსი ენიჭება გადახდას, როდესაც მომხმარებელი გადამისამართდება ბანკის ონლაინ გადახდის ვებგვერდზე, ხოლო ცვლილება ხდება გადახდის პროცესის წარმატებით ან წარუმატებლად დასრულების შემდეგ.

- `payment_hash` — string, required

  შეკვეთის მოთხოვნის დროს, გადახდების ონლაინ სისტემის მიერ დაგენერირებული გადახდის უნიკალური ჰეშირებული იდენტიფიკატორი.

- `ipay_payment_id` — string, required

  გადახდის იდენტიფიკატორი ipay სისტემაში (ჩანს ასევე გადახდის ქვითარზე).

- `status_description` — string, required

  დამატებითი ინფორმაცია სტატუსის შესახებ. მაგალითად, თუ status=error, აქ ეწერება შეცდომის აღწერა.

- `shop_order_id` — string, required

  მერჩანტის გადახდის იდენტიფიკატორი.

- `payment_method` — string, required

  გადახდის მეთოდი. შეიძლება მიიღოს შემდეგი მნიშვნელობები:
  -	`BOG_CARD` გადახდა შესრულებულია ავტორიზაციით.
  -	`GC_CARD` გადახდა შესრულებულია ბარათით.
  -	`BOG_LOAN` განვადებით ყიდვა.
  -	`BOG_LOYALTY` გადახდა შესრულებულია `PLUS` ან `MR` ქულებით.
  -	`UNKNOWN` ბრუნდება იმ შემთხვევაში თუ ორდერის სტატუსი არის error ან `in_progress`.

- `card_type` — string, required

  თუ გადახდის ტიპი არის BOG_CARD ან GC_CARD, იწერება ბარათის ტიპი. დანარჩენ სხვა შემთხვევაში იწერება `UNKNOWN`. ბარათის ტიპი შეიძლება იყოს ქვემოთ მოცემულიდან ერთ-ერთი:
  -	`MC` - Mastercard
  -	`VISA` - Visa
  -	`AMEX` - American Express

- `pan` — string, required

  ბარათის 16-ნიშნა ნომერი. ჩანს მხოლოდ პირველი 6 და ბოლო 4 ციფრი. დანარჩენი ციფრების ნაცვლად მითითებულია „*“. შევსებულია მხოლოდ მაშინ, თუ გადახდის სტატუსი არის `success` და `payment_method` არის GC_CARD.

- `transaction_id` — string, required

  Georgian Card-ში ტრანზაქციის იდენტიფიკატორი. შევსებულია მხოლოდ მაშინ, თუ გადახდის სტატუსი არის `success` და `payment_method` არის `GC_CARD`.

- `pre_auth_status` — string, required

  პრეავტორიზაციის სტატუსი. ბრუნდება მხოლოდ მაშინ, თუ ორდერის გენერაციის დროს, `capture_method` არის `MANUAL` და ორდერის სტატუსი არის `success`.

- `capture_method ` — string, required

  -	`success` - პრეავტორიზაცია დამოწმებულია და თანხა გადარიცხულია მერჩანტთან.
  -	`in_progress` - მიმდინარეობს პრეავტორიზაცია.  თანხა დაბლოკილია და შესაძლებელია დამოწმება და განბლოკვა.
  -	`success_unblocked` - პრეავტორიზაცია განბლოკილია. თანხა დაბრუნებულია მომხმარებლის ანგარიშზე და ჩანს ხელმისაწვდომ თანხებში.

### გადახდის სტატუსის ცვლილების callback

**BOG**

```properties
  Content-Type: application/x-www-form-urlencoded
  Request Method: POST
```
```properties
  status: success | error
  order_id: string
  payment_hash: string
  ipay_payment_id: string
  status_description: string
  shop_order_id: string
  payment_method: GC_CARD | BOG_CARD | BOG_LOYALTY | BOG_LOAN | UNKNOWN
  card_type: MC | VISA | AMEX | UNKNOWN
```

**GC**

```properties
  Content-Type: application/x-www-form-urlencoded
  Request Method: POST
```
```properties
  status: success | error
  order_id: string
  payment_hash: string
  ipay_payment_id: string
  status_description: string
  shop_order_id: string
  payment_method: GC_CARD | BOG_CARD | BOG_LOYALTY | BOG_LOAN | UNKNOWN
  card_type: MC | VISA | AMEX | UNKNOWN
  pan: XXXX********XXXX
  transaction_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  ```

**Pre-auth payment**

```properties
  Content-Type: application/x-www-form-urlencoded
  Request Method: POST
```
```properties
  status: success | error
  order_id: string
  pre_auth_status: success | in_progress | success_unblocked
  payment_hash: string
  ipay_payment_id: string
  status_description: string
  shop_order_id: string
  payment_method: GC_CARD | BOG_CARD | BOG_LOYALTY | BOG_LOAN | UNKNOWN
  card_type: MC | VISA | AMEX | UNKNOWN
  pan: XXXX********XXXX
  transaction_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```

### Payment Amount Return callback

**json**

```properties
  order_id: string
  payment_hash: string
  ipay_payment_id: string
  status_description: string
  shop_order_id: string
  payment_method: GC_CARD | BOG_CARD | BOG_LOYALTY
  card_type: MC | VISA | AMEX
```
