TopGit
Đánh giá repo GitHub

Stripe Python Library: SDK Chính Thức Cho API Stripe

stripe/stripe-python
STopGit review image for stripe/stripe-python
Review by Topgit.dev for stripe/stripe-python, with GitHub repository stats and README context.
Nhận định nhanh

Stripe Python Library là SDK Python chính thức cho API Stripe, cài đặt qua pip. Nó bọc các lệnh gọi HTTP tới Stripe trong các class tài nguyên có kiểu dữ liệu, tự động thử lại kèm khóa idempotency, và cung cấp cả client đồng bộ lẫn bất đồng bộ. Hãy dùng ngay khi bạn xử lý thanh toán trong ứng dụng Python, vì tự viết wrapper riêng hiếm khi tốt hơn. Bỏ qua nếu dự án của bạn còn kẹt ở Python 3.8 trở xuống, vì thư viện yêu cầu 3.9 trở lên.

Sao
★ 2.0k
Fork
⑂ 533
Ngôn ngữ
Python
Giấy phép
MIT
Chủ đề
Cập nhật
Aug 2026
Trang chủ
GitHub

Truy Cập API Stripe Bằng Python

Stripe Python Library là một gói Python giúp ứng dụng truy cập API Stripe mà không cần tự viết yêu cầu HTTP. Nó đi kèm các class tài nguyên dựng sẵn cho khách hàng và giao dịch, tự khởi tạo trường dữ liệu từ phản hồi API trả về, điều mà README nói giúp thư viện tương thích với nhiều phiên bản khác nhau của API Stripe. Bạn cấu hình nó bằng khóa bí mật lấy từ Stripe Dashboard, rồi gọi các phương thức tài nguyên thông qua class `StripeClient`.

Các Tính Năng Chính Của SDK

  • Class `StripeClient`, giới thiệu từ v8, gom các lệnh gọi API vào một đối tượng được cấu hình sẵn, thay cho mẫu toàn cục `stripe.api_key` kiểu cũ mà README nói rồi sẽ bị đánh dấu deprecated.
  • Các class tài nguyên có kiểu dữ liệu được tạo từ phản hồi API, nên một đối tượng `Customer` hay `Charge` tự khởi tạo các trường của mình thay vì bạn phải tự phân tích JSON thô.
  • Hỗ trợ bất đồng bộ: mọi phương thức yêu cầu đều có bản thêm hậu tố `_async`, như `retrieve_async`, mặc định dùng `httpx` thay vì `requests` như client đồng bộ.
  • Tự động thử lại qua `max_network_retries`, kích hoạt khi có lỗi kết nối, timeout, hoặc phản hồi HTTP 409, cùng khóa idempotency được tạo tự động để việc thử lại luôn an toàn.
  • HTTP backend có thể thay đổi: `requests`, `httpx`, `aiohttp`, `pycurl`, hoặc `urllib`, thiết lập qua tùy chọn `http_client` trên `StripeClient`.
  • Ghi đè theo từng yêu cầu cho API key, tài khoản kết nối, và phiên bản API Stripe qua tham số `options`, hữu ích cho các nền tảng Connect xử lý nhiều tài khoản.
  • Chú thích kiểu dữ liệu từ v7.1.0, đã kiểm thử với Pyright, hỗ trợ thử nghiệm `Unpack[TypedDict]` trong MyPy.
  • Ghi log yêu cầu tích hợp sẵn qua biến môi trường `STRIPE_LOG` hoặc module `logging` của Python, cùng khả năng đọc mã phản hồi và header thô qua `last_response`.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Bắt Đầu: Cài Đặt

Cài đặt từ PyPI bằng `pip install --upgrade stripe`, hoặc build từ mã nguồn bằng `python -m pip install .`. README ghi Python 3.9 trở lên là mức tối thiểu được hỗ trợ theo Chính sách hỗ trợ phiên bản ngôn ngữ của Stripe; hỗ trợ Python 2.7 kết thúc sau phiên bản 5.5.0, và từ 6.0.0 trở đi thư viện bỏ hoàn toàn Python 2.7. Nếu bạn định dùng client bất đồng bộ mà chưa có sẵn thư viện HTTP hỗ trợ bất đồng bộ nào, `pip install stripe[async]` sẽ cài luôn một thư viện phù hợp, tính năng mà README ghi là mới từ v13.0.1. Các tính năng preview có sẵn qua hậu tố phiên bản riêng: `bX` cho bản xem trước công khai (ví dụ `12.2.0b2`) và `aX` cho bản xem trước riêng tư, cả hai đều cài bằng cách ghim đúng phiên bản với `pip install stripe==<version>`.

Gọi API Bằng Python

Đặt khóa bí mật rồi gọi tài nguyên qua `StripeClient`: `client = StripeClient("sk_test_...")`, sau đó `client.v1.customers.list()` hoặc `client.v1.customers.retrieve("cus_123456789")`. Yêu cầu thất bại sẽ ném ra ngoại lệ mà class của nó cho biết loại lỗi, theo API Reference mà README dẫn tới. Với code bất đồng bộ, thêm hậu tố `_async` vào tên phương thức, ví dụ `await client.v1.customers.retrieve_async("cus_xyz")`, và `.auto_paging_iter()` hoạt động với cả lặp đồng bộ lẫn bất đồng bộ. Bạn cũng có thể bỏ qua hoàn toàn các phương thức định nghĩa sẵn của thư viện bằng `client.raw_request("post", "/v1/beta_endpoint", ...)`, có từ v11, để gọi thẳng tới endpoint chưa tài liệu hóa hoặc đang ở giai đoạn beta.

Điểm mạnh

  • Do chính Stripe xuất bản và duy trì, nên bám sát các tài nguyên và cách đánh phiên bản của API thật, thay vì một client bên thứ ba dựng lại theo suy đoán.
  • Tự động thử lại kèm khóa idempotency được tạo sẵn, giúp lỗi mạng tạm thời không có nguy cơ tạo ra giao dịch trùng.
  • Hỗ trợ cả client đồng bộ lẫn bất đồng bộ ngay trong thư viện, với HTTP backend có thể đổi giữa `requests`, `httpx`, `aiohttp`, `pycurl`, và `urllib`.
  • Chú thích kiểu dữ liệu, có từ v7.1.0, hoạt động sẵn với Pyright, giúp phát hiện lỗi gõ sai tên trường tài nguyên trước khi gọi tới API.
  • Giấy phép MIT, nên không có vướng mắc về tương thích giấy phép khi dùng cho mục đích thương mại.

Lưu Ý Và Giới Hạn

  • Mẫu toàn cục kiểu cũ (`stripe.api_key = ...`) vẫn hoạt động, nhưng README nói sẽ sớm bị đánh dấu deprecated, nên dự án mới theo tài liệu hiện tại cần học `StripeClient` thay vì các ví dụ cũ vẫn còn trôi nổi trên mạng.
  • Chú thích kiểu dữ liệu không nằm trong quy tắc semantic versioning; README cảnh báo một bản nâng cấp minor version có thể tạo ra lỗi kiểu dữ liệu mới dù hành vi lúc chạy không đổi.
  • Telemetry về độ trễ yêu cầu và mức sử dụng tính năng được gửi về Stripe theo mặc định. Bạn phải chủ động đặt `stripe.enable_telemetry = False` để tắt.
  • Các bản SDK preview công khai và riêng tư, hậu tố phiên bản `bX`/`aX`, có thể có thay đổi phá vỡ tương thích giữa hai bản preview mà không tăng major version, theo README, nên việc ghim đúng phiên bản rất quan trọng nếu bạn dùng chúng.
  • Đóng góp từ người đóng góp lần đầu hiện đang tạm dừng, theo README, giới hạn cách bạn có thể tham gia ngoài việc báo issue.

Các Cách Khác Để Tích Hợp Stripe

stripe-ruby — SDK chính thức của Stripe cho Ruby, đã có review trên TopGit, dành cho đội xây dựng trên Rails thay vì Python.stripe-ios — SDK chính thức của Stripe cho ứng dụng iOS gốc, đã có trên TopGit, dành cho tích hợp trên di động thay vì backend Python.requests và tự gọi HTTP thô — tự viết lệnh gọi tới REST API của Stripe bằng một thư viện HTTP thông thường, nếu bạn muốn tránh phụ thuộc vào các class tài nguyên có kiểu dữ liệu của Stripe.PayPal Python SDK — client Python cho một cổng thanh toán khác, đáng cân nhắc nếu bạn chưa gắn chặt với riêng Stripe.

Câu Hỏi Thường Gặp Về Stripe Python Library

stripe-python hỗ trợ những phiên bản Python nào?

Stripe Python Library hỗ trợ Python 3.9 trở lên theo Chính sách hỗ trợ phiên bản ngôn ngữ của Stripe. Hỗ trợ Python 2.7 kết thúc sau phiên bản 5.5.0, và bị bỏ hoàn toàn từ phiên bản 6.0.0.

Làm sao để xử lý lỗi với thư viện Stripe Python?

Stripe Python Library ném ra một ngoại lệ cho mỗi yêu cầu thất bại, và class của ngoại lệ đó cho biết loại lỗi đã xảy ra. README dẫn tới tài liệu xử lý lỗi API của Stripe để xem đầy đủ các class ngoại lệ cần bắt.

Tôi có thể dùng thư viện Stripe Python cho các thao tác bất đồng bộ không?

Stripe Python Library hỗ trợ thao tác bất đồng bộ qua các phương thức có hậu tố `_async`, ví dụ `retrieve_async`. Thư viện dùng `httpx` làm HTTP client mặc định cho yêu cầu bất đồng bộ, còn yêu cầu đồng bộ mặc định dùng `requests`.

Làm sao để cấu hình proxy cho yêu cầu của Stripe Python?

Stripe Python Library nhận tùy chọn `proxy` trên `StripeClient`, ví dụ `StripeClient("sk_test_...", proxy="https://user:[email protected]:1234")`. Cách này định tuyến mọi yêu cầu từ client đó qua địa chỉ proxy đã cho.

Thư viện Stripe Python có gửi dữ liệu telemetry không?

Stripe Python Library gửi telemetry về Stripe theo mặc định, bao gồm độ trễ yêu cầu và mức sử dụng tính năng, điều mà README nói giúp Stripe cải thiện hiệu năng API nói chung. Đặt `stripe.enable_telemetry = False` sẽ tắt tính năng này.

Giấy phép của thư viện Stripe Python là gì?

Stripe Python Library được phát hành theo giấy phép MIT, như được ghi trên repository GitHub của nó.

Vấn đề mà Stripe Python Library giải quyết

Gọi thẳng API Stripe từ Python nghĩa là bạn phải tự xây HTTP client của riêng mình: ký yêu cầu, phân tích JSON thành đối tượng dùng được, tự thử lại an toàn khi yêu cầu thất bại, và theo kịp một API có phiên bản thay đổi theo thời gian. Đó là việc phải làm lại tốn công cho từng dự án. Stripe Python Library tồn tại để nhà phát triển Python không phải làm vậy. README mô tả các class tài nguyên tự khởi tạo từ phản hồi API chính là để thư viện tiếp tục hoạt động qua nhiều phiên bản API Stripe khác nhau mà bạn không phải viết lại code client mỗi khi Stripe thay đổi.

Trường hợp sử dụng tốt nhất

  • Xây dựng backend Django hoặc Flask tạo khách hàng, giao dịch, hoặc gói đăng ký qua API Stripe mà không cần tự viết code gọi HTTP thô.
  • Thêm xử lý thanh toán bất đồng bộ vào dịch vụ dựa trên asyncio, dùng hậu tố phương thức `_async` và client bất đồng bộ chạy trên `httpx`.
  • Chạy trên nền tảng Connect cần gọi API thay mặt các tài khoản đã kết nối, dùng tùy chọn `stripe_account` theo từng yêu cầu.
  • Thử nghiệm sớm các tính năng preview bằng cách cài phiên bản `bX` (xem trước công khai) hoặc `aX` (xem trước riêng tư) được ghim đúng bản phát hành.
  • Debug vấn đề tích hợp bằng cách bật `STRIPE_LOG=debug` hoặc đọc `last_response.code` và `last_response.headers` từ bất kỳ tài nguyên nào trả về.

Ai nên dùng — và ai nên bỏ qua

Hãy thử Stripe Python Library nếu bạn đang xây ứng dụng Python, bằng Django, Flask, FastAPI, hay một script thông thường, cần tạo giao dịch, quản lý khách hàng, hoặc xử lý gói đăng ký qua API Stripe; các tài nguyên có kiểu dữ liệu và cơ chế thử lại tích hợp sẵn giúp bạn khỏi phải tự xây lại lớp đó. Bỏ qua nếu dự án của bạn vẫn ở Python 3.8 trở xuống, vì README yêu cầu 3.9 trở lên, hoặc nếu bạn cần cụ thể SDK cho Ruby hay iOS: xem stripe-ruby hoặc stripe-ios.

Repo liên quan

Nguồn & ghi công

Thông tin lấy từ repository GitHub stripe/stripe-python và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 14 thg 8, 2026Đánh giá bởi Henry
Về TopGit

Vẫn đang phân vân về stripe-python?

Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về stripe-python.

GitHub