Thông Báo Quan Trọng: Hướng Dẫn Cập Nhật Định Dạng URL Trang Thanh Toán và Đơn Hàng
Định dạng URL cho các trang thanh toán và trang trạng thái đơn hàng đang được cập nhật: phần ID cửa hàng (storeId) sẽ bị loại bỏ khỏi đường dẫn URL, tạo cho luồng thanh toán và đặt hàng một đường dẫn tài nguyên độc lập riêng thay vì chia sẻ tài nguyên với các trang cửa hàng khác. Điều này giảm thiểu ảnh hưởng đến quá trình thanh toán khi lưu lượng truy cập tăng đột biến trong các chương trình khuyến mãi lớn hoặc khi các trang cửa hàng khác gặp sự cố.
SHOPLINE sẽ chuyển đổi hoàn toàn URL trang thanh toán và đơn hàng cho tất cả các cửa hàng vào ngày 19 tháng 9 năm 2026, sau thời điểm này định dạng URL sẽ không thể quay lại phiên bản trước. Hầu hết các cửa hàng không cần thực hiện hành động nào, chỉ khi ứng dụng mã tùy chỉnh, mẫu giao diện, ứng dụng, chuyển hướng 301, API mở hoặc hệ thống bên thứ ba của bạn phân tích hoặc phụ thuộc vào đường dẫn URL cũ thì bạn hoặc nhà cung cấp dịch vụ của bạn nên tham khảo hướng dẫn này để hoàn thành việc điều chỉnh kỹ thuật.
| Quan trọng: Việc truy cập khách hàng bình thường, thanh toán và điều hướng trang không bị ảnh hưởng. Các liên kết theo định dạng cũ sẽ tự động chuyển hướng đến URL mới, bạn không cần phải cập nhật thủ công bất kỳ liên kết nào bạn đã gửi. |
1. Lợi ích chính của việc cập nhật định dạng URL
Cập nhật liên kết thanh toán này mang lại cho các trang thanh toán và đơn hàng một đường dẫn tài nguyên ổn định, riêng biệt, tách biệt khỏi lưu lượng và sự cố của các trang cửa hàng thông thường. Ngay cả khi lưu lượng tăng đột biến do các chương trình khuyến mãi lớn hoặc khi các trang cửa hàng khác gặp sự cố, trang thanh toán vẫn giữ được độ tin cậy riêng, giúp người mua hoàn tất thanh toán mượt mà hơn và giảm nguy cơ đơn hàng bị gián đoạn hoặc mất. Đồng thời, các liên kết lịch sử vẫn hoạt động thông qua chuyển hướng tự động, vì vậy các email marketing, email phục hồi giỏ hàng và liên kết đơn hàng bạn đã gửi trước đó không cần phải phát hành lại ngay lập tức.
2. Ảnh hưởng của việc cập nhật định dạng
Cập nhật này áp dụng cho URL trang thanh toán và trang trạng thái đơn hàng của tất cả các cửa hàng. Phần ID cửa hàng trước đây là một phần của URL sẽ bị loại bỏ khỏi đường dẫn, chỉ giữ lại thông tin cần thiết cho việc thanh toán hoặc tra cứu đơn hàng. Ví dụ, URL trang thanh toán sẽ thay đổi từ:
Trước:
https://{store domain}/1234567890/checkouts/{checkoutToken}
└────┬────┘
storeId, bị loại bỏ trong cập nhật nàySau:
https://{store domain}/checkouts/{checkoutToken}
Việc bạn hoặc nhà cung cấp dịch vụ cần điều chỉnh hay không phụ thuộc vào cách mã của bạn sử dụng các URL này, không phải trang nào nó truy cập:
- Cần điều chỉnh: Mã của bạn phân tích nội dung từ các URL trang này, ví dụ, xác định loại trang, trích xuất storeId hoặc trích xuất checkoutToken. Loại mã này có thể lấy giá trị không chính xác sau khi thay đổi.
- Không cần hành động: Bạn chỉ nhận liên kết đầy đủ do nền tảng cung cấp và chuyển hướng trực tiếp, không phân tích gì từ liên kết. Trường hợp này không bị ảnh hưởng.
Nếu mã tùy chỉnh, chủ đề, ứng dụng, chuyển hướng 301 hoặc tích hợp bên thứ ba của bạn phân tích hoặc phụ thuộc vào đường dẫn URL cũ, bạn sẽ cần điều chỉnh, xem "4. Các trường hợp cần điều chỉnh" để biết phân tích chi tiết theo từng loại.
3. So sánh Đường dẫn Đầy đủ
Bảng dưới đây liệt kê định dạng đường dẫn trước và sau cho từng trang. Mỗi hàng đều thay đổi lần này ngoại trừ hàng được đánh dấu "Không thay đổi lần này."
| Trang | Trước | Sau |
| Trang thanh toán (bao gồm cả trang thanh toán chính) | |
|
| Trang thanh toán (Trang cảm ơn) | |
|
| Trang trạng thái đơn hàng | |
|
| Trang xử lý | |
|
| Trang vấn đề tồn kho | |
|
| Trang giới hạn tốc độ | |
|
| Trang lỗi (thanh toán) | |
|
| Trang lỗi (đơn hàng) | |
|
| Trang liên kết lại đăng ký | |
Không bao gồm storeID, không thay đổi |
Cách lấy storeId khi bạn cần:
- Mã tùy chỉnh cửa hàng: Đọc nó từ đối tượng toàn cục được nền tảng chèn vào, chẳng hạn như window.Shopline.storeId (xem "Hướng dẫn chính thức").
- Ứng dụng Nền tảng Mở: Lấy trường storeId từ ngữ cảnh cài đặt ứng dụng hoặc phản hồi API, xem "Tài liệu Nền tảng Mở" cho các điểm cuối liên quan.
| Lưu ý: Sau thay đổi này, đoạn storeId sẽ bị loại bỏ khỏi URL trang. Không phân tích storeId từ URL. |
4. Các Tình Huống Cần Thích Ứng
Trước tiên xác định mã của bạn thuộc loại nào — ứng dụng Nền tảng Mở hay mã tùy chỉnh cửa hàng? Sau đó kiểm tra với bảng tương ứng bên dưới.
4.1. Ứng Dụng Nền Tảng Mở
| Tình huống | Bị ảnh hưởng? | Cách xử lý |
| Xác định xem trang hiện tại có phải trang thanh toán / trang trạng thái đơn hàng từ URL trang | Bị ảnh hưởng | Chuyển sang khớp với cả định dạng cũ và mới (xem "4.4 Ví dụ mã: Ví dụ 1") |
| Lấy storeId từ URL trang | Bị ảnh hưởng | Lấy từ ngữ cảnh ứng dụng / phản hồi API thay vì phân tích từ URL (xem "4.4 Ví dụ mã: Ví dụ 2") |
| Lấy checkoutToken / orderSeq từ URL trang | Bị ảnh hưởng | Không lấy từ URL. Lấy định danh qua API Nền tảng Mở; xem tài liệu Nền tảng Mở. Với các tình huống chưa được đề cập, gửi yêu cầu hỗ trợ Nền tảng Mở |
| Phân tích các trường URL như checkout_url trả về bởi webhook/API để lấy giá trị | Bị ảnh hưởng | Trường này chỉ dùng để chuyển hướng, không phân tích giá trị từ nó. Với các trường như storeId hoặc orderSeq, kiểm tra tài liệu Nền tảng Mở cho điểm cuối liên quan; với tình huống chưa được đề cập, gửi yêu cầu hỗ trợ |
| Tự xây dựng liên kết trang thanh toán/đơn hàng | Bị ảnh hưởng | Dùng URL đầy đủ trả về từ API Nền tảng Mở thay vì tự xây dựng đường dẫn (xem "4.4 Ví dụ mã: Ví dụ 3") |
| Chỉ nhận liên kết đầy đủ từ nền tảng và chuyển hướng / hiển thị | Không bị ảnh hưởng | Không cần hành động |
| Gọi các điểm cuối OpenAPI của nền tảng (/api/...) | Không bị ảnh hưởng | Đường dẫn API không thuộc phạm vi thay đổi này |
4.2. Mã Tùy Chỉnh Cửa Hàng (JS / HTML Tùy Chỉnh)
| Tình huống | Bị ảnh hưởng? | Cách xử lý |
| Sử dụng location.pathname để xác định loại trang và quyết định có chạy script hay không | Bị ảnh hưởng | Xem "4.4 Ví dụ mã: Ví dụ 1" |
| Lấy một đoạn từ location.pathname theo chỉ số (ví dụ, coi split('/')[1] là storeId) | Bị ảnh hưởng | Xem "4.4 Ví dụ mã: Ví dụ 2." Đây là mẫu dễ bị bỏ sót nhất, sau thay đổi, giá trị lấy được sẽ thành "checkouts" mà không báo lỗi |
| Script phân tích/ theo dõi nhóm trang sử dụng regex dựa trên đường dẫn | Bị ảnh hưởng | Xem "4.4 Ví dụ mã: Ví dụ 1"; cũng kiểm tra quy tắc nhóm trang trong bảng điều khiển phân tích bên thứ ba của bạn (ví dụ, GA) |
| Logic chuyển hướng hoặc quy tắc phân chia A/B dựa vào đường dẫn | Bị ảnh hưởng | Xem "4.4 Ví dụ mã: Ví dụ 1" |
| CSS tùy chỉnh chỉ để tạo kiểu | Thông thường không bị ảnh hưởng | Nếu sử dụng tải có điều kiện dựa trên URL, xử lý như trên |
4.3. Cài đặt chuyển hướng 301
Đường dẫn: Bảng Quản Trị > Cài Đặt > Tên Miền > Chuyển Hướng 301
| Tình huống | Bị ảnh hưởng? | Cách xử lý |
| "Chuyển hướng từ" chứa /:storeId/checkouts | Bị ảnh hưởng | Thêm quy tắc khớp với định dạng mới (xem "4.4 Ví dụ mã: Ví dụ 4") |
| "Chuyển hướng đến" chứa /:storeId/checkouts | Bị ảnh hưởng | Thêm quy tắc khớp với định dạng mới (xem "4.4 Ví dụ mã: Ví dụ 4") |
4.4. Ví dụ mã
Ví dụ 1: Xác định loại trang
Sai:
// Bị lỗi sau khi thay đổi: regex cố định đoạn số đầu tiên
if (/^\/\d+\/checkouts\//.test(location.pathname)) { /* ... */ }
if (location.pathname.split('/')[2] === 'checkouts') { /* ... */ }
Khuyến nghị:
// Tương thích với cả định dạng cũ và mới: chỉ kiểm tra đoạn "checkouts"
// mà không quan tâm đoạn đứng trước nó là gì
const isCheckoutPage = /(^|\/)checkouts\/[^/]+/.test(location.pathname);
const isOrderPage = /(^|\/)orders\/[^/]+/.test(location.pathname);
Ví dụ 2: Lấy storeId
Sai:
// Sau khi thay đổi, đoạn này lấy được "checkouts" — không báo lỗi nhưng giá trị sai
const storeId = location.pathname.split('/')[1];
Khuyến nghị:
// Lấy từ ngữ cảnh được nền tảng tiêm vào (trường chính xác tùy thuộc vào thời điểm chạy)
const storeId = window.Shopline?.storeId;
// Ứng dụng Open Platform: sử dụng trường storeId từ ngữ cảnh cài đặt app / phản hồi API
Ví dụ 3: Tạo liên kết
Sai:
// Tự xây dựng đường dẫn (không còn cách xây dựng thủ công nào hoạt động nữa)
const url = `https://${domain}/${storeId}/checkouts/${token}`;
Khuyến nghị:
// Sử dụng URL đầy đủ trả về từ API Open Platform, và chuyển hướng trực tiếp
const url = response.checkoutUrl;
Liên kết do nền tảng trả về luôn phản ánh định dạng hiện đang hợp lệ cho cửa hàng đó, bạn không cần tự xác định trạng thái chuyển đổi. Nếu bạn cần tạo liên kết cho kịch bản mà API hiện tại chưa hỗ trợ, hãy tham khảo tài liệu Open Platform hoặc gửi yêu cầu hỗ trợ Open Platform.
| Lưu ý: Không phân tích các định danh như checkoutToken, orderSeq, hoặc storeId từ URL. Hãy sử dụng các điểm cuối do Open Platform cung cấp thay vào đó. |
Ví dụ 4: Cấu hình chuyển hướng 301
Cấu hình gốc:
// Cấu hình "Chuyển hướng từ" hoặc "Chuyển hướng đến" gốc
/example storeId/checkouts
Cấu hình mới cần thêm:
// Thêm cấu hình tương ứng cho định dạng mới
/checkouts
5. Danh sách kiểm tra tự kiểm tra
Thực hiện ba bước dưới đây để tìm kiếm trong mã nguồn và xác nhận từng mục. Việc tự kiểm tra chỉ hoàn tất khi mọi mục đã được xác nhận.
Bước 1: Tìm kiếm từ khóa
checkouts orders thank_you stock_problems
processing overload checkoutToken orderSeq storeId
Bước 2: Tìm kiếm mẫu (Regex)
\/\d+\/checkouts # Đoạn số cứng + checkouts
\/\d+\/orders # Đoạn số cứng + orders
:storeId\/checkouts # Cú pháp mẫu tuyến đường
\{storeId\}\/checkouts # Cú pháp chuỗi mẫu
%s\/checkouts # Cú pháp chuỗi định dạng phía backend
pathname.*split # Lấy đoạn đường dẫn theo chỉ số
pathname.*match # So khớp regex đường dẫn
location\.pathname # Bất kỳ việc sử dụng pathname nào
Bước 3: Xác nhận từng mục
- Tất cả các kiểm tra loại trang đã được cập nhật để hỗ trợ cả định dạng cũ và mới
- storeId không còn được phân tích từ đường dẫn URL
- checkoutToken / orderSeq không còn được trích xuất từ đường dẫn URL
- checkout_url chỉ được sử dụng cho chuyển hướng, không còn phân tích để lấy giá trị
- Đường dẫn trang Checkout/order không còn được xây dựng thủ công — thay vào đó sử dụng URL đầy đủ từ API Open Platform
- Nhóm trang và quy tắc đường dẫn mục tiêu chuyển đổi trong bảng điều khiển phân tích bên thứ ba (ví dụ, GA) đã được cập nhật
6. Câu hỏi thường gặp
Q1: Liên kết cũ có ngừng hoạt động không?
Không. Liên kết theo định dạng cũ sẽ tiếp tục tự động chuyển hướng đến URL mới và vẫn có thể truy cập lâu dài, bạn không cần thay thế thủ công bất kỳ liên kết nào đã gửi, và không cần di chuyển dữ liệu lịch sử.
Q2: Khách hàng của tôi có nhận thấy cập nhật này không?
Không. Truy cập, thanh toán và điều hướng trang của khách hàng bình thường không bị ảnh hưởng, cập nhật này chỉ thay đổi cấu trúc kỹ thuật của URL.
Q3: Điều gì xảy ra nếu tôi không hoàn thành việc thích ứng trước hạn chót?
Sau ngày 19 tháng 9 năm 2026, định dạng URL sẽ được chuyển hoàn toàn sang định dạng mới, và SHOPLINE không thể hoàn nguyên. Nếu mã tùy chỉnh, ứng dụng hoặc hệ thống bên thứ ba của bạn vẫn phụ thuộc vào định dạng URL cũ để phân tích dữ liệu, bạn có thể gặp sự cố xử lý dữ liệu hoặc chức năng, và những lỗi này thường xảy ra âm thầm, không báo lỗi hoặc trang trắng. Chúng tôi khuyến nghị kiểm tra tích hợp và hoàn thành thích ứng càng sớm càng tốt.
Q4: Tôi có gặp cả hai định dạng cùng lúc trong quá trình triển khai không?
Có. Các cửa hàng chuyển đổi theo từng đợt, vì vậy các cửa hàng khác nhau có thể ở các định dạng khác nhau vào các thời điểm khác nhau. Hãy xây dựng thích ứng của bạn để hỗ trợ cả hai định dạng cùng lúc, thay vì xem đó là kiểm tra một hoặc khác.
Q5: Nếu liên kết tôi nhận được từ API không khớp với trạng thái chuyển đổi hiện tại của cửa hàng thì sao?
Chỉ cần sử dụng như hiện tại. Liên kết trả về bởi nền tảng luôn trỏ đến trang hiện đang hợp lệ cho cửa hàng đó. Ngay cả khi định dạng có vẻ không nhất quán với trạng thái chuyển đổi, nền tảng sẽ tự động xử lý chuyển hướng — bạn sẽ không gặp lỗi 404.
Q6: Tôi cần storeId, checkoutToken hoặc orderSeq, nhưng không lấy được từ URL. Tôi nên làm gì?
Kiểm tra tài liệu Open Platform cho điểm cuối liên quan. Với các kịch bản không được đề cập, hãy gửi vé hỗ trợ Open Platform.
Q7: Đường dẫn điểm cuối OpenAPI có thay đổi không?
Không. Cập nhật này chỉ thay đổi liên kết trang hướng đến người mua; đường dẫn API không bị ảnh hưởng.
Q8: Trường checkoutUrl trong phản hồi API có thay đổi không?
Có. Nó sẽ thay đổi từ việc bao gồm storeId sang không còn bao gồm nữa.
Câu 9: Trang đăng ký lại có thay đổi không?
Không. Đường dẫn của trang đó chưa bao giờ bao gồm storeId.
7. Cần hỗ trợ?
Nếu bạn đã xác nhận mình bị ảnh hưởng nhưng gặp phải tình huống mà API hiện tại không bao phủ trong quá trình thích ứng, hoặc bạn vẫn còn thắc mắc về các tiêu chí quyết định, hãy gửi vé Open Platform hoặc liên hệ với quản lý tài khoản SHOPLINE của bạn để được trợ giúp.
Bài viết này được dịch bằng AI và có thể chứa những sai sót. Để có thông tin chính xác nhất, vui lòng tham khảo phiên bản tiếng Anh gốc.