Browse Source

[ofd] init

Enikesha 6 năm trước cách đây
mục cha
commit
2261915e82
1 tập tin đã thay đổi với 50 bổ sung0 xóa
  1. 50 0
      plugins/ofd.lisp

+ 50 - 0
plugins/ofd.lisp

@@ -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)))