Chuyển tới nội dung chính

Refund API

Ask AI

Khởi tạo hoàn tiền cho các giao dịch đã hoàn tất và truy vấn trạng thái của chúng.


Khởi tạo hoàn tiền (Initiate Refund)

Endpoint: POST /v2/refund
Content-Type: application/json

Hoàn tiền có thể là toàn phần (full) hoặc một phần (partial) (tùy thuộc vào các ràng buộc của từng nhà cung cấp — một số nhà cung cấp chỉ hỗ trợ hoàn tiền toàn bộ số tiền). Việc hoàn tiền có thể được xử lý tự động ngay lập tức hoặc được giữ lại để phê duyệt thủ công, tùy thuộc vào cấu hình của người bán.

Số tiền hoàn trả tối đa cho mỗi lần hoàn tiền là: paidAmount trừ đi tổng số tiền đã được hoàn trả cho giao dịch đó.

Yêu cầu (Request)

TrườngLoạiBắt buộcMô tả
transactionIdString (ULID)MID giao dịch (transactionId) từ IPN hoặc truy vấn giao dịch. Ví dụ: 01jza90dy6w82dfrrqvadn5vs4
amountFloatMSố tiền hoàn lại. Tối thiểu: 0.10. Tối đa: số tiền còn lại có thể hoàn trả. Ví dụ: 50.00
reasonString(max:1000)OMô tả ngắn gọn về lý do hoàn tiền. Ví dụ: Yêu cầu của khách hàng
signatureString(max:750)MChữ ký RSA-MD5. Xem Chữ ký

Một số nhà cung cấp nhất định (PayAgency, SmartPay, ClisaPay, FinvyPay, WPay) chỉ hỗ trợ hoàn tiền toàn bộ số tiền.

Phản hồi (Response)

Tất cả các phản hồi được đóng gói:

TrườngLoạiMô tả
statusStringsuccess hoặc error
messageStringThông báo dễ hiểu cho người dùng
dataJSONChi tiết hoàn tiền. Xem đối tượng dữ liệu (data object) bên dưới

Đối tượng dữ liệu (data object):

TrườngLoạiMô tả
refundIdString (ULID)ID hoàn tiền của GLODIPAY
refundNumberStringSố hoàn tiền dễ hiểu của GLODIPAY

Được xử lý tự động ngay lập tức:

{
"status": "success",
"message": null,
"data": {
"refundId": "01jzabk09xc4pbgwe8hyg4cwbf",
"refundNumber": "2507-1751420414"
}
}

Đang chờ phê duyệt thủ công:

{
"status": "success",
"message": "Refund created and waiting for approval.",
"data": {
"refundId": "01jzabk09xc4pbgwe8hyg4cwbf",
"refundNumber": "2507-1751420414"
}
}

Lỗi xác thực (HTTP 422):

{
"status": "error",
"message": "Invalid request data.",
"errors": [
{
"field": "amount",
"message": ["The amount must be between 0.1 and 100."]
}
]
}

Truy vấn trạng thái hoàn tiền (Query Refund Status)

Endpoint: POST /v2/refund/query
Content-Type: application/json

Yêu cầu (Request)

TrườngLoạiBắt buộcMô tả
refundIdString (ULID)MID hoàn tiền của GLODIPAY (từ phản hồi Refund API hoặc Refund IPN). Ví dụ: 01jzabk09xc4pbgwe8hyg4cwbf
signatureString(max:750)MChữ ký RSA-MD5. Xem Chữ ký

Phản hồi (Response)

TrườngLoạiMô tả
statusStringsuccess
messageStringThông báo dễ hiểu cho người dùng
dataJSONĐối tượng chi tiết hoàn tiền

Các trường trong đối tượng dữ liệu (data object fields):

TrườngLoạiMô tả
transactionIdStringID giao dịch gốc của GLODIPAY
refStringorderRef của người bán
refundIdStringID hoàn tiền của GLODIPAY
currencyStringMã tiền tệ ISO 4217
refundAmountFloatSố tiền hoàn lại
statusStringTrạng thái hoàn tiền. Xem Mã trạng thái
statusCodeNumberMã trạng thái số. Xem Mã trạng thái
metadataJSONCác cặp khóa-giá trị từ phiên làm việc ban đầu
reasonStringLý do hoàn tiền
messageStringThông báo trạng thái dễ hiểu
originalRefundCreatedAtISO 8601 datetimeThời gian tạo hoàn tiền tại PSP
refundCreatedAtISO 8601 datetimeThời gian tạo hoàn tiền trong hệ thống GLODIPAY
transactionCreatedAtISO 8601 datetimeThời gian tạo giao dịch gốc
signatureStringChữ ký RSA-MD5 — xác minh bằng khóa công khai của GLODIPAY

Ví dụ:

{
"status": "success",
"message": "",
"data": {
"transactionId": "01jza90dy6w82dfrrqvadn5vs4",
"ref": "ORDER-001",
"refundId": "01jzabk09xc4pbgwe8hyg4cwbf",
"currency": "USD",
"refundAmount": 50.00,
"status": "refund_successful",
"statusCode": 11,
"metadata": { "orderId": "12345" },
"reason": "Customer request",
"message": null,
"originalRefundCreatedAt": "2026-04-14T11:00:00+00:00",
"refundCreatedAt": "2026-04-14T11:00:01+00:00",
"transactionCreatedAt": "2026-04-14T10:00:00+00:00",
"signature": "base64-encoded-rsa-signature"
}
}

Thông báo Refund IPN

GLODIPAY gửi một HTTP POST đến notificationUrl của giao dịch gốc khi trạng thái hoàn tiền thay đổi.

Phương thức: POST
Content-Type: application/json

Chính sách gửi lại (Retry policy): Nếu máy chủ của bạn không trả về {"returnCode":"100"} trong vòng 30 giây, GLODIPAY sẽ thực hiện gửi lại.

Payload

TrườngLoạiBắt buộcMô tả
transactionIdStringMID giao dịch gốc của GLODIPAY
refStringMorderRef của người bán
refundIdStringMID hoàn tiền của GLODIPAY
currencyStringMMã tiền tệ ISO 4217
refundAmountFloatMSố tiền hoàn lại
statusStringMTrạng thái hoàn tiền. Xem Mã trạng thái
statusCodeNumberMMã trạng thái số
metadataJSONOCác cặp khóa-giá trị từ phiên làm việc ban đầu
reasonStringOLý do hoàn tiền
messageStringOThông báo trạng thái dễ hiểu
originalRefundCreatedAtISO 8601 datetimeMThời gian tạo hoàn tiền tại PSP
refundCreatedAtISO 8601 datetimeMThời gian tạo hoàn tiền trong hệ thống GLODIPAY
transactionCreatedAtISO 8601 datetimeMThời gian tạo giao dịch gốc
signatureStringMChữ ký RSA-MD5 — xác minh bằng khóa công khai của GLODIPAY

Ví dụ Payload IPN:

{
"transactionId": "01jza90dy6w82dfrrqvadn5vs4",
"ref": "ORDER-001",
"refundId": "01jzabk09xc4pbgwe8hyg4cwbf",
"currency": "USD",
"refundAmount": 50.00,
"status": "refund_successful",
"statusCode": 11,
"metadata": { "orderId": "12345" },
"reason": "Customer request",
"message": null,
"originalRefundCreatedAt": "2026-04-14T11:00:00+00:00",
"refundCreatedAt": "2026-04-14T11:00:01+00:00",
"transactionCreatedAt": "2026-04-14T10:00:00+00:00",
"signature": "base64-encoded-rsa-signature"
}

Xác nhận (Acknowledgement)

Máy chủ của bạn phải phản hồi trong vòng 30 giây:

{
"returnCode": "100",
"description": "Received"
}
TrườngLoạiBắt buộcMô tả
returnCodeStringMPhải là "100" để xác nhận đã nhận
descriptionString(max:1500)OMô tả tùy chọn

Nguồn

Trang này được bắt nguồn từ GLODIPAY_Refund_API_Specification_v2.

Bookmarks

No bookmarks yet.
Hover over a heading and click to save a section.