Slip Normal
ดึงสลิปเงินเดือนของพนักงานในรอบเดือนที่ระบุ ส่งคืนได้หลายรูปแบบ ทั้ง PDF (Inline / Download / File URL) และข้อมูล JSON รายรับ-รายหัก พร้อมรองรับงวดแบ่งจ่าย (Split Payroll) และการเข้ารหัส PDF ด้วยวันเกิดพนักงาน
Endpoint
GET /api/v1/open-apis/salary/get-data-filter?path_action=slip_normalสิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลเงินเดือนของพนักงาน (payroll:read:self)
Request Parameters
Required Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
employee_code | string | Yes | รหัสพนักงาน | "EMP001" |
Optional Parameters
| Parameter | Type | Default | Description | Example |
|---|---|---|---|---|
year_month | string | รอบปัจจุบัน | รอบเงินเดือน (YYYY-MM) | "2026-02" |
output | string | "I" | รูปแบบผลลัพธ์: "I", "D", "F", "J" | "F" |
language_code | string | "TH" | ภาษาที่ใช้แสดงผล ("TH" / "EN") ใช้เมื่อ output = "J" | "TH" |
slip_encryption | string | null | เข้ารหัส PDF: "Y" (เข้ารหัส) หรือไม่ระบุ | "Y" |
master_salary_split_seq | integer | null | งวดแบ่งจ่าย (Split Payroll): 1, 2, 3, 4 หากไม่ระบุจะถือเป็นเงินเดือนปกติ | 1 |
output Values
| Value | Description |
|---|---|
"I" | Inline ส่งคืน PDF เป็น base64 encoded string (ค่าเริ่มต้น) |
"D" | Download ส่งคืนเป็นไฟล์ PDF สำหรับดาวน์โหลด |
"F" | File URL ส่งคืน URL ของไฟล์ PDF |
"J" | JSON ส่งคืนข้อมูลรายรับ-รายหัก พร้อมยอดสุทธิเป็น JSON |
Validation Rules
| Rule | Description |
|---|---|
employee_code | ต้องมีอยู่ในระบบ มิฉะนั้นจะได้รับ HTTP 404 |
year_month | ต้องอยู่ในรูปแบบ YYYY-MM และต้องมีรอบเดือนนั้นในระบบ |
output | ต้องเป็น "I", "D", "F" หรือ "J" เท่านั้น |
slip_encryption | ต้องเป็น "Y" หรือไม่ระบุเท่านั้น |
master_salary_split_seq | ถ้าระบุ ต้องเป็นตัวเลข 1, 2, 3 หรือ 4 และต้องมีงวดแบ่งจ่ายนั้นถูกสร้างไว้ |
| ข้อกำหนดวันเกิด | หาก slip_encryption = "Y" พนักงานต้องมีข้อมูลวันเกิดในระบบ |
แนะนำให้ใช้ output=F สำหรับ Mobile App เพื่อลดขนาด payload และแสดง PDF ใน WebView ได้ง่าย หรือใช้ output=J หากต้องการแสดงผลแบบ Custom UI
ก่อนเรียก API นี้ ควรเรียก Calculate Month ก่อน เพื่อให้มีข้อมูลสลิปในระบบ
Response Format
Success Response - output = “F” (File URL)
{
"code": 200,
"message": "Success",
"payload": "https://openapi.humansoft.co.th/exports/slip_202602_EMP001.pdf"
}Success Response - output = “I” (Inline)
{
"code": 200,
"message": "Success",
"payload": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIK..."
}Success Response - output = “D” (Download)
ส่งคืนเป็นไฟล์ PDF พร้อม HTTP headers:
Content-Type: application/pdfContent-Disposition: attachment; filename="slip_YYYYMM_EMPCODE.pdf"
Success Response - output = “J” (JSON)
{
"code": 200,
"message": "Success",
"payload": {
"slip": {
"master_salary_month": "2026-01",
"master_salary_split_seq": 1
},
"income_items": [
{
"code": "ST0014",
"display_name": "Incentive",
"amount": 2000,
"sort_order": 1,
"is_visible": true
},
{
"code": "ST0012",
"display_name": "โบนัส",
"amount": 8000,
"sort_order": 7,
"is_visible": true
}
],
"deduction_items": [
{
"code": "social_insurance",
"display_name": "ประกันสังคม",
"amount": 875,
"sort_order": 10,
"is_visible": true
},
{
"code": "tax",
"display_name": "ภาษี",
"amount": 385.21,
"sort_order": 11,
"is_visible": true
}
],
"total_income": 16300,
"total_deduction": 5610.21,
"total_net": 45689.79,
"advance_pay": 0,
"remaining": 45689.79
}
}Key Response Fields
| output | payload Type | Description |
|---|---|---|
"F" | string | URL ของไฟล์ PDF |
"I" | string | PDF content เป็น base64 encoded string |
"D" | binary | ไฟล์ PDF |
"J" | object | ข้อมูลสลิปและรายการรายรับ-รายหักแบบ JSON |
Payload Fields เมื่อ output = "J"
| Field | Type | Description |
|---|---|---|
slip | object | ข้อมูลสลิปหลัก (รวมข้อมูลงวดแบ่งจ่ายเมื่อระบุ master_salary_split_seq) |
income_items | array | รายการรายรับ |
deduction_items | array | รายการรายหัก |
total_income | number | รวมรายรับ |
total_deduction | number | รวมรายหัก |
total_net | number | ยอดสุทธิ |
advance_pay | number | ยอดเบิกล่วงหน้า |
remaining | number | ยอดคงเหลือ |
income_items[] / deduction_items[]
| Field | Type | Description |
|---|---|---|
code | string | รหัสรายการ (เช่น ST0014, tax) |
display_name | string | ชื่อแสดงผล (รองรับชื่อ alias ที่ตั้งค่าไว้) |
amount | number | จำนวนเงิน |
sort_order | integer | ลำดับการแสดงผล |
is_visible | boolean | true = แสดงผลบนสลิป |
Error Response
{
"code": 404,
"message": "Slip not found for employee: EMP001, month: 2026-02",
"payload": []
}| HTTP Status | สาเหตุ | วิธีแก้ |
|---|---|---|
400 | year_month ไม่ถูกต้อง หรือไม่มีวันเกิดพนักงานสำหรับเข้ารหัส | ตรวจสอบรูปแบบ YYYY-MM และข้อมูลวันเกิดพนักงาน |
401 | API Key ไม่ถูกต้องหรือไม่ได้ส่ง | ตรวจสอบ Header Ocp-Apim-Subscription-Key |
404 | ไม่พบพนักงาน, ไม่พบรอบเดือน, ไม่พบสลิป หรือไม่พบงวดแบ่งจ่าย | ตรวจสอบ employee_code, year_month, master_salary_split_seq หรือเรียก Calculate Month ก่อน |
500 | ไม่พบ template สลิป หรือระบบขัดข้อง | ติดต่อผู้ดูแลระบบ |
Code Examples
cURL
# ดูสลิปแบบ File URL (แนะนำสำหรับ Mobile)
curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=slip_normal&employee_code=EMP001&year_month=2026-02&output=F" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY"
# ดูสลิปแบบเข้ารหัส PDF ด้วยวันเกิด (ddmmyyyy)
curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=slip_normal&employee_code=EMP001&year_month=2026-02&output=F&slip_encryption=Y" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY"
# ดูสลิปเป็นข้อมูล JSON (ภาษาไทย)
curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=slip_normal&employee_code=EMP001&year_month=2026-02&output=J&language_code=TH" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY"
# ดูสลิปงวดแบ่งจ่าย (Split Payroll งวดที่ 1)
curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=slip_normal&employee_code=EMP001&year_month=2026-01&output=I&master_salary_split_seq=1" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY"Split Payroll (งวดแบ่งจ่าย)
กรณีองค์กรเปิดใช้งานการแบ่งจ่ายเงินเดือน พนักงานจะได้รับเงินเดือนเป็นหลายงวดในเดือนเดียวกัน (เช่น งวดที่ 1 และงวดที่ 2)
- ระบุ
master_salary_split_seq(1,2,3,4) เพื่อเลือกงวดที่ต้องการ - หากไม่ระบุหรือระบุเป็น
nullจะดึงสลิปเงินเดือนปกติ (เต็มเดือน) - ต้องมีงวดแบ่งจ่ายถูกสร้างไว้ในระบบก่อน มิฉะนั้นจะได้รับ HTTP 404
- ข้อมูล JSON ที่ส่งกลับ (
output=J) จะรวมฟิลด์master_salary_split_seqในออบเจ็กต์slip
Notes
- หากระบุ
slip_encryption = "Y"ระบบจะเข้ารหัส PDF ด้วยวันเกิดพนักงาน (รูปแบบ ddmmyyyy เช่น 15011990) - พนักงานต้องมีวันเกิดในระบบเพื่อใช้ฟีเจอร์เข้ารหัส
- การสร้าง PDF อาจใช้เวลา ขึ้นอยู่กับ template และจำนวนรายการ
- แนะนำให้ cache URL สำหรับ
output = "F"เพื่อไม่ต้องสร้าง PDF ซ้ำ - หากต้องการนำข้อมูลไปแสดงเป็น Custom UI ใน Mobile App แนะนำให้ใช้
output = "J"เพื่อรับข้อมูลรายรับ-รายหักแบบ structured
Related APIs
- Calculate Month - คำนวณเงินเดือน ควรเรียกก่อน slip_normal
- Salary Summary - ดูสรุปเงินเดือนก่อนดูสลิป
- Daily In Month - ดูรายละเอียดการคำนวณ
- Current Month - ดูรอบเดือนปัจจุบัน เพื่อหา year_month
Last updated on