Skip to main content
Version: 1.0

Payment process

Payment process image


  • Step 1: Customers choose services and products and then choose the form of payment via ATM / Visa card.
  • Step 2, 3: The Partner server calls the AppotaPay server and receives the payment URL
  • Step 4: The Partner's website or app redirects the customer to the checkout page URL
  • Step 5, 6: Customers make the payment
  • Step 7, 8: AppotaPay process the transaction then redirect to the partner’s url. At the same time, the AppotaPay server calls the IPN API (notifyUrl) of the partner server to notify the transaction result.
  • Step 9: The Partner's website or app displays the results to customers.

API Integration Payment#

Endpoint: POST /api/v1/orders/payment/bank

Header: How to generate JWT_TOKEN

{    "X-APPOTAPAY-AUTH": Bearer JWT_TOKEN,    "Content-Type": "application/json"}

HTTP Request:

ParamsRequiredData typeDescription
orderIdStringPartner's Order ID
orderInfoStringOrder info (max 150 characters)
amountNumberPayment amount
clientIpStringCustomer's IP address
notifyUrlStringIPN URL to receive the transaction result.
redirectUrlStringURL to redirect
paymentMethodStringPayment method
bankCodeStringBank Code
extraDataStringAdditional information optional
signatureStringSignature check data

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",    "bankCode": "VCB",    "paymentMethod": "ATM",    "clientIp": "",    "extraData": "",    "notifyUrl": "",    "redirectUrl": "",    "signature": "5c25b7b7607fd982d715a7e8f6c3c352672a9f76ba1362298d54874e312d1a67"}

HTTP Response:

ParamsData typeDescription
errorCodeIntegerError Code
messageStringError code detail
orderIdStringOrder ID
amountIntegerPayment amount
paymentUrlStringPayment URL
signatureStringSignature check data

Example Response:

{    "errorCode": 0,    "message": "Thành công",    "orderId": "5f62d5bdbe3aa",    "amount": 50000,    "paymentUrl": "",    "signature": "28263c482a5fa75c8c388d12477b10e4ee76572c28fce0cd4d089053b25a0392"}