=== Pay2S Payment Gateway for Woo ===
 - Author: Pay2S
 - Contributors: pay2s
 - Tags: woocommerce, payment gateway, thanh toan, ngan hang, hoa don dien tu
 - Requires WooCommerce at least: 2.1
 - Stable Tag: 1.2.2
 - Version: 1.2.2
 - Tested up to: 6.8
 - Requires at least: 5.6
 - Requires PHP: 7.2
 - Author URI: https://pay2s.vn
 - Plugin URI: https://docs.pay2s.vn/api/tich-hop-ky-thuat.html
 - License: GPLv3.0
 - License URI: http://www.gnu.org/licenses/gpl-3.0.html

Tích hợp cổng thanh toán Pay2S với WooCommerce.

== Description ==

Cổng thanh toán Pay2S giúp bạn tích hợp các giải pháp thanh toán với nền tảng WooCommerce. Với plugin này, bạn có thể dễ dàng thiết lập và cấu hình Pay2S để thực hiện thanh toán trực tuyến.

== Installation ==
Cấu hình plugin trên Wordpress và cấu hình trên Pay2s. Xem hướng dẫn tại https://docs.pay2s.vn/general/dang-ky-pay2s.html

== Screenshots ==
1. Cài đặt plugin 
2. Cấu hình các tùy chọn trong WooCommerce Settings > Payment Gateways > Pay2S.
3. Bật phương thức chuyển khoản mới 
4. Sau khi hoàn tất đơn hàng, mã QR sẽ được hiển thị lên màn hình chờ thanh toán
5. Sau khi thanh toán thành công, khách hàng sẽ chờ khoảng từ 5 đến 10 giây để hệ thống xác nhận thanh toán và chuyển trạng thái đơn hàng nếu nhận đủ tiền
6. Đơn hàng sẽ chuyển trạng thái đã hoàn thành sau khi hệ thống xác nhận thành công
7. Hiển thị thông tin chi tiết của đơn hàng khi xác nhận thanh toán thành công.

== CHANGELOG ==
09.10.2026 - Phiên bản 1.2.2
- Thêm tùy chọn form yêu cầu xuất hóa đơn tại checkout, mặc định tắt.
- Khách chọn lấy hóa đơn mới hiện loại khách, họ tên, tên đơn vị/MST doanh nghiệp, địa chỉ và email hóa đơn.
- Kiểm tra trường bắt buộc phía server; không tự đổi yêu cầu xuất hóa đơn thiếu dữ liệu thành người tiêu dùng.
- Lưu dữ liệu riêng theo đơn qua WC_Order, hiển thị cho quản trị viên và ưu tiên khi gửi metadata V2.
- Giữ nguyên fallback meta key của plugin VAT khác khi khách không dùng form Pay2S.
- Hỗ trợ form checkout cổ điển và Additional Checkout Fields của Checkout Blocks (WooCommerce 9.9+).
- Bổ sung đăng ký phương thức thanh toán Pay2S cho Checkout Blocks.

18.08.2026 - Phiên bản 1.2.1
- Giữ MST/CCCD khách đã nhập trong dữ liệu hóa đơn kể cả khi đơn WooCommerce thiếu họ tên hoặc địa chỉ thanh toán.
- Không tự chuyển đơn có MST/CCCD thành "Bán cho người tiêu dùng"; Pay2S có thể tiếp tục tra cứu và bổ sung thông tin người mua.

01.06.2025
- Phát hành phiên bản đầu tiên.
14.05.2026
- Cập nhật hỗ trợ phiên PHP 8.2 trở lên.

14.08.2026 - Phiên bản 1.2.0
- Bổ sung tùy chọn gửi dữ liệu hóa đơn điện tử; mặc định tắt để không ảnh hưởng website đang dùng module cũ.
- Khi bật, module dùng chữ ký V2 và gửi extraData Base64 theo chuẩn Pay2S.
- Gửi invoiceOptions.source=woocommerce và requested=true.
- Sản phẩm ưu tiên mã WOO_SKU_{sku}; nếu không có SKU dùng WOO_VARIATION_{id} hoặc WOO_PRODUCT_{id}.
- Gửi mã nhóm WOO_PRODUCT_{parent_id} hoặc WOO_CATEGORY_{category_id}, cùng externalItemId để truy vết dòng đơn.
- Giá hàng hóa lấy từ chính dòng đơn sau giảm giá, không lấy giá hiện tại trong danh mục.
- Bao gồm thuế, phí vận chuyển, phụ phí và tự cân chỉnh sai số làm tròn theo tổng tiền đơn hàng.
- Thông tin người mua lấy từ billing address. Nếu thiếu họ tên hoặc địa chỉ, hóa đơn dùng “Bán cho người tiêu dùng”.

== Hóa đơn điện tử Pay2S ==

FORM HÓA ĐƠN (1.2.2)
WooCommerce > Cài đặt > Thanh toán > Pay2S:
1. Website chưa có ô VAT: bật "Hiển thị form yêu cầu xuất hóa đơn tại checkout".
2. Bật riêng "Gửi dữ liệu đơn hàng để lập hóa đơn điện tử trên Pay2S" để chuyển dữ liệu sang Pay2S.
   Nếu chỉ bật form, thông tin vẫn lưu trên đơn WooCommerce nhưng không gửi hóa đơn sang Pay2S.
3. Website đã có plugin VAT: giữ form Pay2S tắt, tiếp tục cấu hình meta key như trước.
4. Checkout Blocks cần WooCommerce 9.9 trở lên và block Order Information trong Checkout.
   Phiên bản WooCommerce cũ sẽ có thông báo trong admin; dùng checkout cổ điển hoặc nâng WooCommerce.

Khách chọn cá nhân cần họ tên, địa chỉ và email. Doanh nghiệp cần thêm tên đơn vị và MST.
Email classic được điền sẵn từ email thanh toán khi trống; Blocks nhập email hóa đơn riêng.
MST chỉ kiểm tra định dạng, chưa có chức năng tra cứu tên/địa chỉ doanh nghiệp tự động.
Không chọn lấy hóa đơn thì giữ luồng billing/meta key cũ; không thay đổi quy tắc requested=true khi gửi metadata.
Đổi từ doanh nghiệp sang cá nhân hoặc bỏ chọn sẽ không gửi các giá trị doanh nghiệp bị ẩn.
Form áp dụng tại checkout của shop; chỉ thanh toán qua Pay2S mới gửi metadata sang Pay2S.
Dữ liệu riêng lưu tại order meta _pay2s_invoice. Không thay đổi billing/shipping hay địa chỉ tài khoản.
Tự động phát hành thực tế vẫn phụ thuộc cấu hình và nhà cung cấp hóa đơn ở Pay2S.

Nâng cấp: chép toàn bộ thư mục pay2s-gateway đè thư mục plugin cùng tên trong wp-content/plugins,
hoặc cài gói ZIP qua WordPress và chọn thay thế bản cũ. Không xóa thiết lập đã lưu.
Sau cập nhật xóa cache trang checkout và thử đơn test cả chọn/không chọn hóa đơn.

Tham khảo kỹ thuật:
https://developer.woocommerce.com/docs/block-development/extensible-blocks/cart-and-checkout-blocks/additional-checkout-fields/
https://developer.woocommerce.com/docs/block-development/tutorials/how-to-conditional-additional-fields/

Trong WooCommerce > Cài đặt > Thanh toán > Pay2S, bật:

Gửi dữ liệu đơn hàng để lập hóa đơn điện tử trên Pay2S

Khi tùy chọn này tắt, module tiếp tục gửi request V1 giống phiên bản cũ. Khi bật, mọi đơn thanh toán qua Pay2S được đánh dấu requested=true để xuất hiện trong hàng chờ/tự động hóa HĐĐT.

Có thể cấu hình danh sách order meta key dùng lấy mã số thuế và CCCD. Module đọc lần lượt từ trái sang phải và dùng giá trị đầu tiên có dữ liệu. Ví dụ:

_billing_tax_code,billing_tax_code,_billing_vat_number

Trên Pay2S, tạo quy tắc hàng hóa bằng một trong các mã module gửi lên, ví dụ:

WOO_SKU_VPS-PRO
WOO_VARIATION_125
WOO_PRODUCT_80
WOO_CATEGORY_12

SKU/product/variation là khóa khớp sản phẩm. WOO_ORDER_LINE_{id} chỉ dùng để đối chiếu ngược dòng đơn, không dùng làm quy tắc hàng hóa.
