Hướng dẫn từng bước tích hợp QuickBooks Online với NodeJS

By manhnv, at: 10:01 Ngày 24 tháng 11 năm 2024

Thời gian đọc ước tính: __READING_TIME__ minutes

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

Hướng dẫn từng bước tích hợp QuickBooks Online với NodeJS

QuickBooks Online (QBO) là một nền tảng kế toán phổ biến được sử dụng bởi các doanh nghiệp ở mọi quy mô. Tích hợp QBO với Node.js cho phép các nhà phát triển tự động hóa các tác vụ như đồng bộ hóa hóa đơn, cập nhật hồ sơ khách hàng và truy xuất báo cáo theo chương trình.

Trong hướng dẫn này, chúng ta sẽ cùng nhau trải qua quy trình tích hợp QuickBooks Online với Node.js từng bước một. Theo sau là https://developer.intuit.com/app/developer/qbo/docs/develop/sdks-and-samples-collections/nodejs

 

Điều kiện tiên quyết

Trước khi bắt đầu, hãy đảm bảo bạn có những điều sau:

1. Tài khoản QuickBooks Online: Đăng ký tại QuickBooks Online.

2. Tài khoản Intuit Developer: Đăng ký và tạo ứng dụng tại Intuit Developer.

3. Node.js đã được cài đặt: Phiên bản khuyến nghị 14.x trở lên.

4. Các gói cần cài đặt:

  • express
     
  • axios
     
  • dotenv
     
  • quickbooks
     

Cài đặt các gói này bằng npm:

npm install express axios dotenv quickbooks


5. Thông tin xác thực OAuth: Lấy ID Khách hàng, Bí mật Khách hàng và URI Chuyển hướng từ cổng Intuit Developer.

 

Bước 1: Thiết lập môi trường Node.js của bạn

1. Tạo một thư mục dự án mới:

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

 

Cài đặt các phụ thuộc cần thiết:

npm install express axios dotenv quickbooks

 

Tạo một tệp .env để lưu trữ thông tin xác thực của bạn:

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

 

Bước 2: Cấu hình xác thực OAuth 2.0

Để truy cập API của QuickBooks, bạn phải triển khai luồng OAuth 2.0 để lấy mã thông báo truy cập.

Máy chủ Express tối thiểu cho OAuth

Đây là một ví dụ về việc thiết lập xác thực OAuth với Express:

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(`Kết nối với 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(`Mã thông báo truy cập: ${access_token}
Mã thông báo làm mới: ${refresh_token}`);
    } catch (error) {
        res.status(500).send('Lỗi khi trao đổi mã thông báo: ' + error.message);
    }
});

app.listen(port, () => console.log(`Máy chủ đang chạy tại http://localhost:${port}`));
 

 

Bước 3: Kết nối với API QuickBooks

Sau khi bạn có mã thông báo truy cập, bạn có thể sử dụng thư viện quickbooks để tương tác với API.

Thiết lập khách hàng QuickBooks

const QuickBooks = require('quickbooks');

// Thay thế những cái này bằng giá trị của bạn
const qb = new QuickBooks(
    process.env.CLIENT_ID,
    process.env.CLIENT_SECRET,
    process.env.REDIRECT_URI,
    'access_token_here',  // Thay thế bằng mã thông báo truy cập thực tế của bạn
    false,                // Đặt thành true cho chế độ sandbox
    true                  // Bật hỗ trợ minorVersion
);

 

Bước 4: Thực hiện các thao tác cơ bản

Truy xuất khách hàng

const QuickBooks = require('quickbooks');

// Thay thế những cái này bằng giá trị của bạn
const qb = new QuickBooks(
    process.env.CLIENT_ID,
    process.env.CLIENT_SECRET,
    process.env.REDIRECT_URI,
    'access_token_here',  // Thay thế bằng mã thông báo truy cập thực tế của bạn
    false,                // Đặt thành true cho chế độ sandbox
    true                  // Bật hỗ trợ minorVersion
);

 

Thêm khách hàng

qb.createCustomer(
    {
        DisplayName: 'John Doe',
        PrimaryEmailAddr: { Address: '[email protected]' }
    },
    (err, customer) => {
        if (err) {
            console.error('Lỗi khi tạo khách hàng:', err);
        } else {
            console.log('Khách hàng đã được tạo:', customer);
        }
    }
);

 

Cập nhật khách hàng

qb.updateCustomer(
    {
        Id: '1',  // Thay thế bằng ID khách hàng thực tế
        SyncToken: '0',  // Thay thế bằng SyncToken thực tế
        DisplayName: 'John Doe Updated'
    },
    (err, customer) => {
        if (err) {
            console.error('Lỗi khi cập nhật khách hàng:', err);
        } else {
            console.log('Khách hàng đã được cập nhật:', customer);
        }
    }
);

 

Bước 5: Xử lý lỗi và gỡ lỗi
 

  • Mã thông báo không hợp lệ: Triển khai logic làm mới mã thông báo bằng refresh_token.
     
  • Giới hạn tốc độ: Tuân thủ giới hạn tốc độ API và thử lại với độ trễ theo cấp số nhân.

 

Làm mới mã thông báo

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('Mã thông báo truy cập mới:', response.data.access_token);
    } catch (error) {
        console.error('Lỗi khi làm mới mã thông báo:', error);
    }
}

 

Bước 6: Triển khai và bảo mật
 

  • Sử dụng thư viện cấu hình bảo mật như dotenv để lưu trữ các biến môi trường.
     
  • Triển khai an toàn trên nền tảng đám mây như AWS, Azure hoặc Heroku.
     
  • Xoay vòng và làm mới mã thông báo thường xuyên.

 

Kết luận

Tích hợp QuickBooks Online với Node.js có thể tự động hóa quy trình kế toán của bạn và cải thiện hiệu quả kinh doanh. Bằng cách làm theo hướng dẫn này, bạn đã thiết lập xác thực OAuth 2.0, thực hiện các cuộc gọi API để quản lý khách hàng và tìm hiểu các thực tiễn tốt nhất để xử lý lỗi và bảo mật.

 

Tài nguyên bổ sung

 

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

Liên quan

Python Learning

Đọc thêm
Python Outsourcing

Đọc thêm
Python Learning

Đọc thêm
Theo dõi

Theo dõi bản tin của chúng tôi và không bao giờ bỏ lỡ những tin tức mới nhất.