GET მოთხოვნით მიმართავს. ClassAtlas ყოველთვის XML-ით და HTTP 200-ით პასუხობს, შედეგს კი status ელემენტის code ამბობს. პროტოკოლი iPay-ის სპეციფიკაციიდან დაიწყო (payment-gateway.doc, ვერსია 1.03) და ახლა მას ყველა პროვაიდერი იყენებს (ADR 0074). ეს გვერდი აღწერს, როგორ ახორციელებს მას ClassAtlas.
მისამართი
ამ გვერდის მაგალითები iPay-ის მისამართს იყენებს. TBC Pay ზუსტად იგივე მოთხოვნებს საკუთარ მისამართზე აგზავნის.
დაგეგმილია (CA-1147): TBC Pay-ის მისამართი ჯერ არ პასუხობს.
შემოწმებები თანმიმდევრობით
ყოველი მოთხოვნა ამ შემოწმებებს ამ თანმიმდევრობით გადის. პირველი, რომელიც ვერ გაივლის, განსაზღვრავს პასუხს.
IP შემოწმება სკოლის განსაზღვრამდე ხდება, ასე რომ უცხო გამომძახებელი სკოლის მონაცემთა ბაზას ვერასდროს ხსნის და მის ლიმიტს ვერ ხარჯავს. ავთენტიფიკაცია ამის შემდეგ ხდება, რადგან თითო სკოლის წვდომის მონაცემები მის საკუთარ ბაზაშია (ADR 0029).
ამ მისამართზე ნებისმიერ მოულოდნელ შეცდომას კოდი 99 პასუხობს და არასდროს HTML შეცდომის გვერდი.
ავთენტიფიკაცია
დაშვებული IP-ები
მხოლოდ პროვაიდერების სერვერები მიიღება. პროვაიდერი ClassAtlas-ს აწვდის მისამართებს, საიდანაც მიმართავს, და ერთი სია ყველა სკოლასა და ყველა პროვაიდერს ემსახურება.- შემოწმება იყენებს მისამართს, საიდანაც კავშირი მოვიდა, და არა
X-Forwarded-For-ს, რომლის გაყალბებაც ნებისმიერ გამომძახებელს შეუძლია (ADR 0028). - სიაში არსებულ მისამართსაც სჭირდება ამ პროვაიდერთან სკოლის წვდომის მონაცემები და საიდუმლო გასაღები.
წვდომის მონაცემები
თითო სკოლას თითოეულ პროვაიდერთან თავისიUSERNAME, PASSWORD და საიდუმლო გასაღები აქვს, დაშიფრულად შენახული სკოლის ბაზაში. მომხმარებელიც და პაროლიც პასუხამდე მოწმდება, მუდმივ დროში, ასე რომ არასწორ მომხმარებელს და არასწორ პაროლს ერთნაირი დრო სჭირდება.
HASH_CODE
HASH_CODE არის ყველა პარამეტრის მნიშვნელობის MD5, იმ თანმიმდევრობით, რომლითაც პარამეტრები მოდის, ბოლოს სკოლის საიდუმლო გასაღებით, დიდი ასოებით hex ფორმატში.
- თავად
HASH_CODEგამოტოვებულია, მოთხოვნაში სადაც არ უნდა იყოს. - მნიშვნელობები URL-დეკოდირებული სახით ერთდება, გამყოფის გარეშე.
- თანმიმდევრობა მოსვლის თანმიმდევრობაა და არა ფიქსირებული სია. თუ პროვაიდერი ახალ პარამეტრს დაამატებს, ჰეში მაინც გაივლის (ADR 0026).
pay-სთვის, სატესტო მნიშვნელობებით და საიდუმლო გასაღებით DemoSecretKey123:
დაუდასტურებელია, პროვაიდერი დეკოდირებულ მნიშვნელობას ჰეშავს თუ ნედლს. ეს მხოლოდ
EXTRA_INFO-ს ეხება, ერთადერთ პარამეტრს, რომელშიც კოდირების საჭიროების მქონე სიმბოლოები შეიძლება მოხვდეს, და iPay-მა დაადასტურა, რომ მასში არაფერს აგზავნის. საკითხს სკოლის ჩართვამდე პროვაიდერის სატესტო გაშვება წყვეტს.პარამეტრები
პარამეტრი ჩამოთვლილ ოპერაციებში სავალდებულოა, თუ არასავალდებულოდ არ არის აღნიშნული.PAY_AMOUNT-ის ზედა ზღვარი ყველაზე დიდი თანხაა, რომელსაც ტრანზაქცია იტევს.
პასუხები
ყოველი პასუხი ერთიpay-response დოკუმენტია: status კოდით და ტექსტით, timestamp Unix წამებში და, წარმატებისას, ოპერაციის შედეგი. უარს retry ატრიბუტიც ახლავს.
უარი
retry ყოველთვის false-ია, გარდა იმ შემთხვევისა, როცა სკოლის ლიმიტი ამოიწურა. პროვაიდერისთვის იმის თქმა, რომ უარყოფილი გადახდა შეიძლება გამეორდეს, როცა არ შეიძლება, ორმაგ გადახდამდე მიდის.
ოპერაციები
debt
აბრუნებს, რამდენი მართებს მოსწავლეს და რისგან შედგება დავალიანება.მოთხოვნა
პასუხი
debt არის მოსწავლის დარიცხვებს გამოკლებული ბალანსი, თეთრებში და არასდროს ნულზე ნაკლები. ის იმავე ბალანსის ხედიდან იკითხება, რომელსაც ClassAtlas-ის პანელი იყენებს, ასე რომ ბანკი და სკოლა ყოველთვის ერთსა და იმავე რიცხვს ხედავენ.
additional-info გადამხდელისთვისაა. მნიშვნელობები მთელ ხაზს შეიცავს, სახელები კი მხოლოდ გასაღებებია, რადგან სპეციფიკაცია არ ამბობს, აჩვენებს თუ არა პროვაიდერი სახელებს. ტექსტი ყოველთვის ქართულია, აპლიკაციის ენის მიუხედავად.
სანამ მოსწავლეს დავალიანება აქვს,
balance დარიცხვებთან უკვე გაქვითული ბალანსია, ასე რომ დარიცხვებს გამოკლებული ბალანსი debt-ს უდრის. როცა არაფერი მართებს, ეს მისი ბალანსია, რათა მშობელმა განასხვავოს „ანგარიში გასწორებულია” და „სკოლა ჩემს შვილს არ იცნობს”.
verify
პასუხობს, შეიძლება თუ არა გადახდა. არაფერს წერს, რადგან ოპერატორთან გადახდისას მანამ იგზავნება, სანამ კლიენტი თანხას გადასცემს. უარს ამბობს მხოლოდ მოსწავლეზე, რომელიც სკოლიდან დავალიანების გარეშე წავიდა (კოდი 9). თანხის ზედა ზღვარი არ არის: მშობელს შეუძლია იმაზე მეტი გადაიხადოს, ვიდრე მართებს.პასუხი
pay
წერს გადახდას და აბრუნებს მის ქვითრის ნომერს.მოთხოვნა
პასუხი
verify-ის შემოწმება თავიდან სრულდება, რადგან ოპერატორის დავალება შეიძლება მისი შექმნიდან დიდი ხნის შემდეგ გადაიხადონ.- მოსწავლისთვის ერთი ტრანზაქცია იწერება.
receipt-idმისი ID-ია ClassAtlas-ში. - დანარჩენი ყველაფერი, დარიცხვების დაფარვიდან ოჯახისთვის შეტყობინებამდე, ამ ტრანზაქციიდან გამომდინარეობს. იხ. როგორ წერს ClassAtlas პირადი ნომრით გადახდას.
PAYMENT_ID თითო პროვაიდერისა და არხისთვის ერთხელ იწერება. იმავე არხიდან იმავე ID-ის განმეორებით მოსვლას კოდი 8 პასუხობს და არაფერი იწერება. ამიტომ დაკარგული პასუხის შემდეგ განმეორებული მოთხოვნა კოდ 8-ს იღებს და არა თავდაპირველ receipt-id-ს. iPay-მა დაადასტურა, რომ კოდები 8 და 18 მათთვის ერთსა და იმავეს ნიშნავს.
გადახდის გაუქმების ოპერაცია არ არსებობს.
ping
პასუხობს, შეუძლია თუ არა სკოლას ახლა გადახდების მიღება. ის ავთენტიფიკაციის ყველა შემოწმებას გადის, შემდეგ კი კითხულობს მოსწავლეების ბალანსის ხედს, რომელზეც ფულთან დაკავშირებული ყველა ოპერაციაა დამოკიდებული.მოთხოვნა
სტატუს კოდები
პარამეტრების შეცდომები ფიქსირებული თანმიმდევრობით ბრუნდება: ჯერ დაკარგული პარამეტრი (4), შემდეგ უცნობი სერვისი (10), შემდეგ საზღვრებს გარეთ თანხა (7), შემდეგ ნებისმიერი სხვა არასწორი მნიშვნელობა (5). კოდი 18 სპეციფიკაციაში არსებობს, მაგრამ ClassAtlas მას არასდროს აგზავნის.