Quy trình thanh toán
Diễn giải
- Bước 1: Khách hàng chọn dịch vụ, sản phẩm sau đó chọn hình thức thanh toán qua thẻ ATM/Visa.
- Bước 2, 3: Server phía đối tác gọi sang server AppotaPay nhận được URL thanh toán.
- Bước 4: Website, ứng dụng phía đối tác điều hướng khách hàng tới URL trang thanh toán.
- Bước 5, 6: Khách hàng thực hiện thanh toán.
- Bước 7, 8: AppotaPay xử lý giao dịch sau đó redirect tới
redirectUrl
của đối tác, đồng thời server AppotaPay gọi tới IPN API (notifyUrl
) của server phía đối tác để thông báo kết quả giao dịch. - Bước 9: Website, ứng dụng phía đối tác hiển thị thông báo cho khách hàng.
Trước khi xử lý giao dịch nên gọi api kiểm tra trạng thái giao dịch & kiểm tra kĩ thông số các trường status, amount & signature
API Tích hợp thanh toán
Trên Webiste, ứng dụng phía đối tác sau khi khác hàng lựa chọn dịch vụ hoặc sản phẩm và chọn thanh toán qua tài khoản ngân hàng ATM, Visa. Server của đối tác gọi qua API của AppotaPay để tạo thông tin giao dịch và lấy được URL thanh toán, sau đó Website, ứng dụng phía đối tác điều hướng khách hàng tới URL trang 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/v1.1/orders/payment/bank
Header: Cách tạo JWT_TOKEN
{
"X-APPOTAPAY-AUTH": Bearer JWT_TOKEN,
"Content-Type": "application/json"
}
HTTP Request:
Tham số | Yêu cầu | Kiểu dữ liệu | Mô tả |
---|---|---|---|
orderId | √ | String | Mã đơn hàng phía đối tác |
orderInfo | √ | String | Thông tin đơn hàng(tối đa 150 kí tự) |
amount | √ | Number | Số tiền thanh toán |
clientIp | √ | String | Địa chỉ IP khách hàng thanh toán |
notifyUrl | √ | String | IPN URL nhận kết quả giao dịch |
redirectUrl | √ | String | URL chuyển hướng khi giao dịch hoàn tất |
paymentMethod | String | Phương thức thanh toán | |
bankCode | String | Mã Ngân hàng khách hàng đã chọn | |
action | String | Hành động thanh toán muốn thực hiện | |
token | String | Token sử dụng để thanh toán (trong trường hợp dùng token) | |
extraData | String | Thông tin tuỳ chọn bổ sung | |
signature | √ | String | Chữ ký kiểm tra dữ liệu signature = data: |
Example Request
{
"amount": 10000,
"orderId": "5f61cf4f41e2b",
"orderInfo": "test thanh toan",
"bankCode": "VCB",
"paymentMethod": "ATM",
"clientIp": "103.53.171.140",
"extraData": "",
"action": "PAY"
"notifyUrl": "https://yourwebsite.com/ipn",
"redirectUrl": "https://yourwebsite.com/redirect",
"signature": "2308245a61934a85d10b4e03b7663b9ee4b64651cc8f885ad0dc67c8b729fec5"
}
HTTP Response:
Tham số | Kiểu dữ liệu | Mô tả |
---|---|---|
errorCode | Integer | Mã lỗi |
message | String | Thông tin mô tả mã lỗi |
orderId | String | Mã đơn hàng |
amount | Integer | Số tiền thanh toán |
paymentUrl | String | URL thanh toán |
signature | String | Chữ ký kiểm tra dữ liệu trả về |
Example Response
{
"errorCode": 0,
"message": "Thành công",
"orderId": "5f62d5bdbe3aa",
"amount": 50000,
"paymentUrl": "https://payment.dev.appotapay.com/bank/payment/process?tran=dGlkPUFQMjAwOTEwMDE4MjI5QiZvcmRlcklkPTVmNjJkNWJkYmUzYWEmdHM9MTYwMDMxMjc2Ng&sign=1a1fb2411ad118faa822867a81072138313580d5a099a68e64f8255b5bf69bf5",
"signature": "28263c482a5fa75c8c388d12477b10e4ee76572c28fce0cd4d089053b25a0392"
}