Xử lý kết quả trả góp
Sau khi giao dịch thanh toán thẻ tín dụng được chuyển đổi sang hình thức trả góp, AppotaPay sẽ gửi thông báo kết quả qua API URL của phía đối tác đã đăng ký để đối tác cập nhật trạng thái giao dịch trả góp.
Lưu ý
- Cần kiểm tra kĩ thông số trường
transaction.status,transaction.paymentAmount&signaturephải hợp lệ trước khi xác nhận giao dịch trả góp thành công - 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ốsignatureAppotaPay gửi sang - Chữ ký được tính trên chuỗi Base64 gốc của trường
data(không phải trên JSON đã giải mã) — cần xác thựcsignaturetrước khi giải mãdata - IPN có thể được gửi lại nhiều lần cho cùng một giao dịch
- Trường
timechỉ mang tính tham khảo thời điểm gửi, không tham gia vào việc tínhsignature
IPN (Instant Payment Notification)
AppotaPay sẽ gửi thông báo kết quả giao dịch trả góp qua API URL của phía đối tác đã đăng ký, 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 giao dịch trả góp.
Header
{
"Content-Type": "application/json"
}
Response 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ã dữ liệu ở dạng string - Sử dụng hàm
JSON_Decodeđể giải mã dữ liệu lần 2 ở dạng json
| Tham số | Yêu cầu | Kiểu dữ liệu | Mô tả |
|---|---|---|---|
| transaction | required | Object | Thông tin giao dịch trả góp |
| transaction.transactionId | required | String | Mã giao dịch trả góp do AppotaPay sinh ra |
| transaction.partnerCode | required | String | Mã định danh partner |
| transaction.referenceId | required | String | Mã đơn hàng của giao dịch thanh toán gốc (orderId) |
| transaction.bankCode | required | String | Mã ngân hàng phát hành thẻ |
| transaction.authCode | required | String | Mã chuẩn chi (approval code) của ngân hàng |
| transaction.paymentAmount | required | Integer | Tổng số tiền giao dịch trả góp (VND) |
| transaction.payPerMonth | required | Integer | Số tiền phải trả mỗi tháng (VND) |
| transaction.feeConversion | required | Float | Tỷ lệ phí chuyển đổi trả góp (%) của gói vay được chọn |
| transaction.loanPackageId | required | String | ID gói vay trả góp áp dụng |
| transaction.gracePeriod | required | String | Kỳ hạn trả góp (số tháng) |
| transaction.status | required | String | Trạng thái giao dịch trả góp |
| transaction.statusCancel | optional | String | Trạng thái huỷ giao dịch trả góp |
| transaction.errorCode | required | Integer | Mã lỗi giao dịch trả góp |
| transaction.errorMessage | required | String | Mô tả lỗi tương ứng với errorCode |
| transaction.feePartner | required | Integer | Phí partner phải chịu (VND) |
| transaction.feeUser | required | Integer | Phí khách hàng phải chịu (VND) |
| transaction.reasonCancel | optional | String | Lý do huỷ giao dịch trả góp |
| transaction.reasonUpdate | optional | String | Lý do cập nhật giao dịch |
| transaction.completedAt | optional | Integer | Thời điểm hoàn tất giao dịch trả góp (Unix timestamp (giây)) |
| transaction.updatedAt | required | Integer | Thời điểm cập nhật gần nhất (Unix timestamp (giây)) |
| transaction.createdAt | required | Integer | Thời điểm tạo giao dịch trả góp (Unix timestamp (giây)) |
Bảng mã trạng thái
| Trạng thái | Mô tả |
|---|---|
| pending | Giao dịch đang chờ xử lý. |
| success | Giao dịch thành công. |
| error | Giao dịch thất bại. |