Callback
Callback-ი არის ასინქრონული, server-to-server შეტყობინება, რომელიც ონლაინ გადახდების სისტემიდან თქვენს მიერ მითითებულ Callback URL მისამართზე იგზავნება. მისი მიზანია, საიმედოდ გაცნობოთ ტრანზაქციის საბოლოო სტატუსის შესახებ.
სინქრონული API მოთხოვნებისგან განსხვავებით, სადაც ბიზნესის აპლიკაცია ითხოვს ინფორმაციას და ელოდება მყისიერ პასუხს, Callback-ის პროცესი ფონურ რეჟიმში მიმდინარეობს. ონლაინ გადახდების სისტემა ავტომატურად გამოაგზავნის POST მოთხოვნას ბიზნესის Callback URL-ზე, როდესაც გადახდა ან მასთან დაკავშირებული მოქმედება დასრულდება (წარმატებით ან წარუმატებლად), როგორიცაა თანხის ნაწილობრივი ან სრული დაბრუნება, პრეავტორიზაციის დადასტურება, თანხის გაყოფა.
Callback-ის მიღებისა და დამუშავების ლოგიკა, მათ შორის მისი ხელმოწერის ვალიდაცია, ბიზნესის მხარეს უნდა იყოს იმპლემენტირებული. Callback-ის სათანადოდ დამუშავება კრიტიკულად მნიშვნელოვანი ნაბიჯია გადახდის სტატუსის დასადასტურებლად და ბიზნესის სისტემაში შეკვეთის უსაფრთხოდ განახლებისთვის.
შეკვეთის მოთხოვნის დროს გადმოცემულ callback_url მისამართზე იგზავნება POST მეთოდით გადახდის დეტალები. პასუხის წარმატებით მიღების დასადასტურებლად, ბიზნესმა უნდა დააბრუნოს HTTP CODE 200. თუ ბიზნესმა წარმატებით ვერ მიიღო Callback, გადახდის სტატუსის გადასამოწმებლად და თავის სისტემაში შეკვეთის სტატუსის სწორად ასახვისთვის, უნდა გამოიყენოს გადახდის დეტალების მიღების მეთოდი.
Redirect URL - გადახდის დასრულების შემდეგ მომხმარებელს გადაამისამართებს ონლაინ გადახდის გვერდიდან ბიზნესის ვებგვერდზე, რაც აუმჯობესებს მომხმარებლის გამოცდილებას. თუმცა, ეს არ წარმოადგენს გადახდის საბოლოო სტატუსის გარანტიას, რადგან გადამისამართება შესაძლოა ვერ განხორციელდეს მომხმარებლის ქმედებების ან სხვა გარემოებების გამო. ამიტომ გადახდის დასრულების დადასტურება აუცილებელია server-to-server Callback-ის გამოყენებით.
Callbacks - უზრუნველყოფს გადახდის სტატუსის დადასტურებას და გადახდის შესახებ ინფორმაციის უსაფრთხო მიწოდებას ონლაინ გადახდის სისტემის სერვერიდან ბიზნესის სერვერზე. Redirect URL-ისგან განსხვავებით, callback-ის მიღება არ არის დამოკიდებული მომხმარებლის ქმედებებზე და წარმოადგენს გადახდის სტატუსის შესახებ ინფორმაციის მიღების სანდო წყარო.
Request
Header-ის პარამეტრები
Callback-Signaturestring
ხელმოწერა დაგენერირებულია callback-ის request body-ზე private key-ით SHA256withRSA ალგორითმის გამოყენებით. იმისათვის, რომ ბიზნესი დარწმუნდეს callback-ში გადმოცემული ინფორმაციის ვალიდურობაში, request body-ისა და public key-ის დახმარებით უნდა დაავერიფიციროს ხელმოწერა. ვერიფიკაცია უნდა მოხდეს payload-ის დესერიალიზაციამდე, იმისათვის რომ request body-ის პარამეტრების თანმიმდევრობა დარჩეს უცვლელი.
- PUBLIC KEY
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu4RUyAw3+CdkS3ZNILQh
zHI9Hemo+vKB9U2BSabppkKjzjjkf+0Sm76hSMiu/HFtYhqWOESryoCDJoqffY0Q
1VNt25aTxbj068QNUtnxQ7KQVLA+pG0smf+EBWlS1vBEAFbIas9d8c9b9sSEkTrr
TYQ90WIM8bGB6S/KLVoT1a7SnzabjoLc5Qf/SLDG5fu8dH8zckyeYKdRKSBJKvhx
tcBuHV4f7qsynQT+f2UYbESX/TLHwT5qFWZDHZ0YUOUIvb8n7JujVSGZO9/+ll/g
4ZIWhC1MlJgPObDwRkRd8NFOopgxMcMsDIZIoLbWKhHVq67hdbwpAq9K9WMmEhPn
PwIDAQAB
-----END PUBLIC KEY-----
Body-ს პარამეტრები
eventstring
ქოლბექის ტიპი. მნიშვნელობა ყოველთვის არის order_payment.
zoned_request_timestring
bodyobject
შეკვეთის მონაცემები. მოიცავს იმავე ველებს, რასაც შეიცავს გადახდის დეტალები.
- REQUEST BODY
{
"event": "order_payment",
"zoned_request_time": "2022-11-23T18:06:37.240559Z",
"body": {
"order_id": "a767a276-cddd-43ec-9db3-9f9b39eee02d",
"industry": "ecommerce",
...
}
}