財務会計用ソフトウェア:Open API

ホームアカウンティングに関する私の過去の投稿の1つは、このトピックに関する多くの議論を生み出しました-インターネットで財務を追跡することは可能ですか、それとも昔ながらの方法でExcelのようなオフラインアプリケーションを使用する方が良いでしょうか?



意見は分かれていますが、事実は残っています-多くの人がオンラインを選択しています。 そして、私たちは本当にオフラインでオンラインと和解できないと思いましたか?



そして今、どのOSでも、財務会計のアプリケーションは、drebedengi.ruのオープンAPIを使用してオンラインでデータを交換できます。 人々はこれが必要だと思いますか?



統計



必要なことがわかりました。 統計(〜43,000ユーザー)によると、同期に最も関連するアプリケーションは次のとおりです。

  1. アンドリオ、iPhone、Windows Mobile、Symbian
  2. Unix / Linux
  3. vkontakte.ruなどのFlashアプリケーション
  4. ブラウザFireFox、Chrome、Opera、IEのプラグイン
  5. 経費の迅速な入力のためのjsのクロスブラウザーウィジェット
改革に対する国民投票は 、これを確認するものです。



コラボレーション



したがって、誰でもdrebedengi.ruのアプリケーションを作成できます。 同時に、 バグのない優れたアプリケーションを公式Webサイトに投稿して、ユーザーに直接提供することができます。 このため、特別な協力協定が締結され、個別に議論されます。 その後、開発者はアフィリエイトプログラムのメンバーになり、すぐに販売から収益を受け取り始めます。 言い換えると、成功したアプリケーションはすぐに数千人の視聴者の手に渡ります。



仕組み



すべてがSOAPプロトコルで機能します。 あなたはディレクトリを要求することから始める必要があります-費用のカテゴリーのリスト、収入源、お金の保管場所、ユーザーとタグによって入力された通貨。 これには次の方法があります。



anyType getCategoryList(string $apiId, string $login, string $pass, anyType $idList)

anyType getSourceList(string $apiId, string $login, string $pass, anyType $idList)

anyType getPlaceList(string $apiId, string $login, string $pass, anyType $idList)

anyType getCurrencyList(string $apiId, string $login, string $pass, anyType $idList)

anyType getTagList(string $apiId, string $login, string $pass, anyType $idList)







各メソッドの入力パラメーターを記述することは意味がなく、WSDLで記述されます。 はい、各方法でユーザー名とパスワードを転送することにしました。 この主題については多くの考えがありましたが、これまでのところ、彼らはどのように決定したかを決定しました。 建築の第一人者-より正しいスキームを提案しますか?



次に、ユーザーが作成したすべてのトランザクションのリストを取得します:費用、収入、口座間の移動(保管場所)、および通貨交換。 これには最も重要な方法があります。



anyType getRecordList(string $apiId, string $login, string $pass, anyType $params, anyType $idList)







params



配列には、データのさまざまな組み合わせを要求できる巨大なパラメーターセットが含まれています。 最初のステップでは、すべてのトランザクションを圧縮してクライアントに保存するだけです。



同期アルゴリズム



初期データがダウンロードされ、クライアントのユーザーにオンラインと一致する残金が表示されると、クライアントアプリケーションは同期モードで動作を開始します。 操作の原則は、SVNなどのバージョン管理システムの原則と同じです。 常に最新のリビジョンに更新する必要があります。



これを行うために、サーバーは過去3か月間のオブジェクトの変更履歴を保存します(必要以上に高価になります)。 各リビジョンには固有のリビジョン番号があり、変更内容(トランザクション、コストカテゴリ、保管場所など)、変更方法(追加、変更、削除)および変更時期に関する情報が含まれています。



クライアントは、最後に正常に同期されたサーバーリビジョン番号を保存し、再度同期することを決定するたびに送信します。 サーバーは、クライアントがサーバーから変更をダウンロードする基準に基づいて、変更のリストを時系列順に応答します。 メソッドを参照してください:



anyType getChangeList(string $apiId, string $login, string $pass, string $revision)

integer getCurrentRevision(string $apiId, string $login, string $pass)







その後、クライアントはその変更をサーバーにアップロードし、最後に「コミット」後にサーバー上で作成されたリビジョン番号を要求して保存します。 クライアントが不溶性の競合を検出した場合、サーバーからすべてを再度ダウンロードするか、またはその逆ですべてをサーバーにダウンロードするようにユーザーに提供します。 後者の場合、最初にサーバー上のすべてを削除することを忘れてはなりません。このための方法もあります。



おわりに



そのため、興味がある場合は、 ここで wsdlへのリンク、PHPの本格的なテストクライアントのサンプル 、低レベルのXML SOAPリクエスト 、getRecordListメソッドのサンプルなどを見つけることができます。



はい...ネットワーク経由でデータを傍受することを恐れている人のために-私たちはSSLサポートを備えたSOAPライブラリを見つけることを提案し、これには別のWSDLを使用します。



All Articles