> For the complete documentation index, see [llms.txt](https://docs.loomgate.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.loomgate.io/integrations/woocommerce.md).

# WooCommerce

Nhận thanh toán thẻ trên cửa hàng WooCommerce bằng plugin Loomgate for WooCommerce.

Plugin **Loomgate for WooCommerce** thêm phương thức thanh toán thẻ vào WooCommerce, cho cả checkout cổ điển lẫn Cart & Checkout Blocks. Không cần viết code.

## Yêu cầu

| Thành phần       | Tối thiểu                                                                    |
| ---------------- | ---------------------------------------------------------------------------- |
| WordPress        | 6.3                                                                          |
| WooCommerce      | 8.3 (hỗ trợ HPOS)                                                            |
| PHP              | 7.4                                                                          |
| Tiền tệ cửa hàng | USD hoặc EUR, **đúng 2 chữ số thập phân** (WooCommerce > Settings > General) |
| Website          | Chạy HTTPS                                                                   |

Thiếu điều kiện nào thì phương thức tự ẩn khỏi checkout và trang quản trị hiện cảnh báo.

## Cài đặt

{% stepper %}
{% step %}

### Cài plugin

Tải file zip của plugin (do Loomgate cung cấp) lên **Plugins > Add New > Upload Plugin** và kích hoạt. WooCommerce phải được kích hoạt trước.
{% endstep %}

{% step %}

### Điền key

Vào **WooCommerce > Settings > Payments > Loomgate for WooCommerce**:

| Ô                   | Giá trị                                                             |
| ------------------- | ------------------------------------------------------------------- |
| API base URL        | Để trống (= `https://api.loomgate.io`)                              |
| Publishable key     | `pk_live_…`                                                         |
| Secret key          | `sk_live_…` (không bao giờ hiện lại; để trống khi lưu = giữ key cũ) |
| Title / Description | Chữ người mua thấy, mặc định "Credit or debit card"                 |
| loomgate.js URL     | Để trống (= API base URL + `/partner/v1/loomgate.js`)               |
| {% endstep %}       |                                                                     |

{% step %}

### Tạo webhook endpoint

Trong dashboard merchant, mục **Webhook**, thêm endpoint với URL:

```
https://<cửa-hàng-của-bạn>/wp-json/loomgate/v1/webhook
```

Để trống phần chọn sự kiện (nhận tất cả). Sao chép **ID endpoint** (`we_…`) và dán vào ô **Webhook endpoint id** của plugin.
{% endstep %}

{% step %}

### Bật và lưu

Bật phương thức thanh toán, lưu cài đặt, rồi đặt thử một đơn nhỏ.
{% endstep %}
{% endstepper %}

## Plugin làm gì

* **Phí người mua trả**: nếu tài khoản của bạn để người mua chịu phí, giỏ hàng có thêm một dòng phí. Số tiền trừ thẻ luôn bằng đúng tổng đơn người mua đã xem.
* **Chi tiết giao dịch**: plugin gửi mặt hàng, phí ship, thuế, giảm giá, tên người mua, số đơn và địa chỉ giao hàng (đơn không có địa chỉ giao hàng thì dùng địa chỉ thanh toán). Giỏ chỉ gồm sản phẩm ảo hoặc tải về được tính là hàng phi vật lý.
* **Trạng thái đơn**: đơn chuyển sang đã thanh toán khi Loomgate xác nhận qua webhook (trang "Order received" cũng hỏi lại một lần). Thẻ bị từ chối thì đơn giữ `pending` và người mua thử thẻ khác.
* **Hoàn tiền** ngay trong màn hình đơn hàng (một phần hoặc toàn bộ phần còn hoàn được). Phí không được hoàn, nên hoàn trọn tổng đơn (gồm dòng phí người mua trả) bị từ chối kèm số tối đa có thể hoàn. Kết quả cuối cùng được ghi chú vào đơn khi webhook tới.

## Thông báo người mua có thể thấy

| Thông báo                                                        | Nghĩa                                                                                                         |
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| The order total changed. Please review your order and try again. | Tổng đơn đổi sau khi form thẻ được tải (đổi phí ship, mã giảm giá…). Chưa trừ tiền; form tải lại với tổng mới |
| This payment method is not available for this order.             | Tài khoản chưa được bán hàng phi vật lý, hoặc đơn thiếu thông tin bắt buộc                                    |

## Xử lý sự cố

* **Không thấy phương thức ở checkout**: kiểm tra đã điền đủ hai key, tiền tệ là USD/EUR với 2 chữ số thập phân. Ở trang thanh toán lại đơn (order-pay), khi người mua chịu phí, chỉ đơn có sẵn dòng phí từ lúc đặt mới trả được bằng Loomgate for WooCommerce.
* **Đơn không tự chuyển sang đã thanh toán**: plugin bảo mật chặn REST API cho khách vô danh sẽ chặn luôn webhook. Cho phép route `/wp-json/loomgate/v1/webhook`, và xem lịch sử gửi trong mục **Webhook** của dashboard.
* **Hoàn tiền báo "may or may not have been made"**: kết quả chưa rõ. Xem refund của giao dịch trong dashboard trước; nếu đã có, ghi nhận bằng nút **Refund manually** của WooCommerce thay vì bấm lại, để tránh hoàn hai lần.

## Quyền riêng tư

Plugin gửi cho Loomgate thông tin đơn hàng (mặt hàng, tên, email, địa chỉ) và `loomgate.js` thu dữ liệu thiết bị để chống gian lận. Cập nhật chính sách quyền riêng tư của cửa hàng cho phù hợp.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.loomgate.io/integrations/woocommerce.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
