Plan callback
Sau khi tạo plan, hệ thống AppotaPay callback kết quả cho hệ thống của đối tác
- 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 plan.
Header
{
"Content-Type": "applicaton/json"
}
Request params
Phương thức: POST
Tham số | Kiểu dữ liệu | Mô tả |
---|---|---|
data | String | Thông tin giao dịch ở dạng base64encode & json_encode |
signature | String | Chữ ký kiểm tra dữ liệu signature = |
time | String | Thời gian phản hồi |
Giải mã dữ liệu
- Đối tác sử dụng hàm
Base64Decode
để giải mã giữ liệu ở dạng string - Sử dụng hàm
JSON_Decode
để giải mã giữ liệu lần 2 ở dạng json
Tham số | Yêu cầu | Kiểu dữ liệu | Mô tả |
---|---|---|---|
event | Required | String | Event: - subscription.plan.activated: plan thanh toán định kỳ đã được kích hoạt - subscription.plan.inactivated: plan thanh toán định kỳ tạm dừng |
data | Required | Object | Data |
data.planRefId | Required | String | Mã định danh cho plan được cung cấp bởi partner |
data.planId | Required | String | Plan ID |
data.customerId | Required | String | Customer ID |
data.currency | Required | String | Đơn vị tiền tệ |
data.amount | Required | Integer | Số tiền thanh toán |
data.paymentMethods | Required | Array | Danh sách payment method (Chỉ áp dụng với mô hình Merchant hosted) |
data.paymentMethods.*.paymentMethodId | Required | String | Payment method ID |
data.paymentMethods.*.rank | Required | Integer | Thứ tự ưu tiên phương thức thanh toán sẽ được sử dụng trong chu kỳ thanh toán |
data.immediateActionType | Optional | String | Thực hiện trừ tiền ngay thì tạo thành công plan, null: tiền trừ vào thời điểm anchorDate - FULL_AMOUNT: thực hiện trừ tiền khi khởi tạo plan thành công |
data.failedCycleAction | Required | String | Hành động khi cycle thực hiện thanh toán thất bại - STOP: Dừng toàn bộ plan - RESUME: Bỏ qua cycle thất bại và tiến hành cycle kế tiếp |
data.serviceName | Optional | String | Tên dịch vụ bạn thực hiện thanh toán định kỳ (Chỉ áp dụng với mô hình Checkout page) |
data.status | Required | String | Trạng thái của plan: - PENDING: plan đang khởi tạo, chờ trạng thái cuối từ AppotaPay - REQUIRES_ACITON: plan cần thực hiện thêm 1 số action để kích hoạt - ACTIVE: plan đã được kích hoạt để thực hiện thanh toán định kỳ - INACTIVE: plan đã đóng hoặc khởi tạo thất bại |
data.actions | Optional | Array | Nếu status = REQUIRES_ACTION, object có các thông tin cụ thể để thực hiện action tiếp theo cho kích hoạt payment method |
data.actions.*.url | Optional | String | URL thực hiên action |
data.actions.*.action | Optional | String | Loại action - AUTH: thực hiện liên kết thanh toán hoặc thanh toán - RESEND_AUTH: Gửi lại mã uỷ quyền cho khách hàng |
data.actions.*.method | Optional | String | Method thực hiện action - GET - POST |
data.schedule | Required | Object | Cấu hình chu kỳ thanh toán định kỳ |
data.schedule.interval | Required | String | Tần suất thực hiện thanh toán định kỳ |
data.schedule.intervalCount | Required | String | Đơn vị khoảng thời gian giữa 2 chu kỳ liên tiếp |
data.schedule.totalRecurrence | Optional | Integer | Tổng số lần thanh toán định kỳ trong plan null: không giới hạn |
data.schedule.anchorDate | Optional | String | Thời điểm thực hiện thanh toán định kỳ Default: ngày khởi tạo plan thành công Giá trị hợp lệ: ngày từ 1-28 (của 1 tháng) Lưu ý: nếu anchorDate: null và thời điểm khởi tạo plan là ngày 29/30/31 của tháng, anchorDate mặc định sẽ lấy value là ngày 1 của tháng tiếp theo |
data.schedule.retryInterval | Optional | String | Tần suất thực hiện thanh toán lại trong 1 cycle nếu thanh toán xảy ra vấn đề |
data.schedule.retryIntervalCount | Optional | Integer | Đơn vị khoảng thời gian giữa 2 lần thực hiện thanh toán lại |
data.notificationConfig | Object | Cấu hình cách thức thanh toán cho dịch vụ thanh toán định kỳ | |
data.notificationConfig.[subscription.cycle.retrying] | Optional | Array | Kênh thanh toán bạn muốn người dùng nhận khi thanh toán cycle không thành công và người dùng có thể thực hiện thanh toán lại. Giá trị được chấp nhận ["EMAIL"] |
data.notificationConfig.[subscription.cycle.succeeded] | Optional | Array | Kênh thanh toán bạn muốn người dùng nhận khi thanh toán cycle thành công.. Giá trị được chấp nhận ["EMAIL"] |
data.notificationConfig.[subscription.cycle.failed] | Optional | Array | Kênh thanh toán bạn muốn người dùng nhận khi cycle thất bại (không thể tiếp tục thanh toán cycle Giá trị được chấp nhận ["EMAIL"] |
data.notificationConfig.[subscription.plan.activated] | Optional | Array | Kênh thanh toán bạn muốn người dùng nhận khi Plan thanh toán định kỳ được khởi tạo và kích hoạt thành công. Giá trị được chấp nhận ["EMAIL"] |
data.notificationConfig.[subscription.plan.inactivated] | Optional | Array | Kênh thanh toán bạn muốn người dùng nhận khi Plan thanh toán định kỳ tạm dừng Giá trị được chấp nhận ["EMAIL"] |
data.createdAt | Required | String | Thời gian tạo Plan (ISO 8601) |
data.updatedAt | Required | String | Thời gian cập nhật (ISO 8601) |
paymentLinkUrl | Optional | String | Url cho người dùng thanh toán cho trạng thái RETRYING |
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