# Vault Wallet

## Create Vault

<mark style="color:green;">`POST`</mark> `https://gateway-test.pagsmile.com/vault/create`

This endpoint allows you to create a vault.

#### Headers

| Name                                            | Type   | Description                                |
| ----------------------------------------------- | ------ | ------------------------------------------ |
| Content-Type<mark style="color:red;">\*</mark>  | string | application/json; chartset=UTF-8           |
| Authorization<mark style="color:red;">\*</mark> | string | Basic Base($app\_*id:$security\_*&#x6B;ey) |

#### Request Body

<table><thead><tr><th width="265">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>app_id<mark style="color:red;">*</mark></td><td>string</td><td><p>created app's id at dashboard</p><p>- Max. 32 chars -</p></td></tr><tr><td>timestamp<mark style="color:red;">*</mark></td><td>string</td><td>yyyy-MM-dd HH:mm:ss<br>- Max. 19 chars -</td></tr><tr><td>version<mark style="color:red;">*</mark></td><td>string</td><td>Fixed value: 2.0</td></tr><tr><td>type<mark style="color:red;">*</mark></td><td>string</td><td>Fixed value: wallet_account</td></tr><tr><td>wallet_account.region<mark style="color:red;">*</mark></td><td>string</td><td>THA for Thailand</td></tr><tr><td>wallet_account.method<mark style="color:red;">*</mark></td><td>string</td><td>Fixed value: Wallet</td></tr><tr><td>wallet_account.channel<mark style="color:red;">*</mark></td><td>string</td><td>Fixed value: Linepay</td></tr><tr><td>wallet_account.uid<mark style="color:red;">*</mark></td><td>string</td><td>Unique ID in merchant system</td></tr><tr><td>wallet_account.device_type<mark style="color:red;">*</mark></td><td>string</td><td>WEB or WAP</td></tr><tr><td>wallet_account.return_url<mark style="color:red;">*</mark></td><td>string</td><td></td></tr></tbody></table>

{% tabs %}
{% tab title="200 submit successfully" %}

```
{
    "code": "10000",
    "msg": "Success",
    "auth_url": "https://demo.auth.url/",
    "token": "wa_***",
    "type": "wallet_account",
    "timestamp": "yyyy-MM-dd HH:mm:ss",
}
```

{% endtab %}
{% endtabs %}

## Example

```
curl --location --request POST 'https://gateway-test.pagsmile.com/vault/create' \
--header 'Authorization: Basic MTYyNTgyOTIxNDUzMTY2Mzg6UGFnc21pbGVfc2tfZDUwMWQ1ZGNkNTI5OGQ5N2MwNmUzYjI4YjA2OWZjZmY3NDU5ZjY2NzNiMjFjMTFlYTY3NDM5MDgzOTZkOTYxNQ==' \
--header 'Content-Type: application/json' \
--data-raw '{
    "app_id": "162************38",,
    "timestamp": "2022-01-01 03:54:01",
    "version": "2.0",
    "type": "wallet_account",
    "wallet_account": {
        "region": "THA",
        "method": "Wallet",
        "channel": "Linepay",
        "uid": "123",
        "device_type": "WEB",
        "return_url": "https://demo.return.url"
    }
}'
```

***

## Pay Vault

<mark style="color:green;">`POST`</mark> `https://gateway-test.pagsmile.com/trade/pay`

This endpoint allows you to submit a payin by Vault in Thailand.

#### Headers

| Name                                            | Type   | Description                                |
| ----------------------------------------------- | ------ | ------------------------------------------ |
| Content-Type<mark style="color:red;">\*</mark>  | string | application/json; chartset=UTF-8           |
| Authorization<mark style="color:red;">\*</mark> | string | Basic Base($app\_*id:$security\_*&#x6B;ey) |

#### Request Body

| Name                                              | Type   | Description                                                           |
| ------------------------------------------------- | ------ | --------------------------------------------------------------------- |
| app\_id<mark style="color:red;">\*</mark>         | string | <p>created app's id at dashboard</p><p>- Max. 32 chars -</p>          |
| out\_trade\_no<mark style="color:red;">\*</mark>  | string | <p>ID given by the merchant in their system<br>- Max. 64 chars - </p> |
| method<mark style="color:red;">\*</mark>          | string | Fixed value: Wallet                                                   |
| channel<mark style="color:red;">\*</mark>         | string | <p>Wallet type<br>- LINEPay -</p>                                     |
| notify\_url<mark style="color:red;">\*</mark>     | string | Where Pagsmile will send notification to                              |
| timestamp<mark style="color:red;">\*</mark>       | string | <p>yyyy-MM-dd HH:mm:ss<br>- Max. 19 chars -</p>                       |
| subject<mark style="color:red;">\*</mark>         | string | <p>payment reason or item title</p><p>- Max. 128 chars -</p>          |
| content                                           | string | <p>payment reason detail or item detail</p><p>- Max. 255 chars -</p>  |
| order\_amount<mark style="color:red;">\*</mark>   | string | <p>payment amount<br>- LINEPay: 0.01\~49.999.00 -</p>                 |
| order\_currency<mark style="color:red;">\*</mark> | string | Fixed value: THB                                                      |
| buyer\_id<mark style="color:red;">\*</mark>       | string | merchant user's id                                                    |
| vault\_token<mark style="color:red;">\*</mark>    | string | Token get from [Create Vault](#create-vault)                          |
| return\_url                                       | string | Redirect to Merchant's url when user finished checkout                |

{% tabs %}
{% tab title="200 submit successfully" %}

```
{
    "code": "10000",
    "msg": "Success",
    "prepay_id":"Q3pDNzRT****************VT0=-De8BDeB3",
    "trade_no": "2022010110293900083",
    "out_trade_no": "202201010354006",
    "trade_status": "PROCESSING"
}
```

{% endtab %}

{% tab title="400 duplicate out\_trade\_no" %}

```
{
    "code": "40002",
    "msg": "Business Failed",
    "sub_code": "duplicate-out_trade_no",
    "sub_msg": "out_trade_no is duplicate"
}
```

{% endtab %}
{% endtabs %}

## Example

```
curl --location --request POST 'https://gateway-test.pagsmile.com/trade/pay' \
--header 'Authorization: Basic MTYyNTgyOTIxNDUzMTY2Mzg6UGFnc21pbGVfc2tfZDUwMWQ1ZGNkNTI5OGQ5N2MwNmUzYjI4YjA2OWZjZmY3NDU5ZjY2NzNiMjFjMTFlYTY3NDM5MDgzOTZkOTYxNQ==' \
--header 'Content-Type: application/json' \
--data-raw '{
    "app_id": "162************38",
    "out_trade_no": "202201010354006",
    "method": "Wallet",
    "channel": "LINEPay",
    "order_amount": "300",
    "order_currency": "THB",
    "subject": "trade pay test",
    "content": "trade pay test conent",
    "notify_url": "http://merchant/callback/success",
    "return_url": "https://www.merchant.com",
    "buyer_id": "buyer_0101_0001",
    "timestamp": "2022-01-01 03:54:01",
    "vault_token": "wa_***"
    }'
```

***

## Refresh Vault

{% hint style="info" %}
Vault of Linepay is automatically refreshed. When a Linepay vault is paid, it will be refreshed for another 90 days.
{% endhint %}

***

## Void Vault

<mark style="color:green;">`POST`</mark> `https://gateway-test.pagsmile.com/vault/void`

This endpoint allows you to void a vault.

#### Headers

| Name                                            | Type   | Description                                |
| ----------------------------------------------- | ------ | ------------------------------------------ |
| Content-Type<mark style="color:red;">\*</mark>  | string | application/json; chartset=UTF-8           |
| Authorization<mark style="color:red;">\*</mark> | string | Basic Base($app\_*id:$security\_*&#x6B;ey) |

#### Request Body

<table><thead><tr><th width="254">Name</th><th width="239">Type</th><th>Description</th></tr></thead><tbody><tr><td>app_id<mark style="color:red;">*</mark></td><td>string</td><td><p>created app's id at dashboard</p><p>- Max. 32 chars -</p></td></tr><tr><td>timestamp<mark style="color:red;">*</mark></td><td>string</td><td>yyyy-MM-dd HH:mm:ss<br>- Max. 19 chars -</td></tr><tr><td>version<mark style="color:red;">*</mark></td><td>string</td><td>Fixed value: 2.0</td></tr><tr><td>type<mark style="color:red;">*</mark></td><td>string</td><td>Fixed value: wallet_account</td></tr><tr><td>vault_token<mark style="color:red;">*</mark></td><td>string</td><td></td></tr></tbody></table>

{% tabs %}
{% tab title="200 submit successfully" %}

```
{
    "code": "10000",
    "msg": "Success",
    "token": "wa_***",
    "type": ""wallet_account",
    "timestamp": "yyyy-MM-dd HH:mm:ss"
}
```

{% endtab %}
{% endtabs %}

***

{% hint style="info" %}
Note:  **162\*\*\*\*\*\*\*\*\*\*\*\*38** is pagsmile's test app id for sandbox, and **MTYyNTgyOTIxNDUzMTY2Mzg6UGFnc21pbGVfc2tfZDUwMWQ1ZGNkNTI5OGQ5N2MwNmUzYjI4YjA2OWZjZmY3NDU5ZjY2NzNiMjFjMTFlYTY3NDM5MDgzOTZkOTYxNQ==** is authorization token associated with the test app id.&#x20;
{% endhint %}

{% hint style="danger" %}
Please use your own **app\_id** and generate your own **authorization token** when testing.
{% endhint %}
