この記事は、Habrの投稿として書かれました。そのほとんどは、インターネットサイトのオンライン予約オフィスの問題について、情報の空白が生じているためです。 一方では、ネットワークはオンライン予約オフィスのトピックに関する記事でいっぱいであり、他方では、Webサイトソリューション、特に技術に関する直接的な情報はあまりありません。 「緊急に必要」および「罰金が科せられる」という言葉のみ。 このクエストは私たちにとって非常に興味深く、混乱しているように思えました。誰かが助けてくれれば、私たちは幸せになります。

オンラインレジとは何ですか、税務当局とどのようにやり取りするのか、技術の一般的な説明はプロフィールサイトで見つけることができます。 ここでは、見つけることができる製品に関するすべての技術情報を見つけることができます。実際、これは、このトピックに関するWikiの内部記事の改訂版です。
おそらく記事はすぐに関連性を失うため、2017年6月中旬に書かれました。 そして、はい、オンラインサービスを販売するインターネットサイトの場合、実装期限は今年ではないようですが、税務当局で実験したくはありません。夏にそりを用意する方が良いでしょう...
そのため、当社のサイト(サブスクリプション)でオンラインサービスを販売しています。 Yandex.CashおよびPayPalを介して支払いを受け付けます。 私たちはすべて、白で仕事をしています。 今では、個人との決済には現金デスクが必要であることがわかりました(個人による銀行口座からの支払いを除く)。 支払いゲートウェイからの回答が「承認」されてからサービスが提供されるまでの間にあるサイトの支払いチェーンでは、別の操作「ノックチェック」を挿入する必要があります。 「まあ、どのような問題がありますか、オンラインキャッシュデスクサービスを借りるだけです」と私たちは決めました。 そして、ここに厳しい現実が示されました。ATOL-online 、 Starrusなどのすべての美しいランディングページは、ランディングページの広告にすぎません。 今日運用可能なSaaSソリューションはありません。いずれにしても、それらを見つけることができませんでした。 Yandex.KassaとATOL-onlineの自慢の統合も同様です 。 ATOLでの技術文書の同じリクエストは入り口ですぐに行き詰まり、Starrusは準備されていないSaaSの代わりにスタンドアロンにすることを勧めました。 それから、財政ドライブの状況に関するジューシーな詳細が判明し、本当に楽しくなりました。

その結果、メーカーのサポートとのコミュニケーションの妥当性を含む市場を分析した後、Starrusからの決定に落ち着きました: KKT RP System 1FS。 複合施設を購入し、施設に設置し、請求書を追加してこれらすべてとやり取りすることにしました。
しかし、最初は少し用語を説明します:
- KKT-レジ。 記事の文脈ではレジです。
- FR-会計レジストラ。 基本的にCCPと同じです。
- FN-財政ドライブ。 FRの一部としての暗号化ツール。
- FD-会計文書。 チェック、PD番号-チェック番号。
- AFは財政記号です。 PDの制御値。
- OFD-会計データ演算子。 会計データを受信して蓄積する外部サービス。
会計レジストラRP Sistema 1FS(FA)は、会計データをOFDに自動送信する新世代のオンラインキャッシュレジスタ( CCP )です。 ネットワークがJSON形式のコマンドと「ノックチェック」を受信できるようにします。 OFD-ブラックボックスとのすべての外部相互作用は独立して動作し、追加の身体の動きを必要としません。
ハードウェア
公式には、「登録」にはRPモデル1FAモデルのみがあります。 自動販売機用に設計されており、レシートプリンターが付属しています。 インターネットサイトのモデルはRP System 1FSと呼ばれ、プリンターがない場合は異なります。 しかし、RP-System 1FSモデルは登録簿にないため、RP-System 1FAモデルは彼の装いで販売されていますが、キットにプリンターは含まれていません。 この情報は、 KKTを選択および注文する際の混乱を避けます。
KKT自体は、黒く塗られた小さな金属製の箱です。 ケーシングにはマークが付けられており、エンドプレーンにはすべてのインターフェイスコネクタがあります。

ネジマウントにハッチがあり、その後ろにフィスカルドライブ( FN )のコンパートメントがあり、内部UARTインターフェイスを介して機能します。 キー(ピンのプラグ)を使用すると、ドライブを誤って挿入することはできませんが、ハッチのデザイン機能を考慮すると、挿入、特にドライブの取り外しは簡単ではありません。 FNを登録および再登録すると、対応するエントリがCCPパスポートに入力されます。

CCPの一般化された状態は、4つのLEDインジケータによってハウジングに表示されます。 ステータス、データ交換、エラーステータス。
7.5〜24ボルトの安定化DC電源から電力が供給されます。 「丸」プラグ、「プラス」内部。 電源は含まれていません。サプライヤー/メーカーには通常電源がありません。サードパーティの互換電源を購入することをお勧めします。

イーサネットコントローラーには、事前に定義されたアドレスがあるか、DHCPを介して設定を受け取ります(静的設定よりもDHCP優先順位)。
RS232(DB-9 in / out)は115200モードで動作し、ホストコンピューターへのローカル接続と、必要に応じてレシートプリンターの接続に使用されます。 給与計算の登録から小切手の「パンチング」で終わる、 CCPとの標準的なやり取りのすべての段階で、RS232とやり取りすることなく、イーサネット経由でローカルネットワーク上でのみ実行できます。
ケースにはUSBがありますが、テストされていません。
財政ドライブ
このモジュールは暗号化ツールであり、フィスカルデータ(チェック)を保存し、暗号化関数の結果を入力データ(財政記号)で生成します。 ホログラフィック保護テープ付きの灰色のプラスチック製の構造。 インターフェイスコネクタは、動作モードでFNに電力を供給し、UART、I2C、およびRS232プロトコルを使用してデータを交換します。 内部には、内部時計(RTC)を保持するリチウム電池があります。 FNの有効期間は人為的に制限されており、13か月ごとに交換する必要があります。

ソフトウェア
RS232インターフェイスを介して、またはポート4444へのHTTP接続およびTCPポート3333へのバイナリ接続を介してやり取りされるJSONプロトコルを使用してローカルネットワークを介してCCPとやり取りできます。
TestFR
, RS232, . Windows, «» . , , , , . , .

/ , . .
. ( ) . «» . «» , , . , . . «» , « », -. «» . .

. , , . ( ) , . , .

( ) . , . 3000 .
, . .
. , 3-way handshake. ( ).
. : ( ), , «-» . , .
, , !
TestFR
. , . « » , 11 . , , , , . . () 1 — « ». (), . , .
- ( ) - , «8. », « », 1. , , TestFR
, . CTRL+A
.
, . , .
, . . .

, . , . , .
.
. . , . .
. — . :
, . . .
«», , - Complex. , , . , - .
Complex :
{
"Group": "%personal_uuid%",
"Device": "auto",
"RequestId": "%unique_request%",
"QueueLen": 100,
"Password": 1,
"Lines": [{
"Qty": 2500,
"Price": 10000,
"PayAttribute": 4,
"TaxId": 1,
"Description": " "
}, {
"Qty": 500,
"Price": 200000,
"PayAttribute": 4,
"TaxId": 2,
"Description": " , "
}
],
"Cash": 200000,
"NonCash": [2000, 3000, 4000],
"TaxMode": 1,
"PhoneOrEmail": "%customer_contact%",
"FullResponse": false
}
RequestId
, . , , , .
, . «» n . , : , , . .
FullResponse
true , , .
100, .
, Qty
= 1000.
Cash
( - )
NonCash
, . .
TaxMode
— ( ).
, «» . 1 1- API, .
, API. , , . , . , . , . . , , , .
, « , ». «»:
- . «» . - , — .
- , «». «» «», .
- , . «»
TestFR.exe
, — . «» . , , , . - , -, . « », , , . , ( ).