Callback
Sandbox-ში Callback გამოძახებები სიმულირებულია. ყოველთვის განახორციელეთ Callback-ების უსაფრთხოდ დამუშავება და გადაამოწმეთ ხელმოწერის ვალიდაციის ლოგიკა, თუნდაც Sandbox გარემოში ტესტირების დროს.
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-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqczfAuhtxw2iF68kS0Hy
bGSv0ZlDAjsXh6VC8avDl3Vxa9qCn6Pzl37Tl2Z21WodiISLeXdhCtOMTeLNUBeb
CYD31y2/MwnhLYqlCk2bOh29fyPc1iT5Eu/k/1IaNRrK9/UVZaTkhOMeEm+aL4y8
5XsE4UjqftEmwrAdbO2G4cCpuoMC9ZXG9gAdr2BFN6i2Vt9eCen5Poj7E1ik7s8T
GyzploVV0NflhwBGeWnvQANUQGr87gsP5k2JG1z5EwnMybJQ7i3XT726rJMaV6QW
sY5hP72Mtv1I1zL2d9FXm9FWOzbpcXCyxuEBXvqqOHzogri8C7KRRYKyk97Ri7D6
8wIDAQAB
-----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",
...
}
}