Giới thiệu ngắn gọn về việc tích hợp QuickBooks vào ứng dụng Django

By manhnv, at: 10:32 Ngày 28 tháng 3 năm 2025

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

A Short Introduction to Integrate QuickBooks to Django Application
A Short Introduction to Integrate QuickBooks to Django Application

Giới thiệu ngắn gọn về tích hợp QuickBooks vào ứng dụng Django

 

Tích hợp QuickBooks vào ứng dụng Django có thể đơn giản hóa các tác vụ kế toán, tự động hóa quy trình tài chính và nâng cao hiệu quả kinh doanh. Cho dù bạn đang xây dựng một ứng dụng để lập hóa đơn, theo dõi chi phí hay đồng bộ dữ liệu khách hàng, việc kết nối QuickBooks với Django là một giải pháp mạnh mẽ. Trong bài viết này, chúng ta sẽ cùng tìm hiểu các bước cơ bản để bắt đầu tích hợp này.

 

Tại sao nên tích hợp QuickBooks với Django?


QuickBooks là một phần mềm kế toán phổ biến được các doanh nghiệp sử dụng để quản lý tài chính, trong khi Django là một framework Python mạnh mẽ để xây dựng các ứng dụng web. Kết hợp cả hai cho phép bạn:
 

  • Tự động đồng bộ dữ liệu giữa ứng dụng của bạn và QuickBooks.
     
  • Cung cấp thông tin tài chính theo thời gian thực cho người dùng.
     
  • Giảm thiểu việc nhập dữ liệu thủ công và lỗi.

 

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


Trước khi bắt đầu, hãy đảm bảo bạn có:
 

  • Một dự án Django đã được thiết lập và chạy.
     
  • Một tài khoản QuickBooks Online (sandbox hoặc live).
     
  • Python các gói như requests hoặc một SDK như intuit-oauth và quickbooks-python.
     
  • Kiến thức cơ bản về OAuth 2.0 để xác thực.

 

Các bước để tích hợp QuickBooks với Django

 

Bước 1: Thiết lập quyền truy cập API của QuickBooks


Đầu tiên, bạn cần đăng ký ứng dụng của mình trên Cổng thông tin Nhà phát triển Intuit để lấy ID Khách hàng và Bí mật Khách hàng. Điều này sẽ cho phép ứng dụng Django của bạn giao tiếp với QuickBooks thông qua API của nó. Bật chế độ sandbox để kiểm tra.

 

Bước 2: Cài đặt các thư viện cần thiết


Để tương tác với API của QuickBooks, chúng ta sẽ dựa vào thư viện python-quickbooks, một gói Python nhẹ và mạnh mẽ được thiết kế đặc biệt cho tích hợp QuickBooks Online. Thư viện này đơn giản hóa việc xác thực, yêu cầu API và xử lý dữ liệu, làm cho nó trở thành một lựa chọn tuyệt vời cho ứng dụng Django của chúng ta.
 

Cài đặt thư viện

Bắt đầu bằng cách cài đặt thư viện python-quickbooks. Mở terminal của bạn, điều hướng đến thư mục dự án Django của bạn và chạy lệnh sau:

pip install python-quickbooks


Điều này sẽ tải xuống và cài đặt thư viện cùng với các phụ thuộc của nó. Đảm bảo môi trường ảo của bạn được kích hoạt nếu bạn đang sử dụng.

 

Tại sao python-quickbooks?

Thư viện python-quickbooks đơn giản hóa việc gọi API của QuickBooks bằng cách cung cấp các lớp có sẵn. Điều này có nghĩa là các nhà phát triển không cần phải xử lý thủ công các yêu cầu và phản hồi thô, làm cho việc tích hợp nhanh hơn và dễ dàng hơn.

Ví dụ, lấy hóa đơn thủ công:

import requests
import json

# Thông tin xác thực và điểm cuối API
access_token = "your_access_token"
realm_id = "your_realm_id"
url = f"https://sandbox-quickbooks.api.intuit.com/v3/company/{realm_id}/query"
# Tiêu đề cho yêu cầu HTTP
headers = {
    "Authorization": f"Bearer {access_token}",
    "Accept": "application/json",
    "Content-Type": "application/text"
}
# Truy vấn kiểu SQL để lấy hóa đơn
query = "SELECT * FROM Invoice WHERE Id = '123'"


# Gửi yêu cầu POST đến API QuickBooks
response = requests.post(url, headers=headers, data=query)
# Xử lý phản hồi thủ công
if response.status_code == 200:
    data = response.json()
    invoices = data["QueryResponse"]["Invoice"]
    print(invoices)
else:
    print(f"Error: {response.status_code} - {response.text}")

 

và lấy hóa đơn bằng thư viện này

from quickbooks import QuickBooks
from quickbooks.objects import Invoice

# Khởi tạo máy khách QuickBooks với thông tin đăng nhập
client = QuickBooks(
    sandbox=True,                    # Sử dụng chế độ sandbox để kiểm tra
    consumer_key="your_client_id",   # ID Khách hàng từ Cổng thông tin Nhà phát triển Intuit
    consumer_secret="your_client_secret",  # Bí mật Khách hàng từ Intuit
    access_token="your_access_token",      # access token OAuth 2.0
    access_token_secret="your_access_token_secret",  # bí mật access token OAuth 2.0
    company_id="your_realm_id"       # ID công ty QuickBooks (Realm ID)
)

# Lấy hóa đơn theo ID
invoice = Invoice.get(id=123, qb=client)

# In chi tiết hóa đơn
print(invoice.to_json())  # Hoặc truy cập các thuộc tính như invoice.TotalAmt

 

Bước 3: Cấu hình xác thực

 

QuickBooks sử dụng OAuth 2.0 để truy cập an toàn. Để kết nối ứng dụng Django của bạn, bạn cần triển khai luồng xác thực bằng các chế độ xem dựa trên lớp:
 

  1. Lấy Token: Chuyển hướng người dùng đến URL ủy quyền của QuickBooks để lấy mã ủy quyền, sau đó đổi nó lấy token.
     
  2. Lưu Thông tin đăng nhập: Lưu token một cách an toàn (ví dụ: trong cơ sở dữ liệu hoặc phiên).
     
  3. Thiết lập Client: Sử dụng python-quickbooks để khởi tạo client.
     

Để biết chi tiết thiết lập QuickBooks, hãy tham khảo tài liệu OAuth 2.0 của QuickBooks.

Đây là mã để xử lý quy trình trong ứng dụng Django của bạn:

views.py

import uuid

import requests

from django.views.generic import RedirectView, View
from django.shortcuts import redirect
from django.conf import settings

from quickbooks import QuickBooks


 

# View để bắt đầu luồng OAuth khi nút được nhấp
class QuickBooksAuthView(RedirectView):
    permanent = False
    
    def get_redirect_url(self, *args, **kwargs):
        # Tạo một mã thông báo trạng thái duy nhất để bảo vệ CSRF
        state_token = str(uuid.uuid4())
        self.request.session['state_token'] = state_token
        
        # URL ủy quyền OAuth 2.0 của QuickBooks
        auth_url = (
            "https://appcenter.intuit.com/connect/oauth2"
            "?client_id={}&response_type=code"
            "&scope=com.intuit.quickbooks.accounting"
            "&redirect_uri={}&state={}"
        ).format(
            settings.QB_CLIENT_ID,       # Client ID từ settings.py
            settings.QB_REDIRECT_URI,   # Redirect URI từ settings.py
            state_token                 # Mã thông báo trạng thái để bảo mật
        )
        return auth_url

# View để xử lý URI chuyển hướng (callback) từ QuickBooks
class QuickBooksCallbackView(View):
    def get(self, request, *args, **kwargs):
        # Trích xuất mã và trạng thái từ URL callback
        auth_code = request.GET.get('code')
        state = request.GET.get('state')
        realm_id = request.GET.get('realmId')
        
        # Xác minh mã thông báo trạng thái khớp để ngăn chặn CSRF
        if state != request.session.get('state_token'):
            return redirect('error_page')  # Thay thế bằng URL lỗi của bạn
        
        # Đổi mã ủy quyền lấy token truy cập và token làm mới
        token_url = "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer"
        payload = {
            'grant_type': 'authorization_code',
            'code': auth_code,
            'redirect_uri': settings.QB_REDIRECT_URI,
            'client_id': settings.QB_CLIENT_ID,
            'client_secret': settings.QB_CLIENT_SECRET,
        }
        headers = {'Content-Type': 'application/x-www-form-urlencoded'}
        response = requests.post(token_url, data=payload, headers=headers)
        
        if response.status_code == 200:
            tokens = response.json()
            # Lưu token một cách an toàn (ví dụ: trong phiên hoặc cơ sở dữ liệu)
            request.session['access_token'] = tokens['access_token']
            request.session['refresh_token'] = tokens['refresh_token']
            request.session['realm_id'] = realm_id
            
            # Khởi tạo máy khách QuickBooks
            client = QuickBooks(
                sandbox=True,
                consumer_key=settings.QB_CLIENT_ID,
                consumer_secret=settings.QB_CLIENT_SECRET,
                access_token=tokens['access_token'],
                access_token_secret=tokens.get('access_token_secret', ''),
                company_id=realm_id
            )
            # Lưu client hoặc tiến hành gọi API
            request.session['qb_client'] = client  # Tùy chọn: lưu client đã được tuần tự hóa
        
        return redirect('success_page')  # Thay thế bằng URL thành công của bạn

 

settings.py

QB_CLIENT_ID = 'your_client_id'
QB_CLIENT_SECRET = 'your_client_secret'
QB_REDIRECT_URI = 'http://localhost:8000/callback/'  # Đảm bảo khớp với ứng dụng QuickBooks

 

urls.py

from django.urls import path
from .views import QuickBooksAuthView, QuickBooksCallbackView

urlpatterns = [
    path('auth/', QuickBooksAuthView.as_view(), name='qb_auth'),
    path('callback/', QuickBooksCallbackView.as_view(), name='qb_callback'),
]

 

Bước 4: Đồng bộ dữ liệu với QuickBooks


Sau khi xác thực thành công, ứng dụng Django của bạn giờ đây có thể trao đổi dữ liệu với QuickBooks, chẳng hạn như khách hàng, hóa đơn hoặc thanh toán. Bước này liên quan đến việc tạo ra một luồng liền mạch giữa cơ sở dữ liệu của ứng dụng và API của QuickBooks. Bắt đầu bằng cách định nghĩa các model Django để biểu diễn dữ liệu bạn muốn đồng bộ (ví dụ: model Khách hàng hoặc Hóa đơn). Sau đó, xây dựng các chế độ xem để xử lý các thao tác như đẩy dữ liệu cục bộ lên QuickBooks hoặc kéo các bản cập nhật từ QuickBooks vào ứng dụng của bạn. Ví dụ: bạn có thể tạo một chế độ xem để gửi hóa đơn mới khi người dùng gửi biểu mẫu, hoặc lấy danh sách khách hàng để hiển thị trên bảng điều khiển của bạn. Thư viện python-quickbooks đơn giản hóa điều này bằng cách cho phép bạn làm việc trực tiếp với các đối tượng QuickBooks, đảm bảo tính nhất quán dữ liệu trên cả hai hệ thống.

 

Bước 5: Kiểm thử và triển khai


Trước khi khởi chạy tích hợp của bạn, việc kiểm thử nghiêm ngặt là rất quan trọng. Sử dụng môi trường sandbox của QuickBooks để mô phỏng các kịch bản trong thế giới thực mà không ảnh hưởng đến dữ liệu trực tiếp—kiểm tra việc tạo, cập nhật và truy xuất bản ghi để xác nhận mọi thứ hoạt động như mong đợi. Chú ý đặc biệt đến các trường hợp ngoại lệ, chẳng hạn như token truy cập hết hạn (yêu cầu làm mới) hoặc đạt giới hạn tốc độ API (yêu cầu logic thử lại). Thêm xử lý lỗi vào các chế độ xem của bạn để quản lý các vấn đề này một cách uyển chuyển, cung cấp cho người dùng phản hồi rõ ràng nếu có lỗi xảy ra. Sau khi kiểm thử hoàn tất và ổn định, hãy triển khai ứng dụng của bạn lên môi trường sản xuất, đảm bảo thông tin đăng nhập và URI chuyển hướng của bạn khớp với cài đặt ứng dụng QuickBooks trực tiếp.

 

Kết luận


Tích hợp QuickBooks với Django mở ra một thế giới khả năng tự động hóa tài chính. Bằng cách làm theo các bước này, bạn có thể tạo ra một kết nối liền mạch giữa ứng dụng web và QuickBooks của mình, tiết kiệm thời gian và cải thiện độ chính xác. Cảm thấy tự do để điều chỉnh mã để phù hợp với trường hợp sử dụng cụ thể của bạn!

Tag list:
- QuickBooks API tutorial
- QuickBooks Django Integration
- Integrate QuickBooks Online Django
- Django financial integration
- QuickBooks OAuth Django
- QuickBooks Python integration
- Django QuickBooks API
- QuickBooks Django setup
- Automate Accounting Django
- python-quickbooks Django

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.