Thanh toán crypto cho thương mại điện tử
Cách cửa hàng online thêm crypto làm phương thức thanh toán: vị trí ở bước thanh toán, trạng thái đơn hàng, thanh toán một phần, hoàn tiền, kế toán bằng đô la và những gì đã sẵn sàng.

Với cửa hàng online, crypto là phương thức thanh toán bổ sung bên cạnh thẻ, không phải thay thế. Nó tiếp cận những khách có thẻ không dùng được ở cửa hàng của bạn, loại bỏ chargeback thẻ và cho phép bạn nhận stablecoin đô la. Bài này nói về vị trí của nó ở bước thanh toán, cách ánh xạ trạng thái thanh toán sang trạng thái đơn hàng, cách xử lý các trường hợp rắc rối và điều gì đã sẵn sàng, điều gì chưa, ở Qvard hiện nay.
Crypto mang lại gì cho cửa hàng, và không mang lại gì
Hãy cụ thể về kỳ vọng, vì crypto không phải nút bật tăng trưởng.
- Khách mà đường thẻ của bạn bỏ sót. Người mua có thẻ ngân hàng bị từ chối ở cửa hàng nước ngoài, hoặc ở nước mà bộ xử lý của bạn không phục vụ, vẫn có thể trả bằng stablecoin đô la.
- Không có chargeback thẻ. Người gửi không thể hoàn tác giao dịch crypto, nên các khoản thanh toán thẻ bị khiếu nại không phải rủi ro với những đơn này. Hoàn tiền trở thành khoản chuyển bạn quyết định gửi.
- Bán xuyên biên giới không vướng thẻ. Cùng một trang thanh toán dùng được cho khách ở bất kỳ đâu.
- Một tỷ lệ đơn khiêm tốn. Hãy xem nó là lựa chọn bổ sung ở trang thanh toán. Ở đa số cửa hàng nó sẽ không thay thế thẻ, và không nên để nó làm phức tạp luồng thẻ.
Nếu bạn bán sản phẩm số, hãy đọc thanh toán crypto cho cửa hàng sản phẩm số; các quy tắc giao hàng ở đó áp dụng cho mọi sản phẩm giao tức thì.
Vị trí ở bước thanh toán
Thêm «Thanh toán bằng crypto» làm một phương thức nữa, cạnh các phương thức hiện có, thay vì làm một cửa hàng riêng. Một cách đặt gọn gàng:
- Khách chọn hàng vào giỏ, nhập địa chỉ như thường lệ rồi chọn «Thanh toán bằng crypto».
- Máy chủ của bạn tạo đơn ở trạng thái chờ và một khoản thanh toán cho đơn.
- Bạn chuyển khách tới trang thanh toán được lưu trữ, nơi họ chọn tài sản và mạng rồi trả từ ví của mình.
- Khi thanh toán hoàn tất, máy chủ của bạn nhận webhook và đẩy đơn đi tiếp.
Hiển thị giá theo tiền tệ của cửa hàng và thu bằng đô la Mỹ: thanh toán được tạo bằng đô la và khách trả khoản tương đương bằng tài sản họ chọn, theo tỷ giá cố định trong một giờ. Nếu cửa hàng không tính giá bằng đô la, hãy quy đổi tổng đơn trước khi tạo thanh toán.
Tạo thanh toán và dùng số đơn hàng của bạn
Tạo thanh toán từ backend bằng một POST tới https://api.qvard.com/api/v1/payment. Yêu cầu kèm khóa của bạn trong header Authorization: Bearer và một JSON có số đơn hàng làm id, số tiền làm price bằng đô la Mỹ và tùy chọn paymentSystemId để mở trang với tài sản và mạng đã chọn sẵn. Phản hồi là 201 kèm redirectUrl.
Dùng số đơn hàng của chính bạn làm id: nó được trả lại trong webhook, vì vậy đó là khóa gắn thanh toán với đơn. Nếu yêu cầu được lặp lại với cùng id cho cùng phương thức thanh toán, bạn nhận lại khoản thanh toán hiện có, nên nhấp đúp hay yêu cầu thử lại không tạo hai khoản. Hướng dẫn đầy đủ kèm mã nằm trong cách nhận thanh toán crypto trên website.
Ánh xạ trạng thái thanh toán sang trạng thái đơn hàng
Một khoản thanh toán có bốn trạng thái, và đơn hàng của bạn cần quy tắc rõ ràng cho từng trạng thái:
wait: thanh toán đã tạo và khách chưa trả. Đơn đang chờ thanh toán.partial: số tiền đến chưa đủ. Giữ đơn, cho khách biết còn thiếu bao nhiêu và để họ gửi phần còn lại, hoặc hủy và hoàn tiền.completed: số tiền đã đến đủ. Đây là trạng thái kích hoạt webhook, và là trạng thái duy nhất được phép xuất hàng.rejected: thanh toán bị từ chối. Hãy đề xuất cách thanh toán khác.
Ví dụ cho thấy phép ánh xạ dưới dạng một bảng nhỏ. Hai quy tắc giữ nó an toàn: không bao giờ đưa đơn đã thanh toán trở lại trạng thái trước đó và không bao giờ giao hàng ở bất kỳ trạng thái nào ngoài completed. Trình xử lý webhook cũng phải idempotent và trả lời đúng HTTP 200; xem cách bảo mật webhook thanh toán crypto.
// Qvard payment status -> your order state. Only "completed" releases goods.
const ORDER_STATE = {
wait: 'pending_payment', // created, the customer has not paid yet
partial: 'on_hold', // less than required arrived: ask for the rest or refund
completed: 'paid', // full amount arrived: start fulfilment
rejected: 'payment_failed' // rejected: offer another way to pay
};
function nextState(current, qvardStatus) {
const target = ORDER_STATE[qvardStatus];
if (!target) return current; // unknown status: change nothing
if (current === 'paid') return current; // never move a paid order backwards
return target;
}Thanh toán một phần, đơn hết hạn và hoàn tiền
Đây là những trường hợp tốn thời gian nhất của cửa hàng:
- Khách trả thiếu. Phí rút của sàn thường bị trừ khỏi số tiền, và khoản thanh toán đến thiếu. Hãy quyết định bạn sẽ đòi phần chênh lệch hay hoàn tiền, và hiển thị trên trang đơn hàng.
- Khách trả muộn. Tỷ giá cố định một giờ. Khoản thanh toán đến rất lâu sau khi đơn bị bỏ, hãy xử lý như một vụ hỗ trợ thay vì tự động hóa.
- Tồn kho. Nếu bạn giữ hàng cho các đơn chưa thanh toán, hãy giải phóng khi đơn hết hạn.
- Hoàn tiền. Bạn cũng không thể rút lại một khoản thanh toán crypto; hoàn tiền là khoản chuyển bạn gửi tới ví của khách. Ghi quy tắc vào điều khoản và xin địa chỉ nhận hoàn tiền từ khách, đừng lấy từ khoản thanh toán.
- Quay lại trang. Chưa có URL quay lại sau khi thanh toán, nên khách tự quay lại trang của bạn. Hãy cho họ trang đơn hàng hiển thị trạng thái thực, thay vì trang cảm ơn mặc định cho rằng thanh toán đã thành công.
Giá, phí và kế toán
Giữ phần tiền bạc đơn giản.
- Giá bằng đô la, thu bằng đô la. Ghi giá trị đơn bằng đô la tại thời điểm đặt đơn và giữ
idthanh toán bên cạnh để đối soát. - Chi phí. Không có phí đăng ký. Hoa hồng được thiết lập riêng cho dự án của bạn và theo trang bảng giá bắt đầu từ 1%, có thể giảm xuống 0,1%.
- Rút tiền ra. Tiền nằm trong số dư Qvard của bạn và bạn rút về ví của mình; việc rút chỉ mất phí mạng. Rút về tài khoản ngân hàng bằng tiền pháp định không khả dụng, nên nếu cần tiền mặt hãy tính đường rút tiền qua một dịch vụ bạn đã dùng.
- Thuế và sổ sách. Cách xử lý khoản thu bằng crypto phụ thuộc vào quốc gia của bạn; hãy xác nhận với kế toán trước khi ra mắt.
Hiện nay đã sẵn sàng những gì
Qvard hoạt động qua API: cửa hàng của bạn tạo thanh toán và nhận webhook. Chưa có plugin dựng sẵn cho các nền tảng cửa hàng, liên kết thanh toán và sandbox riêng đang được phát triển, và khách tự quay lại trang của bạn. Nếu nền tảng của bạn là WordPress, xem thanh toán crypto trên WordPress để có mã chạy được. Về tài sản và mạng được nhận, xem các đồng được hỗ trợ; về định dạng yêu cầu, xem tài liệu cho nhà phát triển; và để xem khách của bạn sẽ thấy gì, hãy mở một hóa đơn demo.
FAQ
Crypto có thay thế thẻ trong cửa hàng của tôi không?
Không. Nó hiệu quả nhất như một lựa chọn bổ sung cho khách có thẻ không dùng được ở cửa hàng của bạn hoặc thích stablecoin. Hãy giữ luồng thẻ như hiện tại.
Khi nào tôi nên đánh dấu đơn là đã thanh toán?
Chỉ khi Qvard gửi webhook với trạng thái completed. Khách quay lại trang của bạn không phải bằng chứng thanh toán, và trạng thái partial nghĩa là số tiền đến ít hơn yêu cầu.
Hoàn tiền hoạt động thế nào với crypto?
Người gửi không thể hoàn tác thanh toán crypto, nên hoàn tiền là khoản chuyển bạn gửi tới ví của khách. Hãy xác định quy tắc trong điều khoản và xin địa chỉ hoàn tiền từ khách.
Có plugin cho nền tảng cửa hàng của tôi không?
Chưa có. Hiện tại tích hợp qua API: một yêu cầu để tạo thanh toán và một webhook để nhận kết quả.

