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

API Tạo plan

Endpoint: /api/v1/subs/plans

Method: POST

Header Params

Tham sốYêu cầuKiểu dữ liệuMô tảLưu ý
X-APPOTAPAY-AUTHrequiredString Cách tạo JWT_TOKEN
Content-TyperequiredStringGiá trị: application/json
X-Request-IDoptionalStringĐịnh dạng UUIDv4. Request ID để kiểm tra yêu cầu khi xảy ra sự cốmax:42
LanguageoptionalStringGiá trị vi hoặc en tương ứng với link thanh toán sẽ là tiếng việt hoặc tiếng anh, (mặc định: vi)

in:vi,en

{
"X-APPOTAPAY-AUTH": "JWT_TOKEN",
"Content-Type": "application/json",
"X-Request-ID": "Your_Unique_id",
"Language": "vi"
}

Tham số

Tham sốYêu cầuKiểu dữ liệuMô tảValidate
partnerRefIdRequiredStringMã tham chiếu của Partner đối với AppotaPay (không được trùng lặp)min:1, max: 50, format: alphanumeric
customerIdRequiredStringMã khách hàng
currencyRequiredStringĐơn vị tiền tệin: VND
amountRequiredIntegerSố tiền thanh toán
paymentMethodsRequiredArrayDanh sách payment method
paymentMethods.*.paymentMethodIdRequiredStringPayment method ID
paymentMethods.*.rankRequiredIntegerThứ tự ưu tiên phương thức thanh toán sẽ được sử dụng trong chu kỳ thanh toánmin: 1
immediateActionTypeOptionalString

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

in: FULL_AMOUNT
failedCycleActionRequiredString

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

in: STOP, RESUME
scheduleRequiredObjectCấu hình chu kỳ thanh toán định kỳ
schedule.intervalRequiredStringTần suất thực hiện thanh toán định kỳin: DAY, WEEK, MONTH
schedule.intervalCountRequiredIntegerĐơn vị khoảng thời gian giữa 2 chu kỳ liên tiếpmin: 1
schedule.totalRecurrenceOptionalInteger

Tổng số lần thanh toán định kỳ trong plan

null: không giới hạn

min: 1
schedule.anchorDateOptionalString

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

format: ISO-8601
schedule.retryIntervalOptionalStringTầ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 đềin: DAY
schedule.retryIntervalCountOptionalIntegerĐơn vị khoảng thời gian giữa 2 lần thực hiện thanh toán lạimin:1
schedule.totalRetryOptionalInteger

Tổng số lần thanh toán lại

null: không thực hiện thanh toán lại

min:1, max: 10

Example Request

{
"partnerRefId": "ASKJLKALK299",
"customerId": "01HRVGAJSP7SX83X7AQ9QQYMBE",
"currency": "VND",
"amount": 85000,
"paymentMethods": [
{
"paymentMethodId": "01HRVJY8ZMZFHRHE3KG2S24KKW",
"rank": 1
}
],
"immediateActionType": "FULL_AMOUNT",
"failedCycleAction": "STOP",
"schedule": {
"interval": "DAY",
"intervalCount": 1,
"totalRecurrence": 3,
"anchorDate": "2024-01-13T15:23:40+07:00",
"retryInterval": "DAY",
"retryIntervalCount": 1,
"totalRetry": 1
}
}

Dữ liệu trả về

Thành công

Http Status Code 200 - OK

Dữ liệu trả về thành công sẽ chứa một Plan object

Thất bại

HTTP Status Code != 200

Error response params

Tham sốYêu cầuKiểu dữ liệuMô tả
errorCoderequiredIntegerMã lỗi
messagerequiredStringMô tả lỗi
errorsoptionalArrayMô tả lỗi chi tiết các trường nếu có
errors.*.fieldoptionalStringTrường dữ liệu bị lỗi
errors.*.reasonoptionalStringMô tả trường dữ liệu bị lỗi
{
"errorCode": 1,
"message": "Thông tin yêu cầu thiếu hoặc không hợp lệ",
"errors": [
{
"field": "partnerRefId",
"reason": "Trường mã tham chiếu giao dịch của đối tác không được bỏ trống."
}
]
}

Bảng mã lỗi thường gặp

Mã lỗi đầy đủ vui lòng xem tại đây

Mã lỗiMô tả
0Thành công
1Thông tin yêu cầu thiếu hoặc không hợp lệ
11Partner không tồn tại
13Partner đã bị khoá
14API Key không tồn tại
15API Key chưa được kích hoạt hoặc đã bị khoá
92IP không được phép truy cập
99Lỗi không xác định, vui lòng liên hệ AppotaPay để biết thêm thông tin chi tiết
401Lỗi xác thực
500Hệ thống gặp lỗi, vui lòng thử lại sau
3002Mã tham chiếu Partner đã bị trùng, vui lòng thực hiện lại
3003Customer không tồn tại
3004Payment method không tồn tại
3012Payment method không hợp lệ