Kinh nghiệm lập trình website mã nguồn mở PHP

Hoạt động kinh doanh trong Magento 2

Xin chào các bạn, hôm nay chúng ta cùng tìm hiểu một vài cài đặt tuy nhỏ – hay bị lập trình viên bỏ quên, nhưng không thể thiếu đối với 1 trang web thương mại điện tử (TMDT) chính thống, như thuế, thanh toán, giao vận, mua hàng, báo cáo… Gọi chung là Hoạt động kinh doanh (business Operations).
Bài viết sẽ tiến hành so sánh các trang TMDT trong nước và thế giới, hy vọng mang lại cho các bạn nhiều góc nhìn mới mẻ.

Cài đặt thuế

Trong Magento, thuế (tax) gồm: Tax management, Tax classes, Tax rates, Tax rules, Tax configuration, calculation options, shipping origin, configuring tax display.
(hoa mày chóng mặt)
Nhiều quá, nhưng đừng lo, tôi sẽ không copy lại các khái niệm buồn ngủ, thay vào đó chúng ta sẽ tìm hiểu về tax qua các bài học thực tế.
Sau khi quan sát các trang TMDT tại Việt Nam, tôi nhận thấy họ cấu hình thuế cách đơn giản nhất:
– Giá nhập trong Admin là giá cuối cùng sẽ bán, đã bao gồm thuế VAT (thông thường là 10%) trong đó, khi đó họ chỉ cần hiển thị ngoài giao diện giá cuối + dòng chữ Đã bao gồm VAT

Lúc này, người mua sẽ trả đúng số tiền hiển thị. Số tiền đó đối với người bán bao gồm: tiền vốn mua hàng + tiền thuế + tiền lời.

Nếu bạn muốn áp dụng cấu hình này bằng Magento 2, bạn sẽ thực hiện như sau:
1. Chỉnh Magento phần giá sản phẩm nhập vào đã bao gồm tax. Vào Stores > Configuration > Sales > Tax > Calculation Settings > Catalog Prices = Including Tax
2. Đảm bảo cấu hình Tax ứng với khu vực mua hàng có giá trị là 0%. Vào Stores > Tax Zones and Rates

Tại vì giá product đã có tax, nên ta không cần Magento tính toán hay hiển thị tax gì cả.
3. Hiện dòng chữ Đã bao gồm VAT trong phần Cart Summary
Copy template từ: vendor/magento/module-tax/view/frontend/web/template/checkout/cart/totals/grand-total.html
Tới custom theme: app/design/custom-theme/Magento_Tax/web/template/checkout/cart/totals/grand-total.html
Chúng ta sẽ tìm hiểu kỹ phần này ở chương 4 – Lập trình theme.

Với 3 bước đơn giản trên, ta đã xử lý xong phần thuế giống với các trang TMDT lớn ở Việt Nam đang dùng, tuy nhiên trong các trường hợp đặc biệt, ở các thị trường quốc tế bạn bắt buộc phải hiển thị đầy đủ các loại thuế.
Ví dụ như ở Mỹ, mỗi bang của nó lại có mức thuế khác nhau: New York 4%, Texas 6.25%, California 7.25%… Do đó nếu giả sử ta có cửa hàng bán phân bò và muốn xuất khẩu sang Mỹ, thì cách làm bên trên phá sản.
Giải pháp lúc này là tạo ra Tax Rates ứng với từng Tax Zone theo State/Region

* Bạn có thể xem toàn bộ thuế cho từng bang ở Mỹ tại đây: https://www.taxjar.com/states/
* Thay vì nhập vào 50 tax rates cho 50 bang, ta có thể dùng chức năng Import Tax Rates: System > Data Transfer > Import/Export Tax Rates
* File CSV 50 tax rates của Mỹ: http://rricketts.com/magento-us-tax-csv-file-all-50-states/
* Ở Việt Nam, không phải lúc nào thuể VAT cũng cố định 10%, có 1 số sản phẩm VAT 0% như phân bón, thức ăn gia súc, giông vật nuôi. VAT 5% như sản phẩm y tế, giáo dục, dụng cụ học tập. Sản phẩm VAT 20% như vàng bạc đá quý.

Thanh toán và giao vận


Magento payment provider gateway

Cơ chế thanh toán trong Magento tích hợp các cổng thanh toán trực tuyến về cơ bản tương tự với các hệ thống TMDT khác. Gồm 3 bước:

Bên phía Magento sau khi tạo ra Order, sẽ gửi thông tin tới cổng thanh toán (Gateway) theo chuẩn định sẵn. (Gateway ở Việt Nam hiện nay có: OnePay, 123Pay của VNG, Napas)
Cổng thanh toán sẽ lo nhiệm vụ thực hiện giao dịch với nhà cung ứng dịch vụ (Processor), để thanh toán tiền, trừ tiền tài khoản… (Nếu thanh toán qua ATM nội địa thì nhà cung ứng là các ngân hàng)

Tôi sẽ có các bài viết tích hợp cổng thành toán OnePay, 123Pay, Napas vào Magento trong Chương 3, mời các bạn theo dõi.
Trong giới hạn của bài viết này, chúng ta chỉ tìm hiểu những khái niệm cơ bản trong payment của Magento

Các thao tác Magento hỗ trợ thanh toán trực tuyến:

  • authorize gọi là ủy quyền giao dịch (authorization transaction), số tiền thanh toán sẽ “giữ chỗ” trong tài khoản của khách hàng, đảm bảo trong tài khoản đó có số tiền này để giao dịch, chưa tiến hành chuyển tiền qua tài khoản của thương nhân.
  • capture tiến hành chuyển tiền qua tài khoản thương nhân số tiền đã authorize trước đó, bước này đi kèm bước trên
  • sale thay vì phải xử lý 2 bước thì sale cho phép tự động authorize, tiếp theo tự capture, tiền được chuyển qua thương nhân ngay sau đó
  • void hủy giao dịch chuyển tiền từ tài khoản khách hàng
  • refund trả lại vào tài khoản khách hàng số tiền đã chuyển qua thương nhân

Những khái niệm này nên được thuộc nằm lòng đối với những người đang làm việc với Magento.
Nhờ đó bạn có thể trả lời được những câu hỏi kiểu như thế này: https://www.magentovietnam.com/threads/hỏi-paypal-payment-action-so-sánh-2-payment-action-sale-và-authorization.4738/

Vận chuyển – shipping

Mặc định, Magento chưa có hỗ trợ các tỉnh thành Việt Nam, điều đó có nghĩa khi khách hàng mua sản phẩm, tới bước nhập địa chỉ giao hàng, khách chỉ nhập được tỉnh thành trong ô textbox. Muốn cho khách hàng có thể chọn lựa danh sách tỉnh thành bằng select, bạn phải insert vào database, bảng directory_country_regiondirectory_country_region_name.

Tôi đã cung cấp sẵn file sql để support tỉnh thành cho Việt Nam (có thể sử dụng được ở magento 1 và 2)
link down
Hình ảnh sau khi thêm tỉnh thành vào database magento

Gói quà (EE only)

Chức năng gói quà sản phẩm trong đơn hàng là 1 tính năng rất hay trên các trang TMDT nổi tiếng, trong Magento cũng có tính năng này nhưng chỉ có trong phiên bản Enterprise Editor (thu phí)
Sau khi cấu hình bật chức năng gói quà lên thì khách hàng trong trang Cart sẽ chọn được mẫu gói quà:

Hoạt động kinh doanh trong Magento 2

Mục lục loạt bài Magento 2

Hoạt động kinh doanh trong Magento 2
Đánh giá bài viết

2 phản hồi

  1. Bài viết của bạn rất hay và chi tiết, dễ hiểu. Mình đang đợi chương 3 có bài tích hợp cổng thanh toán vào Magento 2.
    Và bạn có thể viết 1 bài hướng dẫn tích hợp API của các bên vận chuyển ở VN như: GHTK, VNPT,….được không nhỉ?

  2. Rất hay, ngóng bài “Tích hợp cổng thành toán OnePay, 123Pay, Napas vào Magento 2” trong Chương 3. Bạn có thể viết thêm 1 bài về việc lấy API từ một nguồn dữ liệu khác (ERP chẳng hạn) được không nhỉ? Thanks chủ thớt.

Gửi phản hồi

Your email address will not be published. Required fields are marked *