|
|
@@ -0,0 +1,50 @@
|
|
|
+(in-package :cl-user)
|
|
|
+(defpackage chatikbot.plugins.ofd
|
|
|
+ (:use :cl :chatikbot.common :alexandria))
|
|
|
+(in-package :chatikbot.plugins.ofd)
|
|
|
+
|
|
|
+(defparameter +api-root+ "https://proverkacheka.nalog.ru:9999/v1/")
|
|
|
+
|
|
|
+(defmethod poller-request ((module (eql :ofd)) method &rest params)
|
|
|
+ (handler-case
|
|
|
+ (json-request (concatenate 'string +api-root+ method)
|
|
|
+ :basic-auth *poller-token*
|
|
|
+ :headers '((:device-id . "bot") (:device-os . "lisp"))
|
|
|
+ :parameters (rest-parameters params t))
|
|
|
+ (dex:http-request-failed (e) e)))
|
|
|
+
|
|
|
+(defmethod poller-validate ((module (eql :ofd)) response)
|
|
|
+ (not (typep response 'dex:http-request-failed)))
|
|
|
+
|
|
|
+(defmethod poller-get-token ((module (eql :ofd)) secret)
|
|
|
+ (let* ((*poller-token* secret))
|
|
|
+ (ignore-errors
|
|
|
+ (poller-request :ofd "mobile/users/login")
|
|
|
+ *poller-token*)))
|
|
|
+
|
|
|
+(defun auth (user pass)
|
|
|
+ (poller-authenticate :ofd (cons user pass)))
|
|
|
+
|
|
|
+(defun cheque-check (fn fd fp n date sum)
|
|
|
+ (handler-case
|
|
|
+ (let ((res (poller-call :ofd
|
|
|
+ (format nil "ofds/*/inns/*/fss/~A/operations/~A/tickets/~A" fn n fd)
|
|
|
+ :|fiscalSign| fp
|
|
|
+ :|date| date
|
|
|
+ :|sum| sum)))
|
|
|
+ (typecase res
|
|
|
+ (dex:http-request-not-acceptable nil)
|
|
|
+ (t (error res))))
|
|
|
+ (end-of-file () t)))
|
|
|
+
|
|
|
+(defun cheque-get (fn fd fp)
|
|
|
+ (handler-case
|
|
|
+ (let ((res (poller-call :ofd
|
|
|
+ (format nil "inns/*/kkts/*/fss/~A/tickets/~A" fn fd)
|
|
|
+ :|fiscalSign| fp
|
|
|
+ :|sendToEmail| "no")))
|
|
|
+ (typecase res
|
|
|
+ (list (agets res "document" "receipt"))
|
|
|
+ (dex:http-request-not-acceptable nil)
|
|
|
+ (t res)))
|
|
|
+ (end-of-file () nil)))
|