QuickBooks OnlineとNode.jsの連携ステップバイステップガイド

By manhnv, at: 2024年11月24日10:01

Estimated Reading Time: __READING_TIME__ minutes

Step-by-Step Guide to Integrating QuickBooks Online with NodeJS
Step-by-Step Guide to Integrating QuickBooks Online with NodeJS

QuickBooks Online (QBO)は、あらゆる規模の企業で使用されている人気の会計プラットフォームです。Node.jsとQBOを統合することにより、開発者は請求書の同期、顧客レコードの更新、レポートのプログラムによる取得などのタスクを自動化できます。

 

このガイドでは、QuickBooks OnlineとNode.jsを段階的に統合するプロセスを説明します。https://developer.intuit.com/app/developer/qbo/docs/develop/sdks-and-samples-collections/nodejsに続きます

 

前提条件

 

開始する前に、次のものがあることを確認してください。

 

1. QuickBooks OnlineアカウントQuickBooks Onlineでサインアップしてください。

 

2. Intuit開発者アカウントIntuit開発者で登録してアプリを作成してください。

 

3. Node.jsのインストール:推奨バージョンは14.x以降です。

 

4. インストールするパッケージ

 

  • express
     
  • axios
     
  • dotenv
     
  • quickbooks
     

 

npmを使用してこれらのパッケージをインストールします。

 

npm install express axios dotenv quickbooks

 

5. OAuth認証情報:Intuit DeveloperポータルからクライアントID、クライアントシークレット、リダイレクトURIを取得します。

 

ステップ1:Node.js環境の設定

 

1. 新しいプロジェクトディレクトリを作成します。

 

mkdir quickbooks-node-integration
cd quickbooks-node-integration
npm init -y

 

必要な依存関係をインストールします。

 

npm install express axios dotenv quickbooks

 

認証情報を保存するための.envファイルを作成します。

 

CLIENT_ID=Your_Client_ID
CLIENT_SECRET=Your_Client_Secret
REDIRECT_URI=http://localhost:3000/callback

 

ステップ2:OAuth 2.0認証の設定

 

QuickBooks APIにアクセスするには、OAuth 2.0フローを実装してアクセストークンを取得する必要があります。

 

OAuthのための最小限のExpressサーバー

 

Expressを使用したOAuth認証の設定例を以下に示します。

 

const express = require('express');
const axios = require('axios');
require('dotenv').config();

const app = express();
const port = 3000;

const authUrl = `https://appcenter.intuit.com/connect/oauth2?client_id=${process.env.CLIENT_ID}&redirect_uri=${process.env.REDIRECT_URI}&response_type=code&scope=com.intuit.quickbooks.accounting`;

app.get('/', (req, res) => {
    res.send(`QuickBooksに接続`);
});

app.get('/callback', async (req, res) => {
    const authCode = req.query.code;
    try {
        const response = await axios.post(
            'https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer',
            new URLSearchParams({
                grant_type: 'authorization_code',
                code: authCode,
                redirect_uri: process.env.REDIRECT_URI
            }),
            {
                auth: {
                    username: process.env.CLIENT_ID,
                    password: process.env.CLIENT_SECRET
                },
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                }
            }
        );
        const { access_token, refresh_token } = response.data;
        res.send(`アクセストークン: ${access_token}
リフレッシュトークン: ${refresh_token}`);
    } catch (error) {
        res.status(500).send('トークンの交換エラー: ' + error.message);
    }
});

app.listen(port, () => console.log(`サーバーがhttp://localhost:${port}で実行中`));
 

 

ステップ3:QuickBooks APIへの接続

 

アクセストークンを取得したら、quickbooksライブラリを使用してAPIとやり取りできます。

 

QuickBooksクライアントの設定

 

const QuickBooks = require('quickbooks');

// これらの値を自分の値に置き換えます
const qb = new QuickBooks(
    process.env.CLIENT_ID,
    process.env.CLIENT_SECRET,
    process.env.REDIRECT_URI,
    'access_token_here',  // 実際のアクセストークンに置き換えます
    false,                // サンドボックスモードの場合はtrueに設定します
    true                  // minorVersionサポートを有効にします
);

 

ステップ4:基本操作の実行

 

顧客の取得

 

const QuickBooks = require('quickbooks');

// これらの値を自分の値に置き換えます
const qb = new QuickBooks(
    process.env.CLIENT_ID,
    process.env.CLIENT_SECRET,
    process.env.REDIRECT_URI,
    'access_token_here',  // 実際のアクセストークンに置き換えます
    false,                // サンドボックスモードの場合はtrueに設定します
    true                  // minorVersionサポートを有効にします
);

 

顧客の追加

 

qb.createCustomer(
    {
        DisplayName: 'John Doe',
        PrimaryEmailAddr: { Address: '[email protected]' }
    },
    (err, customer) => {
        if (err) {
            console.error('顧客作成エラー:', err);
        } else {
            console.log('顧客作成済み:', customer);
        }
    }
);

 

顧客の更新

 

qb.updateCustomer(
    {
        Id: '1',  // 実際の顧客IDに置き換えます
        SyncToken: '0',  // 実際のSyncTokenに置き換えます
        DisplayName: 'John Doe Updated'
    },
    (err, customer) => {
        if (err) {
            console.error('顧客更新エラー:', err);
        } else {
            console.log('顧客更新済み:', customer);
        }
    }
);

 

ステップ5:エラー処理とデバッグ  

 

  • 無効なトークンrefresh_tokenを使用してトークン更新ロジックを実装します。
     
  • レート制限:APIのレート制限を尊重し、指数バックオフを使用して再試行します。

 

トークンの更新

 

async function refreshToken(refreshToken) {
    try {
        const response = await axios.post(
            'https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer',
            new URLSearchParams({
                grant_type: 'refresh_token',
                refresh_token: refreshToken
            }),
            {
                auth: {
                    username: process.env.CLIENT_ID,
                    password: process.env.CLIENT_SECRET
                },
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                }
            }
        );
        console.log('新しいアクセストークン:', response.data.access_token);
    } catch (error) {
        console.error('トークン更新エラー:', error);
    }
}

 

ステップ6:デプロイとセキュリティ  

 

  • dotenvなどの安全な構成ライブラリを使用して環境変数を保存します。
     
  • AWS、Azure、またはHerokuなどのクラウドプラットフォームに安全にデプロイします。
     
  • トークンを定期的にローテーションおよび更新します。

 

結論

 

QuickBooks OnlineとNode.jsを統合することで、会計プロセスを自動化し、ビジネス効率を向上させることができます。このガイドに従うことで、OAuth 2.0認証を設定し、顧客を管理するためのAPI呼び出しを行い、エラーとセキュリティの処理に関するベストプラクティスを学習しました。

 

追加のリソース

 

 

Tag list:
- QuickBooks Online integration with Node.js
- QuickBooks Node.js example
- QuickBooks API for developers
- QuickBooks API step-by-step guide
- Node.js QuickBooks API tutorial
- QuickBooks OAuth 2.0 Node.js
- Automate accounting with QuickBooks and Node.js
- Node.js QuickBooks Online automation
- QuickBooks Online Node.js code snippets
- Integrating QuickBooks with Node.js

Related

Python Learning

Read more
Python Outsourcing

Read more
Python Learning

Read more

Subscribe

Subscribe to our newsletter and never miss out lastest news.