# OTP (One Time Password)

&#x20;       OTP หรือ One Time Password คือชุดรหัสผ่านแบบใช้ครั้งเดียว เพื่อความปลอดภัย ในการทำธุรกรรมทางอิเล็กทรอนิกส์ ที่ระบบจะส่งไปยัง SMS โทรศัพท์มือถือคุณ เพื่อใช้ตรวจสอบและยืนยันการเป็นเจ้าของบัญชีก่อนการเข้าถึงและเปลี่ยนแปลงข้อมูลส่วนตัวต่าง ๆ ซึ่งรหัสผ่านชุดนี้จะมีอายุตามที่ตั้งค่าในระบบ หากเลยเวลาจะไม่สามารถนำกลับมาใช้ได้อีก ทั้งนี้ OTP เป็นส่วนหนึ่งของระบบที่ช่วยลดความเสี่ยงในการทำธุรกรรมทางอินเทอร์เน็ตได้อย่างมีประสิทธิภาพ

## RequestOTP

&#x20;       ใช้สำหรับการขอชุดรหัสผ่าน เพื่อทำธุรกรรมทางอิเล็กทรอนิกส์ไปยัง SMS โทรศัพท์มือถือคุณ เพื่อใช้ตรวจสอบและยืนยันการเป็นเจ้าของบัญชี

### Sequence Diagram

![รูปภาพ Sequence Diagram (API RequestOTP)](https://980245403-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M1Zi-GfP5csjMyyZS2D%2F-M27MOmc1DeKBrpRi0w9%2F-M27YpJU1Wj8J9xDr0tA%2Fotp3.png?alt=media\&token=8f1f2547-6c41-445d-99bf-ff8d435551cb)

{% tabs %}
{% tab title="Request" %}
**ผู้ใช้งานสามารถเริ่มสร้าง HTTP ตามรายละเอียดดังนี้**

| **หัวข้อ**         | **รายละเอียด**                                                                                             |
| ------------------ | ---------------------------------------------------------------------------------------------------------- |
| HTTP Request (URL) | <https://api-service.ants.co.th/otp/requestOTP>                                                            |
| HTTP Headers       | <p>Content-Type: application/json</p><p>Authorization: (Basic Auth) Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==</p> |
| HTTP Methods       | POST                                                                                                       |

**ผู้ใช้งานต้องระบุ Request body ด้วย Parameter ดังนี้**

| **ตัวแปร Parameter**                               | **ประเภทข้อมูล** | **รายละเอียด**                                                                                                                                                                                                                  |
| -------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| otcId                                              | String           | เป็นรหัสลงทะเบียนเข้าใช้งานระบบ OTP เพื่อดูการตั้งค่า                                                                                                                                                                           |
| mobile                                             | String           | เบอร์โทรศัพท์มือถือ                                                                                                                                                                                                             |
| <p>notifyUrl</p><p><em>(optional)</em></p>         | String           | <p>ท่านสามารถกำหนด URL บน callback server ที่ต้องการ</p><p>ให้ส่งรายงานผล (Delivery report) โดยสามารถกำหนด API <br>สำหรับรับ Callback ตามลิ้งค์นี้ <a href="api-sms-1/callback"><em><strong>Send Callback</strong></em></a></p> |
| <p>notifyContentType</p><p><em>(optional)</em></p> | String           | <p>กำหนด content type ของ รายงานผล Delivery </p><p>report เป็น application/json</p>                                                                                                                                             |
| <p>callbackData</p><p><em>(optional)</em></p>      | String           | ระบุค่าที่ต้องการส่งกลับ เมื่อระบุ notifyUrl จะส่งค่า callbackData นี้กลับไป                                                                                                                                                    |

**ตัวอย่าง Request JSON**

```
{
 	"otcId": "0DC8E7AD-0168-440C-AF10-BF556B164D83",
 	"mobile": "66123456789",
  "notifyUrl": "https://testSendOTP",
  "notifyContentType": "application/json",
  "callbackData":"OTP Data"
}
```

{% endtab %}

{% tab title="Response" %}
**Response ตอบกลับผู้ใช้งาน ดังนี้**

| **ชุดข้อมูลผลลัพธ์** | **ประเภทข้อมูล** | **รายละเอียด**                                                      |
| -------------------- | ---------------- | ------------------------------------------------------------------- |
| otcId                | String           | <p>เป็นรหัสลงทะเบียนเข้าใช้งานระบบ OTP </p><p>เพื่อดูการตั้งค่า</p> |
| otpId                | String           | เป็นรหัสการส่งข้อความ OTP                                           |
| referenceCode        | String           | รหัสอ้างอิง (ref Code)                                              |
| status               | Object           | สถานะการส่งข้อความ                                                  |
| message              | String           | ชื่อสถานะ                                                           |
| description          | String           | รายละเอียดสถานะ                                                     |

**ตัวอย่าง Response JSON**

```
{
    	"otcId": "0DC8E7AD-0168-440C-AF10-BF556B164D83",
    	"otpId": "0c342e74-a9c7-4bbd-8da4-b36a49bbc0d6",
    	"referenceCode": "IpA6k",
     	"success": {
        		"message": "success",
        		"description": ""
    	}
}
```

{% endtab %}
{% endtabs %}

## ResendOTP

&#x20;            ใช้สำหรับส่งชุดรหัสผ่าน เพื่อทำธุรกรรมทางอิเล็กทรอนิกส์ไปยัง SMS โทรศัพท์มือถือคุณ เพื่อใช้ตรวจสอบและยืนยันการเป็นเจ้าของบัญชี อีกครั้ง

### Sequence Diagram

![](https://980245403-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M1Zi-GfP5csjMyyZS2D%2F-MHJrDxm_W61VgtMPwVK%2F-MHK2QfSOiVPIkS8tND9%2FResendotp.jpg?alt=media\&token=0031944b-0aff-4ba8-a711-b010f1edd8b3)

{% tabs %}
{% tab title="Request" %}
ผู้ใช้งานสามารถเริ่มสร้าง HTTP ตามรายละเอียดดังนี้

| หัวข้อ             | รายละเอียด                                                                                                 |
| ------------------ | ---------------------------------------------------------------------------------------------------------- |
| HTTP Request (URL) | <https://api-service.ants.co.th/otp/resendOTP>                                                             |
| HTTP Headers       | <p>Content-Type: application/json</p><p>Authorization: (Basic Auth) Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==</p> |
| HTTP Methods       | POST                                                                                                       |

ผู้ใช้งานต้องระบุ Request body ด้วย Parameter ดังนี้

| ตัวแปร Parameter | ตัวแปร Parameter | รายละเอียด                |
| ---------------- | ---------------- | ------------------------- |
| otpId            | string           | เป็นรหัสการส่งข้อความ OTP |

ตัวอย่าง Request JSON

```
{
"otpId": "0c342e74-a9c7-4bbd-8da4-b36a49bbc0d6",
}
```

{% endtab %}

{% tab title="Response" %}
Response ตอบกลับผู้ใช้งาน ดังนี้

| **ชุดข้อมูลผลลัพธ์** | **ประเภทข้อมูล** | **รายละเอียด**                                                      |
| -------------------- | ---------------- | ------------------------------------------------------------------- |
| otcId                | String           | <p>เป็นรหัสลงทะเบียนเข้าใช้งานระบบ OTP </p><p>เพื่อดูการตั้งค่า</p> |
| otpId                | String           | เป็นรหัสการส่งข้อความ OTP                                           |
| referenceCode        | String           | รหัสอ้างอิง (ref Code)                                              |
| status               | Object           | สถานะการส่งข้อความ                                                  |
| message              | String           | ชื่อสถานะ                                                           |
| description          | String           | รายละเอียดสถานะ                                                     |

**ตัวอย่าง Response JSON**

```
{
"otcId": "0DC8E7AD-0168-440C-AF10-BF556B164D83",
"otpId": "0c342e74-a9c7-4bbd-8da4-b36a49bbc0d6",
"referenceCode": "IpA6k",
"success": {
	"message": "success",
	"description": ""
	}
}
```

{% endtab %}
{% endtabs %}

## VerifyOTP

&#x20;      ใช้สำหรับตรวจสอบชุดรหัสผ่าน และยืนยันการเป็นเจ้าของบัญชี

### Sequence Diagram

![รูปภาพ Sequence Diagram (API VerifyOTP)](https://980245403-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M1Zi-GfP5csjMyyZS2D%2F-M1yIhsflTgm2ZSSzXX-%2F-M1z0HHxrnz3TwfNvSW5%2Fotp2.png?alt=media\&token=7e7abd13-d446-4611-b287-8bd806746203)

{% tabs %}
{% tab title="Request" %}
ผู้ใช้งานสามารถเริ่มสร้าง HTTP ตามรายละเอียดดังนี้

| **หัวข้อ**         | **รายละเอียด**                                                                                             |
| ------------------ | ---------------------------------------------------------------------------------------------------------- |
| HTTP Request (URL) | <https://api-service.ants.co.th/otp/verifyOTP>                                                             |
| HTTP Headers       | <p>Content-Type: application/json</p><p>Authorization: (Basic Auth) Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==</p> |
| HTTP Methods       | POST                                                                                                       |

ผู้ใช้งานต้องระบุ Request body ด้วย Parameter ดังนี้

| ตัวแปร Parameter | ประเภทข้อมูล | รายละเอียด                |
| ---------------- | ------------ | ------------------------- |
| otpId            | String       | เป็นรหัสการส่งข้อความ OTP |
| otpCode          | String       | รหัส OTP                  |

ตัวอย่าง Request JSON

```
{
    "otpId": "0c342e74-a9c7-4bbd-8da4-b36a49bbc0d6",
   	"otpCode": "79895"
}
```

{% endtab %}

{% tab title="Response" %}
Response ตอบกลับผู้ใช้งาน ดังนี้

| **ชุดข้อมูลผลลัพธ์** | **ประเภทข้อมูล** | **รายละเอียด**                     |
| -------------------- | ---------------- | ---------------------------------- |
| otpId                | String           | เป็นรหัสการส่งข้อความ OTP          |
| result               | Boolean          | ผลการยืนยัน OTP                    |
| isErrorCount         | Boolean          | ผลการกรอก OTP ผิดพลาด              |
| isExprCode           | Boolean          | ผลการกรอก OTP เกินระยะเวลาที่กำหนด |

ตัวอย่าง Response JSON

```
{
    	"otpId": "0c342e74-a9c7-4bbd-8da4-b36a49bbc0d6",
    	"result": true,
    	" isErrorCount": false,
    	"isExprCode": false
}
```

{% endtab %}
{% endtabs %}

## สถานะผลลัพธ์ตอบกลับ (Response Status)

&#x20;       ในการใช้งาน API ท่านจะได้รับสถานะตอบกลับต่าง ๆ เพื่อที่จะเข้าใจถึงเหตุผล ปัจจัยต่าง ๆ และสามารถแก้ไขปัญหา ได้ตรงจุด ข้อมูลด้านล่างเป็นการอธิบายรายการของรหัส แหตุผล และคำอธิบายต่าง ๆ

### Status Code

&#x20;       นอกเหนือจาก สถานะ HTTP status code มาตราฐานแล้ว สถานะเหล่านั้นอาจจะส่งมาในส่วนของ API response status

### ตัวอย่าง สถานะผลลัพธ์ API Response Error

```
{
	  "error": {
		"message": "Invalid OTP Config",
		"description": ""
             }
}
```

### Status Code

| Code | Message EN            | Message TH                       |
| ---- | --------------------- | -------------------------------- |
| 0000 | Success               | สำเร็จ                           |
| 9999 | Exception             | ผิดพลาด                          |
| 9998 | Authentication failed | username or password ผิดพลาด     |
| 9996 | Bad Request           | คำสั่งไม่ถูกต้อง                 |
| 9995 | Credit not enough     | เครดิตหมด                        |
| 0301 | Invalid OTP Config    | ตั้งค่า OTP ไม่ถูกต้อง           |
| 0302 | Number Prefix Missing | ไม่มีคำนำหน้า                    |
| 0303 | No Data Available OTP | ไม่พบข้อมูล OTP                  |
| 0304 | Over Limit Usage      | กรอกข้อมูลเกินจำนวนครั้งที่กำหนด |
| 0305 | OTP Code Expired      | OTP Code หมดอายุ                 |
| 0306 | OTP Code Confirmed    | OTP Code ยืนยันตัวตนไปแล้ว       |
| 0307 | Invalid Number        | หมายเลขไม่ถูกต้อง                |
