Skip to main content

Check Payment Status

Step 1: Get Access Token

Please refer to Access Token on how to get Access Token, and then place it into Request Headers' Authorization.

Step 2: Prepare Request Parameter

Generate nonceStr and timestamp, which will be placed into Request Headers and also be used to create Signature.

Parameter Type Required Description Example
nonceStr String Yes Random String 7a70f55482a5566c
timestamp String Yes UNIX timestamp of request 1667061151361

Request Parameters

Parameter Type Required Description Example
transactionId String Yes ID of the transaction
Type String Yes [1 = Payment, 2 = Payout] 1

Example Request

{
"transactionId": "10310",
"type": 1
}

Sort the above JSON key alphabetically and make it compact

info

{"transactionId": "10310", "type": 1}

Encode the data to Base64 format

info

eyJjdXN0b21lciI6eyJuYW1lIjoiTGVvbiBUYW4iLCJwaG9uZSI6IjAxMjM0NTY3ODkiLCJlbWFpbCI6Imxlb25AZ2dncGF5Lm9yZyJ9LCJtZXRob2QiOiJGUFgiLCJvcmRlciI6eyJpZCI6IkEyMDIyMTExMSIsInRpdGxlIjoiUGF5bWVudCIsImFtb3VudCI6Ijg4LjUwIiwiY3VycmVuY3lUeXBlIjoiTVlSIiwiYWRkaXRpb25hbERhdGEiOiIifX0=

Encode the Base64 format data with CLIENT_SYMMETRIC_KEY

info

e4e9ac1120ed867a7af108af8b1ab9183319f8a334bcdbbea47232359ae0a5c9c4ad1e46450ef4b36775aeb624b14b722a6884abd9b1f7572f1fdb33ce7a8bfec3d69d3e2e1aa77487c55b181613bfbef1028c8da984f5b59c8d6241eefcaf70

Step 3: Generate Signature

Please refer to Signature Algorithm on how to get Signature, and then place it into Request Headers' X-Signature.

Step 4: POST to /gateway/v1/getTransactionStatusById endpoint

Method : POST

Endpoint: https://api.superpay.club/gateway/v1/getTransactionStatusById

Request

Headers

Parameter Type Description
Authorization Number Token get from Step 1
X-Nonce-Str String nonceStr from Step 2
X-Timestamp String timestamp from Step 2
X-Signature Number signature from Step 3

Body

Parameter Type Description Example
data String Encrypted Data using CLIENT_SYMMETRIC_KEY e4e9ac1127af1...b59c8d62af70

Example Request Header & Body

{
"headers": {
"Authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjEwMDIOjE2NjczMTYwOTJ9.UnVBt6Opxd_ZOMns1gCT40Ihdj1nbndi2V43Xt3fIuE",
"X-Nonce-Str": "7a70f55482a5566c",
"X-Timestamp": "1667061151361",
"X-Signature": "sha256 zOzjz8QoGTbesuAO5CCFbPCF3EMDtohKtkQPro8O61jbXhurgl+wIYzTv1BQPB6z1+bRn7gXx1YpsItk+Zed+Wd9PqmexoGdDrAAoUKjCcMks9g0/kiVui381jscVAyCUzdMtkW25P4QyTeq5+ES7D66j/Jwk+9JqYXhMnX5aAUdMjlrADp1RC1zrZUc1Mfqs+MA26J3X5uQ8xLhh9FaAhDdoyWctKQSTHZyMVuDtmFaGdzaGI3LCWm5w1gvtHC43mTMccc3WrlirYbDrZvN2c81cNMfRJjgJZNnjjY27OAMvGsJJgpo0b+EW4UO74QzZ2VI60fgf7uIajIOgQRzzA=="
},
"body": {
"data": "e4e9ac1120ed867a7af108af8b1ab918cbec6db7b4d7c29908085a73e2b29e97547da6eae91928b3330241f1fb898eebd8c3355105fdd5c68b6ceea761f41dc3085ed888d3c0473beef128ebd208c4f60299df64a622d04d21d81513c02e2d47bfcce2a6c246eabcc1c823aaf3d9133004cf7c4c08236395a05dc19a98c33a301c8b73d4e7fd33cd911619de86dfdb45"
}
}

Response

Body

Parameter Type Description Example
code Number The status code of this API 200
encryptedData Number Encrypted Data that required be decrypted with CLIENT_SYMMETRIC_KEY a83cf72884cbbb....3ddf0744646e0cf0b482
message String PlainText of the information of this request 'Success'

Example Response

{
"code": 200,
"encryptedData": "e4e9ac1120ed867a7af108af8b1ab918cbec6db7b4d7c29908085a73e2b29e97547da6eae91928b3330241f1fb898eebd8c3355105fdd5c68b6ceea761f41dc3085ed888d3c0473beef128ebd208c4f60299df64a622d04d21d81513c02e2d47bfcce2a6c246eabcc1c823aaf3d9133004cf7c4c08236395a05dc19a98c33a301c8b73d4e7fd33cd911619de86dfdb45",
"message": "Success"
}

Step 5: Decrypt the encryptedData with CLIENT_SYMMETRIC_KEY

Symmetric decrypt the encryptedData, e4e9ac1120ed867a7af108af8b1ab918cbec6db7b4d7c29908085a73e2b29e97547da6eae91928b3330241f1fb898eebd8c3355105fdd5c68b6ceea761f41dc3085ed888d3c0473beef128ebd208c4f60299df64a622d04d21d81513c02e2d47bfcce2a6c246eabcc1c823aaf3d9133004cf7c4c08236395a05dc19a98c33a301c8b73d4e7fd33cd911619de86dfdb45
with CLIENT_SYMMETRIC_KEY, PCd1dlEmFnBXaVce06Pzp7Vike0oHnVJ

The result is in plaintext as

{
"data": {
"status": "SUCCESS",
"transaction": {
"id": 10310,
"amountPaid": 124.1,
"confirmedAt": "2022-10-28T16:15:58.314Z",
"paymentMethod": "CIMB_MY",
"commissionFee": 3.1025
},
"order": {
"id": "20220918020002",
"amount": 124.1,
"currencyType": "MYR"
},
"customer": {
"name": "114",
"phone": "0123456789",
"email": "longwan@gmail.com"
}
}
}

Decrypted Payload Parameters

Parameter Type Required Description Example
data Object Yes Top-level object returned after decrypting the payment callback payload. {...}
data.status String Yes Current transaction status. Possible values include <code>PAYING</code>, <code>PENDING</code>, <code>SUCCESS</code>, and <code>FAILED</code>. SUCCESS
data.transaction Object Yes Payment transaction details returned in the callback payload. {...}
data.transaction.id Number Yes SuperPay transaction ID for this callback event. 10310
data.transaction.amountPaid Number Yes Actual amount received for the deposit transaction. 124.1
data.transaction.confirmedAt String / Null Yes Timestamp when the payment was confirmed. This may be <code>null</code> before the transaction succeeds. 2022-10-28T16:15:58.314Z
data.transaction.paymentMethod String / Null Yes Payment method code used to complete the transaction. CIMB_MY
data.transaction.commissionFee Number Yes Transaction fee charged by SuperPay. 3.1025
data.order Object Yes Original merchant order details linked to the transaction. {...}
data.order.id String Yes Merchant order ID submitted when the order was created. 20220918020002
data.order.amount Number Yes Original order amount requested by the merchant. 124.1
data.order.currencyType String Yes Currency code for the order amount. MYR
data.customer Object Yes Customer details associated with the payment transaction. {...}
data.customer.name String / Null Yes Customer or payer name. 114
data.customer.phone String / Null Yes Customer phone number. 0123456789
data.customer.email String / Null Yes Customer email address. longwan@gmail.com