Download OpenAPI specification:Download
Tài liệu hướng dẫn tích hợp với OneLife API. OneLife sử dụng 2 server để giúp đối tác tích hợp và kiểm thử
Lấy danh sách thẻ OneLife có thể nạp tại 1 cửa hàng để hiển thị
| partnerCode required | string Mã định danh của đối tác |
| storeId required | string Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| deviceId required | string Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| signature required | string Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "results": [
- {
- "id": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "amount": 0,
- "extra_value": 0,
- "extend_expiry": 0,
- "extend_expiry_unit": "DAY",
- "currency": "VND",
- "term": "string",
- "condition": "string",
- "name": "string",
- "description": "string",
- "status": "pending"
}
]
}Lấy thông tin chi tiết thẻ OneLife thông qua cardId
| cardId required | integer Mã định danh của thẻ OneLife |
| partnerCode required | string Mã định danh của đối tác |
| storeId required | string Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| deviceId required | string Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| signature required | string Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "id": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "amount": 0,
- "extra_value": 0,
- "extend_expiry": 0,
- "extend_expiry_unit": "DAY",
- "currency": "VND",
- "term": "string",
- "condition": "string",
- "name": "string",
- "description": "string",
- "status": "pending"
}| grant_type required | string Value: "refresh_token" OAuth2 grant type |
| refreshToken required | string Token dùng để gia hạn mã truy cập |
{- "refreshToken": "string"
}{- "accessToken": "string",
- "tokenType": "bearer",
- "expiresIn": 0,
- "refreshToken": "string"
}Lấy thông tin số dư thẻ OneLife của khách hàng
| userId | string Mã định danh của người dùng OneLife, được lấy từ JWT Token trả về khi user login |
| phone | string Số điện thoại của user. Mặc định sẽ lấy thông tin theo số điện thoại (trong trường hợp truyền cả |
| partnerCode required | string Mã định danh của đối tác |
| storeId required | string Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| deviceId required | string Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| signature required | string Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "walletId": 0,
- "userId": 0,
- "balance": 0,
- "extraBalance": 0,
- "expirationDate": "2019-08-24T14:15:22Z",
- "partnerCode": "string",
- "isNau": null
}Cập nhật thông tin điểm thành viên thẻ OneLife của khách hàng
| partnerCode required | string Mã định danh của đối tác |
| partnerMembership required | string Hạng thành viên |
| partnerMemberPointUnit required | string Phân loại hạng thành viên |
| partnerMemberPointValue required | int64 Điểm thành viên |
| phone required | string Số điện thoại đăng kí OneLife |
| signature required | string Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 để mã hóa data theo dạng:
|
{- "partnerCode": "string",
- "partnerMembership": "string",
- "partnerMemberPointUnit": "string",
- "partnerMemberPointValue": null,
- "phone": "string",
- "signature": "string"
}{- "walletId": 0,
- "userId": 0,
- "balance": 0,
- "extraBalance": 0,
- "expirationDate": "2019-08-24T14:15:22Z",
- "partnerCode": "string",
- "isNau": null
}Thay đổi phương thức thanh toán giao dịch nạp thẻ
Yêu cầu xác thực sử dụng Basic Authentication (truyền username:password đã được encoded base64 trong header). Ví dụ: Basic cXVvY2RhdC5seUBraW5nZm9vZG1hcnQuY29tOjlrODkhVTl1RjBzcg==
| partnerCode required | string (partnerCode) Mã định danh của đối tác |
| deviceId required | string (deviceId) Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| storeId required | string (storeId) Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| phone required | string Số điện thoại đăng kí OneLife của khách hàng, định dạng +84xxxxxxxxx (nếu đã có |
| extraData required | string (extraData) Dữ liệu khác. Encode
|
| orderId required | string <string> (orderId) Mã định danh của yêu cầu thanh toán |
| newPaymentGatewayId required | string Mã cổng thanh toán mới |
| newPaymentMethod required | string Enum: "cash" "atm" "credit_debit_card" "brand_card" "wallet" "qr_code" "banking_card" Phương thức thanh toán mới |
| signature required | string (signature) Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "partnerCode": "string",
- "deviceId": "string",
- "storeId": "string",
- "phone": "string",
- "extraData": "string",
- "orderId": "string",
- "newPaymentGatewayId": "string",
- "newPaymentMethod": "cash",
- "signature": "string"
}{- "orderId": "string",
- "phone": "string",
- "paymentGatewayName": "string",
- "paymentGatewayId": "string",
- "paymentMethod": "string",
- "brandCardId": "string",
- "brandCardName": "string",
- "totalAmount": null,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Hủy bỏ giao dịch nạp thẻ
Yêu cầu xác thực sử dụng Basic Authentication (truyền username:password đã được encoded base64 trong header). Ví dụ: Basic cXVvY2RhdC5seUBraW5nZm9vZG1hcnQuY29tOjlrODkhVTl1RjBzcg==
| partnerCode required | string (partnerCode) Mã định danh của đối tác |
| deviceId required | string (deviceId) Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| storeId required | string (storeId) Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| phone required | string Số điện thoại đăng kí OneLife của khách hàng, định dạng +84xxxxxxxxx |
| extraData | string (extraData) Dữ liệu khác. Encode
|
| orderId required | string <string> (orderId) Mã định danh của yêu cầu thanh toán |
| signature required | string (signature) Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "partnerCode": "string",
- "deviceId": "string",
- "storeId": "string",
- "phone": "string",
- "extraData": "string",
- "orderId": "string",
- "signature": "string"
}{- "orderId": "string",
- "voidOrderId": "string",
- "phone": "string",
- "beforeBalance": null,
- "beforeExtraBalance": null,
- "afterBalance": null,
- "afterExtraBalance": null,
- "status": "success",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Hủy bỏ giao dịch thanh toán
Yêu cầu xác thực sử dụng Basic Authentication (truyền username:password đã được encoded base64 trong header). Ví dụ: Basic cXVvY2RhdC5seUBraW5nZm9vZG1hcnQuY29tOjlrODkhVTl1RjBzcg==
| partnerCode required | string (partnerCode) Mã định danh của đối tác |
| partnerRefOrderId required | string (partnerRefOrderId) Mã định danh của đơn hàng của đối tác |
| deviceId required | string (deviceId) Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| storeId required | string (storeId) Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| phone required | string Số điện thoại đăng kí OneLife của khách hàng, định dạng +84xxxxxxxxx |
| extraData | string (extraData) Dữ liệu khác. Encode
|
| signature required | string (signature) Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "partnerCode": "string",
- "partnerRefOrderId": "string",
- "deviceId": "string",
- "storeId": "string",
- "phone": "string",
- "extraData": "string",
- "signature": "string"
}{- "orderId": "string",
- "voidOrderId": "string",
- "phone": "string",
- "beforeBalance": null,
- "beforeExtraBalance": null,
- "afterBalance": null,
- "afterExtraBalance": null,
- "status": "success",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Bổ sung giao dịch thanh toán
Lưu ý: giao dịch sẽ chỉ có thể bổ sung khi tài khoản của khách hàng chưa phát sinh giao dịch mới kể từ thời điểm orderDate truyền vô. Nếu nhận thông báo từ chổi, vui lòng liên hệ team OneLife để được hỗ trợ
| partnerCode required | string (partnerCode) Mã định danh của đối tác | ||||||||||||
| deviceId required | string (deviceId) Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng | ||||||||||||
| storeId required | string (storeId) Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng | ||||||||||||
| partnerRefOrderId required | string (partnerRefOrderId) Mã định danh của đơn hàng của đối tác | ||||||||||||
| orderInfo required | string Thông tin chi tiết hóa đơn | ||||||||||||
| paymentAmount required | integer <int64> Số tiền cần thanh toán | ||||||||||||
| phone required | string Số điện thoại đăng kí OneLife của khách hàng, định dạng +84xxxxxxxxx | ||||||||||||
| orderDate required | string Thời điểm phát sinh giao dịch. Định dạng ngày tháng là | ||||||||||||
| ipnUrl | string <url> webhook phía đối tác cung cấp để OneLife trả kết quả về server đối tác. Webhook cần xây dựng với các thuộc tính như sau:
Payload từ phía server OneLife truyền sang khi thông báo trạng thái giao dịch sẽ có cấu trúc như summary:
| ||||||||||||
| extraData required | string (extraData) Dữ liệu khác. Encode
| ||||||||||||
| signature required | string (signature) Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "partnerCode": "string",
- "deviceId": "string",
- "storeId": "string",
- "partnerRefOrderId": "string",
- "orderInfo": "string",
- "paymentAmount": 0,
- "phone": "string",
- "orderDate": "string",
- "ipnUrl": "string",
- "extraData": "string",
- "signature": "string"
}{- "orderId": "string",
- "transactionId": "string",
- "paymentStatus": "pending",
- "partnerCode": "string",
- "extraData": "string",
- "balanceCharged": null,
- "extraBalanceOLCharged": null,
- "extraBalancePartnerCharged": null,
- "beforeBalance": null,
- "beforeExtraBalance": null,
- "afterBalance": null,
- "afterExtraBalance": null,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Tra cứu thông tin giao dịch thông qua orderId
| orderId required | string Mã định danh của yêu cầu thanh toán |
| partnerRefOrderId required | string Mã định danh của đơn hàng của đối tác |
| partnerCode required | string Mã định danh của đối tác |
| storeId required | string Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| deviceId required | string Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| signature required | string Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "orderId": "string",
- "userId": "string",
- "userPhone": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "orderDate": "2019-08-24T14:15:22Z",
- "totalAmount": null,
- "undiscountTotalAmount": null,
- "totalPaid": null,
- "status": "draft",
- "note": "string",
- "partnerRefOrderId": "string",
- "description": "string",
- "balanceCharged": null,
- "extraBalanceOLCharged": null,
- "extraBalancePartnerCharged": null,
- "type": "string",
- "storeId": "string",
- "deviceId": "string",
- "ipnUrl": "string",
- "transactionFee": null,
- "transactionId": "string",
- "paymentStatus": "pending"
}Lấy dữ liệu đối soát giao dịch theo ngày
| from required | string <date-time> Thời điểm bắt đầu truy xuất dữ liệu giao dịch |
| to required | string <date-time> Thời điểm kết thúc truy xuất dữ liệu giao dịch |
| page | integer Số thứ tự trang kết quả cần truy xuất. Mặc định page = 1 |
| perpage | integer Số lượng giao dịch trả về trong 1 trang kết quả. Mặc định perpage = 100. Nếu perpage = -1 thì sẽ trả về tất cả kết quả trong 1 lần gọi mà không có phân trang |
| type required | string Enum: "TOPUP" "PAYMENT" Loại dữ liệu giao dịch cần lấy: TOPUP = Giao dịch nạp thẻ, PAYMENT = Giao dịch thanh toán bằng OneLife |
| partnerCode required | string Mã định danh của đối tác |
| signature required | string Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "total": 0,
- "from": null,
- "to": null,
- "type": "TOPUP",
- "page": { },
- "results(1)": [
- {
- "no": 0,
- "partnerName": "string",
- "brandCardId": null,
- "userId": null,
- "fullName": "string",
- "gender": "string",
- "address": "string",
- "phone": "string",
- "txDescription": "string",
- "txDate": "string",
- "txId": null,
- "paymentChannel": "string",
- "paymentSource": "string",
- "paymentPlatform": "string",
- "storeCode": "string",
- "storeName": "string",
- "cardAmount": null,
- "balance": null,
- "extraBalance": null,
- "totalBalance": null,
- "beginningBalance": null,
- "beginningExtraBalance": null,
- "beginningTotalBalance": null,
- "debitBalance": null,
- "debitExtraBalance": null,
- "debitTotalBalance": null,
- "crebitBalance": null,
- "crebitExtraBalance": null,
- "crebitTotalBalance": null,
- "endingBalance": null,
- "endingExtraBalance": null,
- "endingTotalBalance": null,
- "brandCardName": "string",
- "promoType": "string",
- "totalPromoRatio": null,
- "partnerPromoRatio": null,
- "partnerPromoValue": null,
- "olPromoRatio": null,
- "olPromoValue": null,
- "txType": "string",
- "expiryDate": null,
- "txStatus": "string"
}
], - "results(2)": [
- {
- "no": 0,
- "storeCode": "string",
- "storeName": "string",
- "saleChannel": "string",
- "paymentChannel": "string",
- "paymentSource": "string",
- "txId": null,
- "txDate": null,
- "partnerRefOrderId": "string",
- "paymentAmount": null,
- "fromBalance": null,
- "fromExtraBalance": null,
- "beforeVAT": null,
- "VAT": null,
- "afterFee": null,
- "userId": null,
- "fullName": "string",
- "txStatus": "string"
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Lấy danh sách giao dịch 2 ngày gần nhất (dùng cho Business Portal)
| partnerCode required | string Mã định danh của đối tác |
| storeId required | string Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| deviceId required | string Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| signature required | string Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "orders": [
- {
- "orderId": "string",
- "orderDate": "2019-08-24T14:15:22Z",
- "totalAmount": null,
- "storeId": "string",
- "storeAddress": "string",
- "storeName": "string",
- "type": "topup",
- "status": "draft",
- "userPhone": "string"
}
]
}Lấy dữ liệu phân tích của khách hàng trong tháng
| partnerCode required | string Mã định danh của đối tác |
| storeId required | string Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| deviceId required | string Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| phone required | string Số điện thoại đăng kí OneLife của khách hàng, định dạng +84xxxxxxxxx |
| signature required | string Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "totalOrdersPerMonth": 0,
- "totalOrderValuePerMonth": null,
- "avgOrderValuePerMonth": null
}Lấy danh sách cửa hàng
| partnerCode required | string Mã định danh của đối tác |
| storeId required | string Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| deviceId required | string Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| signature required | string Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "stores": [
- {
- "storeId": "string",
- "storeAddress": "string",
- "storeName": "string"
}
]
}



Có các trường hợp sau:
phone, field paymentCode để trống. Định dạng của số điện thoại là +84xxxxxxxxxpaymentCode, field phone để trống. Định dạng của payment code là OLPMCxxxxxx (43 ký tự)paymentCode và phone để trống, response trả về dùng để render thành mã QR hiển thị lên màn hình POS cho khách hàng quét
Lưu ý: nếu cả 2 field phone và paymentCode đều được truyền giá trị, thì mặc định sẽ lấy paymentCode để xử lý theo luồng khách hàng sử dụng mã thanh toán cá nhân| partnerCode required | string (partnerCode) Mã định danh của đối tác | ||||||||||||
| deviceId required | string (deviceId) Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng | ||||||||||||
| storeId required | string (storeId) Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng | ||||||||||||
| partnerRefOrderId required | string (partnerRefOrderId) Mã định danh của đơn hàng của đối tác | ||||||||||||
| orderInfo required | string Thông tin chi tiết hóa đơn | ||||||||||||
| paymentAmount required | integer <int64> Số tiền cần thanh toán | ||||||||||||
| phone required | string Số điện thoại đăng kí OneLife của khách hàng, định dạng +84xxxxxxxxx (nếu đã có | ||||||||||||
| paymentCode required | string Mã thanh toán do thu ngân quét từ app OneLife của khách hàng (nếu đã có | ||||||||||||
| ipnUrl | string <url> webhook phía đối tác cung cấp để OneLife trả kết quả về server đối tác. Webhook cần xây dựng với các thuộc tính như sau:
Payload từ phía server OneLife truyền sang khi thông báo trạng thái giao dịch sẽ có cấu trúc như summary:
| ||||||||||||
| extraData required | string (extraData) Dữ liệu khác. Encode
| ||||||||||||
| signature required | string (signature) Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "partnerCode": "string",
- "deviceId": "string",
- "storeId": "string",
- "partnerRefOrderId": "string",
- "orderInfo": "string",
- "paymentAmount": 0,
- "phone": "string",
- "paymentCode": "string",
- "ipnUrl": "string",
- "extraData": "string",
- "signature": "string"
}{- "orderId": "string",
- "transactionId": "string",
- "paymentStatus": "pending",
- "partnerCode": "string",
- "extraData": "string",
- "expireIn": 0,
- "frequencyLimit": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Xác nhận thanh toán bằng thẻ OneLife
| partnerCode required | string (partnerCode) Mã định danh của đối tác |
| deviceId required | string (deviceId) Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| storeId required | string (storeId) Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| partnerRefOrderId required | string (partnerRefOrderId) Mã định danh của đơn hàng của đối tác |
| orderInfo | string Thông tin chi tiết hóa đơn |
| paymentAmount required | integer <int64> Số tiền cần thanh toán |
| phone | string (phone) Số điện thoại đăng kí OneLife của khách hàng, định dạng +84xxxxxxxxx (nếu đã có |
| paymentCode | string (paymentCode) Mã thanh toán do thu ngân quét từ app OneLife của khách hàng (nếu đã có |
| orderId required | string <string> (orderId) Mã định danh của yêu cầu thanh toán |
| transactionId required | string <string> (transactionId) Mã định danh của giao dịch thanh toán |
| otp | string Mã xác thực 1 lần (OTP) do user cung cấp được gửi bởi OneLife server qua SMS tới khách hàng. Nếu khách hàng dùng mã thanh toán cá nhân hoặc quét mã QR thì trường này không bắt buộc |
| extraData | string (extraData) Dữ liệu khác. Encode
|
| signature required | string (signature) Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "partnerCode": "string",
- "deviceId": "string",
- "storeId": "string",
- "partnerRefOrderId": "string",
- "orderInfo": "string",
- "paymentAmount": 0,
- "phone": "string",
- "paymentCode": "string",
- "orderId": "string",
- "transactionId": "string",
- "otp": "string",
- "extraData": "string",
- "signature": "string"
}{- "orderId": "string",
- "transactionId": "string",
- "paymentStatus": "pending",
- "partnerCode": "string",
- "extraData": "string",
- "otpFailedCounter": 0,
- "balanceCharged": null,
- "extraBalanceOLCharged": null,
- "extraBalancePartnerCharged": null,
- "beforeBalance": null,
- "beforeExtraBalance": null,
- "afterBalance": null,
- "afterExtraBalance": null,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Hủy yêu cần thanh toán bằng thẻ OneLife
| partnerCode required | string (partnerCode) Mã định danh của đối tác |
| deviceId required | string (deviceId) Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| storeId required | string (storeId) Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| partnerRefOrderId required | string (partnerRefOrderId) Mã định danh của đơn hàng của đối tác |
| orderId required | string <string> (orderId) Mã định danh của yêu cầu thanh toán |
| signature required | string (signature) Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "partnerCode": "string",
- "deviceId": "string",
- "storeId": "string",
- "partnerRefOrderId": "string",
- "orderId": "string",
- "signature": "string"
}{- "orderId": "string",
- "status": "CANCELED"
}Yêu cầu gửi Voice OTP tại POS. Mặc định, giao dịch thanh toán dùng thẻ OneLife tại POS sẽ gửi OTP qua channel SMS. Trong trường hợp user không nhận được SMS, thì cashier có thể nhấn nút request VoiceOTP, thời gian giữa mỗi lần call API success là 60s
| partnerCode required | string (partnerCode) Mã định danh của đối tác |
| deviceId required | string (deviceId) Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| storeId required | string (storeId) Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| orderId required | string <string> (orderId) Mã định danh của yêu cầu thanh toán |
| extraData required | string (extraData) Dữ liệu khác. Encode
|
| signature required | string (signature) Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "partnerCode": "string",
- "deviceId": "string",
- "storeId": "string",
- "orderId": "string",
- "extraData": "string",
- "signature": "string"
}{- "orderId": "string",
- "phone": "string",
- "expireIn": 0,
- "status": "success"
}Nạp thẻ OneLife tại POS
Lưu ý: phần tài liệu dưới đây mô tả về việc đối tác tích hợp qua API, Nếu đối tác lựa chọn giải pháp embed web view, vui lòng theo dõi tại đây
Tạo yêu cầu nạp thẻ OneLife
| partnerCode required | string (partnerCode) Mã định danh của đối tác |
| deviceId required | string (deviceId) Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| storeId required | string (storeId) Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| partnerRefOrderId required | string (partnerRefOrderId) Mã định danh của đơn hàng của đối tác |
| brandCardId required | string Mã định danh của thẻ OneLife cần nạp. Mã định danh được trả về từ API Lấy danh sách thẻ OneLife |
| phone required | string (phone) Số điện thoại đăng kí OneLife của khách hàng, định dạng +84xxxxxxxxx (nếu đã có |
| paymentCode required | string (paymentCode) Mã thanh toán do thu ngân quét từ app OneLife của khách hàng (nếu đã có |
| paymentMethod required | any (paymentMethod) Enum: "cash" "banking_card" Phương thức thanh toán |
| extraData required | string (extraData) Dữ liệu khác. Encode
|
| signature required | string (signature) Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "partnerCode": "string",
- "deviceId": "string",
- "storeId": "string",
- "partnerRefOrderId": "string",
- "brandCardId": "string",
- "phone": "string",
- "paymentCode": "string",
- "paymentMethod": "cash",
- "extraData": "string",
- "signature": "string"
}{- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "orderId": "string",
- "transactionId": "string",
- "paymentStatus": "pending",
- "partnerCode": "string",
- "extraData": "string",
- "expireIn": 0,
- "partnerRefOrderId": "string"
}Xác nhận nạp thẻ OneLife
| brandCardId required | int64 Mã thẻ nạp |
| partnerCode required | string (partnerCode) Mã định danh của đối tác |
| deviceId required | string (deviceId) Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| storeId required | string (storeId) Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| partnerRefOrderId required | string (partnerRefOrderId) Mã định danh của đơn hàng của đối tác |
| orderId required | string <string> (orderId) Mã định danh của yêu cầu thanh toán |
| transactionId required | string <string> (transactionId) Mã định danh của giao dịch thanh toán |
| phone required | string (phone) Số điện thoại đăng kí OneLife của khách hàng, định dạng +84xxxxxxxxx (nếu đã có |
| paymentCode required | string (paymentCode) Mã thanh toán do thu ngân quét từ app OneLife của khách hàng (nếu đã có |
| paymentMethod required | any (paymentMethod) Enum: "cash" "banking_card" Phương thức thanh toán |
| otp required | string Mã xác thực 1 lần (OTP) do user cung cấp được gửi bởi OneLife server qua SMS tới khách hàng. Nếu khách hàng dùng mã thanh toán cá nhân hoặc quét mã thì trường này không bắt buộc |
| extraData required | string (extraData) Dữ liệu khác. Encode
|
| signature required | string (signature) Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "brandCardId": null,
- "partnerCode": "string",
- "deviceId": "string",
- "storeId": "string",
- "partnerRefOrderId": "string",
- "orderId": "string",
- "transactionId": "string",
- "phone": "string",
- "paymentCode": "string",
- "paymentMethod": "cash",
- "otp": "string",
- "extraData": "string",
- "signature": "string"
}{- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "orderId": "string",
- "transactionId": "string",
- "paymentStatus": "pending",
- "partnerCode": "string",
- "extraData": "string",
- "otpFailedCounter": 0,
- "beforeBalance": null,
- "beforeExtraBalance": null,
- "afterBalance": null,
- "afterExtraBalance": null,
- "customerFullname": "string",
- "customerPhone": "string",
- "expireIn": 0,
- "frequencyLimit": 0
}Cập nhật extraData của giao dịch
| partnerCode required | string (partnerCode) Mã định danh của đối tác |
| deviceId required | string (deviceId) Mã định danh 1 máy POS trong cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng mã thiết bị của người dùng |
| storeId required | string (storeId) Mã định danh 1 cửa hàng của đối tác. Trong trường hợp tích hợp trên web hoặc app của đối tác, vui lòng sử dụng |
| orderId required | string <string> (orderId) Mã định danh của yêu cầu thanh toán |
| paymentMethod required | any (paymentMethod) Enum: "cash" "banking_card" Phương thức thanh toán |
| extraData required | string (extraData) Dữ liệu khác. Encode
|
| signature required | string (signature) Chữ ký để kiểm tra thông tin. Sử dụng thuật toán HMAC_SHA256 và secretKey được cung cấp riêng cho từng đối tác để mã hóa data theo dạng:
|
{- "partnerCode": "string",
- "deviceId": "string",
- "storeId": "string",
- "orderId": "string",
- "paymentMethod": "cash",
- "extraData": "string",
- "signature": "string"
}{- "extraData": "string"
}Lấy danh sách hạng thành viên của nhà bán hàng
| merchant_id required | uint64 Mã định danh của nhà bán hàng |
{- "code": null,
- "success": true,
- "message": "string",
- "data": [
- {
- "merchant_membership_id": null,
- "merchant_id": null,
- "name": "string",
- "rate": null,
- "logo": "string",
- "description": "string",
- "min": null,
- "max": null
}
]
}Lấy thông tin hạng thành viên của người dùng đối với nhà bán hàng
| customer_id required | string Mã định danh của người dùng OneLife, được lấy từ JWT Token trả về khi user login |
| merchant_id required | string Mã định danh của nhà bán hàng |
{- "code": null,
- "success": true,
- "message": "string",
- "data": {
- "customer_id": null,
- "merchant_id": null,
- "merchant_membership": "string",
- "points": null,
- "currency": "string"
}
}Cấu hình danh sách hạng thành viên cho nhà bán hàng
Array of objects Danh sách cấu hình hạng thành viên |
{- "merchant_memberships": [
- {
- "merchant_id": null,
- "name": "string",
- "logo": "string",
- "rate": null,
- "description": "string",
- "min": null,
- "max": null
}
]
}{- "code": null,
- "success": true,
- "message": "string",
- "data": [
- {
- "merchant_id": null,
- "name": "string",
- "logo": "string",
- "rate": null,
- "description": "string",
- "min": null,
- "max": null
}
]
}Tích luỹ điểm thưởng của nhà bán hàng
| customer_id required | uint64 Mã định danh của người dùng |
| merchant_id required | uint64 Mã định danh của nhà bán hàng |
| order_id required | string Mã định danh của đơn hàng |
| total_amount required | float Tổng giá trị đơn hàng |
{- "customer_id": null,
- "merchant_id": null,
- "order_id": "string",
- "total_amount": null
}{- "code": null,
- "message": "string",
- "success": true
}Đổi thưởng
| customer_id required | uint64 Mã định danh của người dùng |
| reward_id required | uint64 Mã định danh của phần thưởng |
{- "customer_id": null,
- "reward_id": null
}{- "action": "string",
- "payload": {
- "id": "string",
- "code": "string",
- "customer_id": "string",
- "last_point": null,
- "new_point": null,
- "point": null,
- "action": null,
- "transaction_date": "string",
- "created_at": "string",
- "created_by": "string",
- "modified_at": "string",
- "modified_by": "string",
- "metadata": {
- "ratio": null
}, - "reference": {
- "id": "string"
}
}
}Lấy danh sách thưởng của nhà bán hàng
| merchant_id required | string Mã định danh của nhà bán hàng |
| from | int Thời điểm phần thưởng bắt đầu có hiệu lực,\nđơn vị thời gian được tính theo giây (unix timestamp in seconds) |
| to | int Thời điểm phần thưởng hết hiệu lực,\nđơn vị thời gian được tính theo giây (unix timestamp in seconds) |
{- "code": null,
- "success": true,
- "message": "string",
- "data": [
- {
- "reward_id": null,
- "name": "string",
- "merchant_id": null,
- "description": "string",
- "quantity": null,
- "points": null,
- "price_discount": null,
- "from_date": null,
- "to_date": null,
- "type": null,
- "conditions": "string",
- "source": "string",
- "duration": null
}
]
}Hook đồng bộ thay đổi điểm, chi tiêu, hạng thành viên từ KingFood
| action required | string Mô tả hook |
required | object Payload chứa thông tin của yêu cầu |
{- "action": "string",
- "payload": {
- "id": "string",
- "code": "string",
- "customer_id": "string",
- "last_point": null,
- "new_point": null,
- "point": null,
- "action": null,
- "transaction_date": "string",
- "created_at": "string",
- "created_by": "string",
- "modified_at": "string",
- "modified_by": "string",
- "metadata": {
- "ratio": null
}, - "reference": {
- "id": "string"
}
}
}{- "code": null,
- "success": true,
- "message": "string"
}Sản phẩm gợi ý cho đơn hàng Kingfoodmart
| username required | string Tài khoản để xác minh người dùng |
| password required | string Mật khẩu |
| customerCode required | string Mã khách hàng trên hệ thống Kingfoodmart. Ví dụ KH00112233 |
| barcodesInOrder required | string Mã sản phẩm của các mặt hàng hiện có trong đơn hàng của khách hàng (Dùng để gợi ý và để loại trừ sản phẩm nào đã có trong đơn hàng). Các mã được ghép lại thành một chuỗi, ngăn cách bởi dấu phẩy. Ví dụ |
| recomZone required | string Enum: "reorder" "may_like" "popular_product" "cobuy" "recent_view" Phân biệt vùng giới thiệu sản phẩm trên trang web. Giá trị của trường này gồm có:
|
{- "total": 0,
- "variants": [
- {
- "id": "string",
- "inStock": 0,
- "name": "string",
- "slug": "string",
- "sku": "string",
- "discountPrice": null,
- "originalPrice": null,
- "price": null,
- "thumbnail": "string",
- "badges": [
- {
- "type": "string",
- "value": "string"
}
]
}
]
}Sản phẩm gợi ý cho đơn hàng OneLife
| username required | string Tài khoản để xác minh người dùng |
| password required | string Mật khẩu |
| userId required | string Mã khách hàng của customer trên hệ thống OneLife dạng uint64. Ví dụ 188233172716412231 |
| barcodesInOrder required | string Mã sản phẩm của các mặt hàng hiện có trong đơn hàng của khách hàng (Dùng để gợi ý và để loại trừ sản phẩm nào đã có trong đơn hàng). Các mã được ghép lại thành một chuỗi, ngăn cách bởi dấu phẩy. Ví dụ |
| recomZone required | string Enum: "reorder" "may_like" "popular_product" "cobuy" "recent_view" Phân biệt vùng giới thiệu sản phẩm trên trang web. Giá trị của trường này gồm có:
|
{- "total": 0,
- "variants": [
- {
- "id": "string",
- "inStock": 0,
- "name": "string",
- "slug": "string",
- "sku": "string",
- "discountPrice": null,
- "originalPrice": null,
- "price": null,
- "thumbnail": "string",
- "badges": [
- {
- "type": "string",
- "value": "string"
}
]
}
]
}Sản phẩm flash-sale cho đơn hàng OneLife
| userId required | string Mã khách hàng của customer trên hệ thống OneLife dạng uint64. Ví dụ 188233172716412231 |
| barcodesInOrder required | string Mã sản phẩm của các mặt hàng hiện có trong đơn hàng của khách hàng (Dùng để gợi ý và để loại trừ sản phẩm nào đã có trong đơn hàng). Các mã được ghép lại thành một chuỗi, ngăn cách bởi dấu phẩy. Ví dụ |
{- "total": 0,
- "remainTime": 0,
- "variants": [
- {
- "flashSaleDetail": {
- "remainQuantity": 0,
- "totalQuantity": 0
}, - "id": "string",
- "inStock": 0,
- "name": "string",
- "slug": "string",
- "sku": "string",
- "discountPrice": null,
- "originalPrice": null,
- "price": null,
- "thumbnail": "string",
- "badges": [
- {
- "type": "string",
- "value": "string"
}
]
}
]
}Sản phẩm khuyến mãi cho đơn hàng OneLife
| userId required | string Mã khách hàng của customer trên hệ thống OneLife dạng uint64. Ví dụ 188233172716412231 |
| barcodesInOrder required | string Mã sản phẩm của các mặt hàng hiện có trong đơn hàng của khách hàng (Dùng để gợi ý và để loại trừ sản phẩm nào đã có trong đơn hàng). Các mã được ghép lại thành một chuỗi, ngăn cách bởi dấu phẩy. Ví dụ |
{- "total": 0,
- "remainTime": 0,
- "variants": [
- {
- "id": "string",
- "inStock": 0,
- "name": "string",
- "slug": "string",
- "sku": "string",
- "discountPrice": null,
- "originalPrice": null,
- "price": null,
- "thumbnail": "string",
- "badges": [
- {
- "type": "string",
- "value": "string"
}
]
}
]
}Danh sách mã lỗi trả về từ hệ thống của OneLife
| Code | Mô tả |
|---|---|
| 0 | Lỗi không xác định. Vui lòng liên hệ support@onelife.vn để được hỗ trợ |
| 2000 | Payload thiếu các trường yêu cầu |
| 2001 | Payload không chính xác |
| 2002 | Chữ ký không chính xác |
| 2003 | Thông tin không chính xác |
| 2004 | Số điện thoại không chính xác |
| 3000 | Quyền truy cập bị từ chối |
| 3001 | Tài khoản chưa xác thực |
| 3002 | Tài khoản không hoạt động |
| 3003 | Mã OTP không chính xác |
| 3004 | Quá giới hạn số lần gửi OTP. Vui lòng thử lại sau |
| 3005 | OTP nhập sai quá số lần cho phép |
| 3006 | Quá giới hạn số lần gửi OTP |
| 4000 | Hệ thống đang bảo trì. Vui lòng thử lại sau |
| 4001 | Lỗi hệ thống. Vui lòng liên hệ support@onelife.vn để được hỗ trợ |
| 4002 | Deadline exceeded |
| 4003 | Canceled |
| 4004 | Aborted |
| 5001 | Tài khoản không tồn tại |
| 5002 | Tài khoản thanh toán không tồn tại |
| 6001 | Mã thanh toán không chính xác hoặc đã hết hạn |
| 6002 | Mã thanh toán đã hết hạn |
| 6003 | Số dư tài khoản không đủ |
| 6004 | Giao dịch đã hết hạn |
| 6005 | Tài khoản vượt quá hạn mức |
| 6006 | Giao dịch đã thanh toán |
| 6007 | Trạng thái giao dịch không hỗ trợ thao tác này |
| 6008 | Loại giao dịch không hỗ trợ thao tác này |
| 6009 | Từ chối bổ sung giao dịch thanh toán vì tài khoản đã có giao dịch phát sinh. Vui lòng liên hệ team OneLife để được hỗ trợ |
| 6010 | Từ chối hủy giao dịch vì tài khoản đã có giao dịch phát sinh. Vui lòng liên hệ team OneLife để được hỗ trợ |
| 6011 | Số điện thoại không chính xác với thông tin trong giao dịch |
| 6012 | Giao dịch đã bị hủy |