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

Kết nối thanh toán

Thanh toán ATM/Visa/Mastercard có hỗ trợ thanh toán lưu token (lưu thông tin thẻ cho các lần thanh toán sau)

(chỉ hỗ trợ 1 số provider)

EndPoint

POST /api/v2/orders/payment

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
X-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-Account-Ref-IDoptionalString

Mã định danh của tài khoản Sub account do AppotaPay cung cấp.

Bắt buộc truyền khi thanh toán giao dịch của Sub account loại owner

{
"X-APPOTAPAY-AUTH": "JWT_TOKEN",
"Content-Type": "application/json",
"X-Request-ID": "Your_Unique_id",
"X-Language": "vi",
"X-Account-Ref-ID": "9723f73b-9295-4acb-884b-ab6310c2e653"
}

Request Params

Tham sốYêu cầuKiểu dữ liệuMô tảLưu ý
transactionrequiredObjectThông tin giao dịch
transaction.amountrequiredIntegerSố tiền thanh toán
transaction.currencyrequiredStringĐơn vị tiền tệ (VND)Chấp nhận: VND
transaction.bankCodeoptionalStringTham khảo Bảng mã Ngân hàng
transaction.paymentMethodrequiredStringTham khảo Bảng mã phương thức thanh toán
transaction.actionrequiredStringHành động thanh toán muốn thực hiện
transaction.tokenoptionalStringToken sử dụng để thanh toán (trong trường hợp dùng token)
partnerReferencerequiredObjectThông tin phía đối tác
partnerReference.order.idrequiredStringMã đơn hàng phía đối tác50
partnerReference.order.inforequiredStringThông tin đơn hàng (tối đa 150 kí tự)150
partnerReference.order.extraDataoptionalStringThông tin tuỳ chọn bổ sung200
partnerReference.notificationConfig.notifyUrlrequiredStringURL nhận kết quả giao dịch100
partnerReference.notificationConfig.redirectUrlrequiredStringURL chuyển hướng trên trình duyệt100
partnerReference.notificationConfig.deeplinkUrloptionalStringURL chuyển hướng đến app nếu thanh toán bằng app mobile100
partnerReference.notificationConfig.installmentNotifyUrloptionalStringIPN thông báo giao dịch chuyển đổi trả góp100

Example Request

{
"transaction": {
"amount": 10000,
"currency": "VND",
"bankCode": "VCB",
"paymentMethod": "ATM",
"action": "PAY"
},
"partnerReference": {
"order": {
"id": "5f61cf4f41e2b",
"info": "test thanh toan",
"extraData": ""
},
"notificationConfig": {
"notifyUrl": "https://devtool.vn/ipn",
"redirectUrl": "https://devtool.vn/redirect",
"installmentNotifyUrl": "https://devtool.vn/redirect"
}
}
}

Response Params

Tham sốYêu cầuKiểu dữ liệuMô tả
transactionrequiredObjectThông tin giao dịch
transaction.transactionIdrequiredStringMã giao dịch phía Appotapay
transaction.statusrequiredStringTrạng thái giao dịch
transaction.errorCoderequiredIntegerBảng mã lỗi
transaction.errorMessagerequiredStringMô tả lỗi
transaction.partnerCoderequiredStringMã đối tác
transaction.orderAmountrequiredIntegerSố tiền thanh toán (Min: 1000, Max: 500000000)
transaction.currencyrequiredStringĐơn vị tiền tệ
transaction.bankCoderequiredStringMã Ngân hàng khách hàng đã chọn
transaction.paymentMethodrequiredStringPhương thức thanh toán
transaction.actionrequiredStringLoại thanh toán
transaction.createdAtrequiredStringThời gian tạo giao dịch. (định dạng chuẩn RFC-3339)
transaction.updatedAtrequiredStringThời gian cập nhật giao dịch. (định dạng chuẩn RFC-3339)
paymentrequiredObject
payment.urlrequiredStringURL thanh toán, tham số lang trên link thanh toán có thể thay đổi thành vi hoặc en tương ứng với ngôn ngữ khách hàng mong muốn
payment.qrCodeoptionalObjectTrả về trong trường hợp thanh toán có QR code
payment.qrCode.urloptionalStringURL QR thanh toán
payment.qrCode.contentoptionalStringQR content để tạo mã QR thanh toán
payment.qrCode.expiryoptionalStringThời gian hết hạn thanh toán QR. (định dạng chuẩn RFC-3339)
payment.deepLinkUrloptionalStringLiên kết mở app thanh toán nếu có

Thành công

Http Status Code 200 - OK

{
"transaction": {
"transactionId": "AP123",
"status": "pending",
"errorCode": 35,
"errorMessage": "Giao dịch đang chờ xử lý",
"partnerCode": "TEST",
"orderAmount": 10000,
"currency": "VND",
"bankCode": "VCB",
"paymentMethod": "ATM",
"action": "PAY",
"createdAt": "2024-04-01T14:46:20.000",
"updatedAt": "2023-04-01T14:46:20.000"
},
"payment": {
"url": "https://payment.dev.appotapay.com/v2/bank/payment/process?tran=dGlkPUFQMjMxNDQwNDkwODI0Jm9yZGVySWQ9YVY2a01uakR2JnRzPTE2OTkyMzYwNTQ&sign=bfff37df0d919ac1ea9d7163934bbc8ce785c6bbf7a210fb12696c8e531532ed&lang=vi",
"qrCode": null,
"deepLinkUrl": ""
}
}

Thất bại

HTTP Status Code != 200 Với errorCode trả về, vui lòng tham khảo bảng mã lỗi tại đây

Error response params

Tham sốYêu cầuKiểu dữ liệuMô tả
errorCoderequiredIntegerMã lỗi
messagerequiredStringMô tả lỗi
errorsoptionalArray of ObjectMô tả lỗi chi tiết các trường nếu có
errors.fieldrequiredObjectTrường dữ liệu bị lỗi
errors.reasonrequiredObjectMô tả trường dữ liệu bị lỗi
{
"errorCode": 1,
"message": "Invalid Params",
"errors": [
{
"field": "transaction.amount",
"reason": "Field amount is required"
},
{
"field": "transaction.currency",
"reason": "Field currency is required"
}
]
}

Bảng mã lỗi

Mã lỗiMô tả
1Thông tin yêu cầu thiếu hoặc không hợp lệ
30Mã đơn hàng đã bị trùng, vui lòng thực hiện lại giao dịch
32Số tiền không hợp lệ
140Partner không có quyền sử dụng paymentMethod
141Partner không có quyền sử dụng bankCode
500Hệ thống gặp lỗi, vui lòng thử lại sau