# Callback ⚠️(Deprecated)

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

- [განვადების სტატუსის შეცვლისას](#განვადების-სტატუსის-callback)
- [განვადების გაუქმების](#განვადების-გაუქმების-callback)

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

:::note
თუ უკვე იყენებთ [ონლაინ გადახდებს](https://api.bog.ge/docs/docs/ipay/introduction), ონლაინ განვადების ქოლბექ მისამართები იქნება იგივე რაც ონლაინ გადახდების შემთხვევაში, მაგრამ პარამეტრები იქნება განსხვავებული.
:::

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

- `status` — string

  განვადების სტატუსი. იღებს შემდეგ მნიშვნელობებს:

   -  success - განვადების პროცესი დასრულდა წარმატებით.
   -	error - განვადების პროცესი დასრულდა წარუმატებლად.

- `order_id` — string

  შეკვეთის იდენტიფიკატორი, რომელიც ონლაინ მაღაზიას უბრუნდება შეკვეთის მოთხოვნის Response-ში.

- `shop_order_id` — string

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

- `payment_method` — string

  გადახდის მეთოდი. განვადების შემთხვევაში ყოველთვის ბრუნდება `BOG_LOAN`

**request**

```api
POST / ბანკში მერჩანტად რეგისტრაციისას მითითებული მისამართი
Content-Type: application/x-www-form-urlencoded
```

```json
{
  "status": "success" | "error",
  "order_id": "{order_id}",
  "shop_order_id": "{shop_order_id}",
  "payment_method": "BOG_LOAN"
}
```

### Response

- `Http_Status` — string

  მეთოდის გამოძახება ითვლება წარმატებულად, თუ მერჩანტის სერვერიდან დაბრუნდა 200 HTTP სტატუსი.

**response**

```json
{
  "Http_Status":"200 OK"
}
```

### განვადების სტატუსის callback

**RESPONSE**

```properties
  Content-Type: application/x-www-form-urlencoded
  Request Method: POST
```
```properties
  status: success | error
  order_id: string
  shop_order_id: string
  payment_method: BOG_LOAN | UNKNOWN
```

### განვადების გაუქმების callback

**RESPONSE**

```properties
  Content-Type: application/x-www-form-urlencoded
  Request Method: POST
```
```properties
  status: reverse_success
  order_id: string
  shop_order_id: string
  payment_method: BOG_LOAN
```
