Nhảy tới nội dung
Phiên bản: Lastest

Cycle callback

Hệ thống AppotaPay callback kết quả của cycle cho hệ thống của đối tác

Lưu ý
  • Sử dụng tham số signature để kiểm tra tính toàn vẹn của dữ liệu nhận được, phía đối tác tạo ra signature từ dữ liệu nhận được từ AppotaPay sau đó so sánh với tham số signature AppotaPay gửi sang.

Web callback

AppotaPay sẽ gửi kết quả qua API URL của phía đối tác gửi AppotaPay để cấu hình, server phía đối tác kiểm tra tính toàn vẹn dữ liệu qua tham số signature sau đó cập nhật trạng thái của cycle.

{
"Content-Type": "applicaton/json"
}

Request params

Phương thức: POST

Tham sốKiểu dữ liệuMô tả
dataStringThông tin giao dịch ở dạng base64encode & json_encode
signatureStringChữ ký kiểm tra dữ liệu

signature = HMAC_SHA256(data, secretKey)

timeStringThời gian phản hồi

Giải mã dữ liệu

  1. Đối tác sử dụng hàm Base64Decode để giải mã giữ liệu ở dạng string
  2. Sử dụng hàm JSON_Decode để giải mã giữ liệu lần 2 ở dạng json
Tham sốYêu cầuKiểu dữ liệuMô tả
eventRequiredString

Event:

- subscription.cycle.created: cycle được tạo thành công

- subscription.cycle.succeeded: cycle được thanh toán thành công

- subscription.cycle.retrying: cycle thực hiện attempt không thành công, thực hiện thanh toán lại lần tiếp theo

- subscription.cycle.failed: cycle thanh toán thất bại

- subscription.cycle.force_attempt_failed: force cycle attempt không thành công

dataRequiredObjectData
data.cycleIdRequiredStringCycle ID
data.planIdRequiredStringPlan ID
data.cycleNumberRequiredIntegerSố thứ tự của cycle
data.currencyRequiredIntegerĐơn vị tiền tệ
data.amountRequiredIntegerSố tiền thanh toán
data.attemptCountRequiredIntegerSố lần attempt
attemptDetailsRequiredArrayThông tin chi tiết của attempt
attemptDetails.*.attemptNumberRequiredIntegerSố thứ tự của attempt
attemptDetails.*.createdAtRequiredStringThời gian tạo attempt. (định dạng chuẩn ISO-8601)
attemptDetails.*.attemptIdRequiredIntegerID của cycle attempt
attemptDetails.*.typeRequiredString

Loại attempt

- INITIAL: attempt đầu tiên với mỗi cycle

- RETRY: attempt có type là INITIAL không thành công, logic retry cho các attempt tiếp theo được thiết lập

- PAYMENT_LINK: nếu bạn sử dụng paymentLinkForFailedAttempt trong khi tạo plan, attempt sử dụng payment link sẽ có type này

- FORCED: nếu bạn thực hiện force cycle thông qua API chúng tôi cung cấp

attemptDetails.*.statusRequiredString

Trạng thái của attempt:

- PENDING: đang thực hiện thanh toán cycle

- SUCCESS: thực hiện attempt với cycle thành công

- FAILED: thực hiện attempt với cycle thất bại

attemptDetails.*.nextRetryTimeRequiredStringThời gian thử lại lần tiếp theo. (định dạng chuẩn ISO-8601)
data.scheduledAtRequiredStringThời gian dự kiến thanh toán (định dạng chuẩn ISO-8601)
data.statusRequiredString

Trạng thái của cycle:

- SCHEDULED: cycle đã được khởi tạo và chờ đến thời gian thực hiện

- PENDING: quá trình thanh toán định kỳ đang diễn ra (cycle không thể cập nhật

- RETRYING: cycle cần thực hiện thanh toán lại

- FAILED: tất cả các attempt/retry được cấu hình thực hiện cho cycle đều thất bại

- SUCCEEDED: cycle thực hiện thanh toán thành công

- CANCELLED: cycle bị huỷ do yêu cầu từ merchant

data.createdAtRequiredStringThời gian tạo cycle (ISO 8601)
data.updatedAtRequiredStringThời gian cập nhật (ISO 8601)

Response format

  • Đối tác cần phản hồi lại cho AppotaPay xác nhận đã nhận được kết quả
  • Phản hồi được coi là thành công khi HTTP code = 200