1
0

ofd.lisp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. (in-package :cl-user)
  2. (defpackage chatikbot.plugins.ofd
  3. (:use :cl :chatikbot.common :alexandria))
  4. (in-package :chatikbot.plugins.ofd)
  5. (defparameter +api-root+ "https://proverkacheka.nalog.ru:9999/v1/")
  6. (defmethod poller-request ((module (eql :ofd)) method &rest params)
  7. (handler-case
  8. (json-request (concatenate 'string +api-root+ method)
  9. :basic-auth *poller-token*
  10. :headers '((:device-id . "bot") (:device-os . "lisp"))
  11. :parameters (rest-parameters params t))
  12. (dex:http-request-failed (e) e)))
  13. (defmethod poller-validate ((module (eql :ofd)) response)
  14. (not (typep response 'dex:http-request-failed)))
  15. (defmethod poller-get-token ((module (eql :ofd)) secret)
  16. (let* ((*poller-token* secret))
  17. (ignore-errors
  18. (poller-request :ofd "mobile/users/login")
  19. *poller-token*)))
  20. (defun auth (user pass)
  21. (poller-authenticate :ofd (cons user pass)))
  22. (defun cheque-check (fn fd fp n date sum)
  23. (handler-case
  24. (let ((res (poller-call :ofd
  25. (format nil "ofds/*/inns/*/fss/~A/operations/~A/tickets/~A" fn n fd)
  26. :|fiscalSign| fp
  27. :|date| date
  28. :|sum| sum)))
  29. (typecase res
  30. (dex:http-request-not-acceptable nil)
  31. (t (error res))))
  32. (end-of-file () t)))
  33. (defun cheque-get (fn fd fp)
  34. (handler-case
  35. (let ((res (poller-call :ofd
  36. (format nil "inns/*/kkts/*/fss/~A/tickets/~A" fn fd)
  37. :|fiscalSign| fp
  38. :|sendToEmail| "no")))
  39. (typecase res
  40. (list (agets res "document" "receipt"))
  41. (dex:http-request-not-acceptable nil)
  42. (t res)))
  43. (end-of-file () nil)))