
Odoo 19用のKRA eTIMSとSafaricom M-Pesaの統合の構築
Building Production KRA eTIMS and Safaricom M-Pesa Integrations for Odoo 19
イーストアフリカのビジネスソフトウェアの構築は、2つのハードな運用事実に対処することを意味します。 まず、ケニアの収入局は、電子商取引によるデジタル会計シグネチャと検証可能なQRコードを運ぶために、すべてのビジネス請求書が必要です。 次に、Safaricom M-Pesaを通じて商業取引の80%以上が決済されます。 ERP が請求書をリアルタイムに署名したり、Paybill の支払いを自動で照合できない場合は、経理チームはマニュアルデータエントリを行なう日を費やします。 繊維が切られたらあなたの小売POSがオフラインで行く場合、あなたは合法的にレシートを発行することはできません。 これらの問題を解決するため、Odoo App Storeで3つのプロダクション対応モジュールを作成、公開しました。 Odoo 17.0, 18.0, 19.0 をコミュニティとエンタープライズ版の両方でサポートします。 ここは、背後にある技術アーキテクチャです...
イーストアフリカのビジネスソフトウェアの構築は、2つのハードな運用事実に対処することを意味します。 まず、ケニアの収入局は、電子商取引によるデジタル会計シグネチャと検証可能なQRコードを運ぶために、すべてのビジネス請求書が必要です。 次に、Safaricom M-Pesaを通じて商業取引の80%以上が決済されます。 ERP が請求書をリアルタイムに署名したり、Paybill の支払いを自動で照合できない場合は、経理チームはマニュアルデータエントリを行なう日を費やします。 繊維が切られたらあなたの小売POSがオフラインで行く場合、あなたは合法的にレシートを発行することはできません。 これらの問題を解決するため、Odoo App Storeで3つのプロダクション対応モジュールを作成、公開しました。 Odoo 17.0, 18.0, 19.0 をコミュニティとエンタープライズ版の両方でサポートします。 私たちが構築する方法の背後にある技術アーキテクチャ、ネットワーク障害の処理方法、そして我々が方法に沿って学んだこと。 3つの統合モジュールの目的の版及び版JengaStack eTIMSの実時間KRA OSCUの請求書の署名および会計QRコードコミュニティ及び企業(17.0、18.0、19.0)JengaStack M-Pesa Daraja STKの押しおよびC2BのPaybill/Tillのledgerの自動調整のコミュニティ及び企業(17.0、18.0、19.0)JengaStack ETIMS VSCU オフライン初の仮想制御ユニットと、コンプライアンスの同期コミュニティとエンタープライズ(17.0、18.0、19.0)をバッチ処理。ERPワーカーブロックなしのリアルタイムの財政署名 標準的なKRA eTIMSオンラインセールスコントロールユニット(OSCU)フローでは、請求書ラインアイテム、税金分類コード、購入者PINをHTTPS経由でKRAに送信する必要があります。 KRAは、制御ユニット内部データ(CU情報)、インボイスシーケンス番号、QRコードとしてエンコードされた検証URLを返します。 すぐに多くの開発者が落ちるのは、Odoo の請求書確認メソッド内で同期 HTTP 呼び出しを直接作成することです。 交通量が高かったり、ピークの税理士期限が満たすと、KRAのエンドポイントは数秒かかります。 外部呼び出しをブロックするOdoo WSGIワーカーを締めて、サーバーワーカープールをすばやく排気します。 Asynchronous Buffer および Retry Engine In は、会計送信から請求書確認を分離します。 請求書投稿時: モジュールは内部のシーケンスを割り当て、保留中の会計を作成します。 オンラインモードがアクティブの場合、即時のショートタイムアウトコール(最大4秒)を試みます。 呼び出しが成功すると、請求書はKRAの制御コードとQRコードをすぐに受け取ります。 呼び出しが失敗したり時間がなくなった場合、モジュールは、インボイスをロールバックせずにレコードをマークします。 専用のスケジュールされた cron ワーカーは jitter で exponential backoff を使用してレコードをスワイプします。 その結果、QRコードとコントロールユニットIDは、PDF QWebレポートとOWL POSサーマルレシートの両方でレンダリングされ、請求操作をすることなく法的な要件を満たしています。 2.Safaricom M-Pesaのデュアルモードアーキテクチャと自動調整OdooのOdooのためのほとんどのM-Pesaプラグインは、手動でSMS文字列を読み、Odooに確認コードをタイプするためにスタッフを強制する、後に支払いを処理します。 Odoo Payment Providerは、デュアルモードエンジンで設計されており、標準的な顧客の請求書ポータルとeCommerceチェックアウトに直接接続します。 ダイレクトPOSとバックオフィスエンジンにより、レジスタはSTKプッシュをワンクリックでトリガーしたり、システムが未承認のC2BカスタマーペイメントをPaybillやTillに送信したりすることができます。 Webhook Reliability Gap Safaricom は HTTPS 経由で検証と確認コールバックを送信します。 ただし、Safaricomとクラウドサーバー間のネットワークホップは、時折パケットをドロップすることができます。 着信コールバックだけに頼ることは、自信のない支払いにつながる. Webhookリスナーの3層検証ループで解決します。 Safaricom の JSON ペイロードの受信を許可します。, 不変な監査 Ledger で未加工取引を保存します。, 以内の受諾 200 ミリ秒. アクティブステータスクエリフォールバック。 STK Pushが起動し、確認が45秒以内に届かない場合は、SafaricomのトランザクションステータスAPIを直接使用してください。 緊急ガード。 支払いを登録する前に、トランス