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

Quy trình thanh toán

Ảnh 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.
Lưu ý

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.

Endpoint: POST /api/v1/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ầuKiểu dữ liệuMô tả
orderIdStringMã đơn hàng phía đối tác
orderInfoStringThông tin đơn hàng(tối đa 150 kí tự)
amountNumberSố tiền thanh toán
clientIpStringĐịa chỉ IP khách hàng thanh toán
notifyUrlStringIPN URL nhận kết quả giao dịch
redirectUrlStringURL chuyển hướng khi giao dịch hoàn tất
paymentMethodStringPhương thức thanh toán
bankCodeStringMã Ngân hàng khách hàng đã chọn
extraDataStringThông tin tuỳ chọn bổ sung
signatureStringChữ ký kiểm tra dữ liệu

signature = HMAC_SHA256(data, secretKey)

data: amount={amount}&bankCode={bankCode}&clientIp={clientIp}&extraData={extraData}&notifyUrl={notifyUrl}&orderId={orderId}&orderInfo={orderInfo}&paymentMethod={paymentMethod}&redirectUrl={redirectUrl}

Example Request

{
"amount": 10000,
"orderId": "5f61cf4f41e2b",
"orderInfo": "test thanh toan",
"bankCode": "VCB",
"paymentMethod": "ATM",
"clientIp": "103.53.171.140",
"extraData": "",
"notifyUrl": "http://yourwebsite.com/ipn",
"redirectUrl": "http://yourwebsite.com/redirect",
"signature": "5c25b7b7607fd982d715a7e8f6c3c352672a9f76ba1362298d54874e312d1a67"
}

HTTP Response

Tham sốKiểu dữ liệuMô tả
errorCodeIntegerMã lỗi
messageStringThông tin mô tả mã lỗi
orderIdStringMã đơn hàng
amountIntegerSố tiền thanh toán
paymentUrlStringURL thanh toán
signatureStringChữ 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"
}