# Result & IPN Callback

* Result URL: Use for Merchant to show result for Customer. Support http method POST or GET
* IPN URL: Use for Merchant to receive payment result and process business workflow.

Note:

Response Signature is create by applying hash algorithm **SHA256** the response **data** with **Salt**.&#x20;

**signature = SHA256(data + salt)**

#### Body

<table><thead><tr><th width="90">Level</th><th width="188">Field Name</th><th width="165">Data Type</th><th>Description</th></tr></thead><tbody><tr><td>1</td><td>data</td><td>Alphanumeric<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Base-64 string</td></tr><tr><td>1</td><td>signature</td><td>Alphanumeric<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Response Signature<br><strong>signature = SHA256(data + Salt)</strong></td></tr></tbody></table>

#### Data (Decode Base-64 String)

<table><thead><tr><th width="84">Level</th><th width="213">Field Name</th><th width="180">Data Type</th><th>Description</th></tr></thead><tbody><tr><td>1</td><td>requestID</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Original Request ID</td></tr><tr><td>1</td><td>responseDateTime</td><td>Numeric(14)<br><em><mark style="color:blue;">mandatory</mark></em></td><td><strong>yyyyMMddHHmmss</strong></td></tr><tr><td>1</td><td>responseCode</td><td>Numeric(3)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>See <a href="/pages/sBk2eUqKYscTG2fiXwOK">Response Codes</a> for more detail</td></tr><tr><td>1</td><td>responseMessage</td><td>Alphanumeric(250)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Response message</td></tr><tr><td>1</td><td>responseData</td><td>JSON Object<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Response data</td></tr><tr><td>2</td><td>transactionID</td><td>Alphanumeric(38)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>GALAXY PAY transaction ID</td></tr><tr><td>2</td><td>transactionStatus</td><td>Numeric(14)<br><em><mark style="color:blue;">optional</mark></em></td><td><strong>Only available in apiVersion 2</strong><br><br>See <a href="/pages/sBk2eUqKYscTG2fiXwOK">Response Codes</a> for more detail</td></tr><tr><td>2</td><td>transactionDescription</td><td>Alphanumeric(20)<br><em><mark style="color:blue;">optiona</mark></em></td><td><strong>Only available in apiVersion 2</strong></td></tr><tr><td>2</td><td>paymentMethod</td><td>Alpha(20)<br><em><mark style="color:blue;">optional</mark></em></td><td><strong>Only available in apiVersion 2</strong><br><br>See <a href="/pages/5cVWW6YgOoegGXIi38eN#payment-methods">Payment Method</a> for more detail</td></tr><tr><td>2</td><td>sourceType</td><td>Alphanumeric(20)<br><em><mark style="color:blue;">optional</mark></em></td><td><strong>Only available in apiVersion 2</strong><br><br>See <a href="/pages/5cVWW6YgOoegGXIi38eN#payment-methods">Payment Method</a> for more detail</td></tr><tr><td>2</td><td>orderID</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Transaction ID at Merchant</td></tr><tr><td>2</td><td>orderNumber</td><td>Alphanumeric(20)<br><em><mark style="color:blue;">optional</mark></em></td><td>Order Number or Bill Number</td></tr><tr><td>2</td><td>orderAmount</td><td>Numeric(16)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Order Amount</td></tr><tr><td>2</td><td>orderCurrency</td><td>Alpha(3)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Order Currency</td></tr><tr><td>2</td><td>orderDateTime</td><td>Numeric(14)<br><em><mark style="color:blue;">mandatory</mark></em></td><td><p>Order Date Time</p><p></p><p><strong>yyyyMMddHHmmss</strong></p></td></tr><tr><td>2</td><td>orderDescription</td><td>Alphanumeric(250)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Order Description</td></tr><tr><td>2</td><td>language</td><td>Alpha(2)<br><em><mark style="color:blue;">mandatory</mark></em></td><td><p>vi or en</p><p></p><p>vi: Vietnamese</p><p>en: English</p></td></tr><tr><td>2</td><td>tokenization</td><td>JSON Object<br><em><mark style="color:blue;">optional</mark></em></td><td><p><strong>Only Return on IPN callback</strong> when</p><p><strong>·  Transaction is successful (ResponseCode = 200)</strong></p><p><strong>·  APIOperation = PAY_WITH_CREATE_TOKEN</strong></p></td></tr><tr><td>3</td><td>accountBrand</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Card Brand info</td></tr><tr><td>3</td><td>accountSource</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Card Issuer info</td></tr><tr><td>3</td><td>accountNumber</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Card Masked Number</td></tr><tr><td>3</td><td>accountName</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Cardholder name</td></tr><tr><td>3</td><td>token</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">optional</mark></em></td><td>Card Token</td></tr><tr><td>3</td><td>status</td><td>Alphanumeric(3)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Token Creation Result</td></tr><tr><td>3</td><td>message</td><td>Alphanumeric(250)<br><em><mark style="color:blue;">mandatory</mark></em></td><td>Token Creation Message</td></tr></tbody></table>

```
RESPONSE DATA

{
  "data": "eyJyZXF1ZXN0SUQiOiIxNDY1M2ZhMS0yZjY5LTRmNGYtOWQ0Yi0yNDBlMWJlYmJkZjMiLCJyZXNwb25zZURhdGVUaW1lIjoiMjAyMjA1MDYxMTM1MTciLCJyZXNwb25zZUNvZGUiOiIyMDAiLCJyZXNwb25zZU1lc3NhZ2UiOiJUcmFuc2FjdGlvbiBpcyBzdWNjZXNzZnVsLiIsInJlc3BvbnNlRGF0YSI6eyJ0cmFuc2FjdGlvbklEIjoiMjIwNTA2OTllNjVkOWE3MWQ1NDhlNmI2NzMyM2FlZjFhNDk0YWMiLCJ0cmFuc2FjdGlvbkRhdGVUaW1lIjoiMjAyMjA0MDUyMDIwMDAiLCJvcmRlcklEIjoiODg4Mjg5Iiwib3JkZXJOdW1iZXIiOiI4MjI2Mjg4OSIsIm9yZGVyQW1vdW50IjoiMTA5MDAwIiwib3JkZXJEZXNjcmlwdGlvbiI6IlNlY3VyZSBQYWdlIERlbW8iLCJvcmRlckN1cnJlbmN5IjoiVk5EIiwib3JkZXJEYXRlVGltZSI6IjIwMjIwNDA1MjAyMDAwIiwibGFuZ3VhZ2UiOiJ2aSJ9fQ==",
  "signature": "724c1f76663cc0b119080e0b53eaae06615dd8586e34c15b3e96e61d6d729dcc"
}


VERIFY SIGNATURE

const data = "eyJyZXF1ZXN0SUQiOiIxNDY1M2ZhMS0yZjY5LTRmNGYtOWQ0Yi0yNDBlMWJlYmJkZjMiLCJyZXNwb25zZURhdGVUaW1lIjoiMjAyMjA1MDYxMTM1MTciLCJyZXNwb25zZUNvZGUiOiIyMDAiLCJyZXNwb25zZU1lc3NhZ2UiOiJUcmFuc2FjdGlvbiBpcyBzdWNjZXNzZnVsLiIsInJlc3BvbnNlRGF0YSI6eyJ0cmFuc2FjdGlvbklEIjoiMjIwNTA2OTllNjVkOWE3MWQ1NDhlNmI2NzMyM2FlZjFhNDk0YWMiLCJ0cmFuc2FjdGlvbkRhdGVUaW1lIjoiMjAyMjA0MDUyMDIwMDAiLCJvcmRlcklEIjoiODg4Mjg5Iiwib3JkZXJOdW1iZXIiOiI4MjI2Mjg4OSIsIm9yZGVyQW1vdW50IjoiMTA5MDAwIiwib3JkZXJEZXNjcmlwdGlvbiI6IlNlY3VyZSBQYWdlIERlbW8iLCJvcmRlckN1cnJlbmN5IjoiVk5EIiwib3JkZXJEYXRlVGltZSI6IjIwMjIwNDA1MjAyMDAwIiwibGFuZ3VhZ2UiOiJ2aSJ9fQ==";
const salt = "GO@2021";
const signature = SHA256(data + salt);


DECODE BASE-64 STRING FOR DATA

{
  "requestID": "14653fa1-2f69-4f4f-9d4b-240e1bebbdf3",
  "responseDateTime": "20220506113517",
  "responseCode": "200",
  "responseMessage": "Transaction is successful.",
  "responseData": {
    "transactionID": "22050699e65d9a71d548e6b67323aef1a494ac",
    "transactionDateTime": "20220405202000",
    "orderID": "888289",
    "orderNumber": "82262889",
    "orderAmount": "109000",
    "orderDescription": "Secure Page Demo",
    "orderCurrency": "VND",
    "orderDateTime": "20220405202000",
    "language": "vi"
  }
}
```

#### Response Message (FOR IPN ONLY)

<table data-header-hidden><thead><tr><th width="98">Level</th><th width="151">Field Name</th><th width="178">Data Type</th><th>Description</th></tr></thead><tbody><tr><td>1</td><td>ipnStatus</td><td>Alphanumeric(50)<br><em><mark style="color:blue;">mandatory</mark></em></td><td><p>Response Code for IPN Request.</p><p></p><p>Accepted value:</p><p><strong>200</strong>: Transaction Success</p><p>404: Transaction Not Found</p><p>409: Transaction Completed</p></td></tr><tr><td>1</td><td>ipnDescription</td><td>Alphanumeric(250)<br><em><mark style="color:blue;">optional</mark></em></td><td>Response Description</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.galaxypay.vn/upc/payment-gateway/api-specification/ipn-and-callback/result-and-ipn-callback.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
