Finalise

Finialisation involves making API calls, displaying the transaction status, and responding to HTTP callbacks.

Flow Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
    autonumber
    actor u as User
    participant b as Browser
    participant cs as Customer Server
    participant dt1 as DT One

    u->>+b: Open customer's webpage
    note over u, dt1: UI SDK initialized and the user selects and checkouts a product.
    b->>cs: Payment Hook<br/>(Session ID extracted<br/>from Session Data, Payment Details)
    activate cs
    cs->>b: Render Payment Page

    note over b, cs: Collect payment, finalise session and redirect<br/>to Transaction status view (Session ID)

    note over b,dt1: The finalise session call should happen with 1 hour of payment hook

    cs->>dt1: Finalise Session<br/>(Auth, Session ID, Payment Details)
    activate dt1

    dt1->>cs: Finalise Session Response
    deactivate dt1

    cs->>b: Render Transaction Status Page
    deactivate cs
    deactivate b

Steps

* URL: `/v1/sessions/{sessionID}/finalise`
* Method: `POST`

<Accordion title="Request Body" icon="fa-file-import">
  ```json
  [
    {
      "transaction_id": 65430,
      "price": {
        "currency": "SGD",
        "amount": 9.9
      }
    }
  ]
  ```
</Accordion>

<Accordion title="Response (200 OK)" icon="fa-file-export">
  ```json
  [
    {
      "is_confirmed": true,
      "transaction_id": 65430
    }
  ]
  ```
</Accordion>

<Accordion title="Errors" icon="fa-exclamation-triangle">
  * `400`: Bad Request
  * `401`: Unauthorized
  * `403`: Forbidden
  * `404`: Not Found
  * `500`: Server Error
</Accordion>

## <i class="fa fa-table"></i> Schemas

<Accordion title="SessionFinaliseRequest" icon="fa-code">
  ```json
  {
    "transaction_id": "integer",
    "price": {
      "amount": "number",
      "currency": "ISO 4217 code"
    }
  ]
  ```
</Accordion>

<Accordion title="SessionFinaliseResponse" icon="fa-code">
  ```json
  {
    "is_confirmed": true,
    "transaction_id": "integer"
  }
  ```
</Accordion>

## <i class="fa fa-file-code"></i> Example

The [`callbacks.onSubmit` function](/docs/configure-solution-behavior#callbacksonsubmit) passes a Transaction object (described here: [https://dvs-api-doc.dtone.com/#operation/getTransactionById](https://dvs-api-doc.dtone.com/#operation/getTransactionById)) and a sessionId in the function parameters. Extract the `transaction.id` from the transaction object.

<Accordion title="Examples" icon="fa-arrow-right-arrow-left">
  ```bash
  # Request
  curl --location --request POST '<domain>/v1/sessions/{sessionID}/finalise' \
  --header 'Content-Type: application/json' \
  --user <APIKey:APISecret> \
  --data '[  {    "transaction_id": 125757,    "price": {      "currency": "SGD",      "amount": 21.613    }  }]'

  # Response
  [  {    "transaction_id": 125758,    "is_confirmed": true  }]
  ```
</Accordion>

Did this page help you?