การส่งข้อมูล และการลงลายมือชื่ออิเล็กทรอนิกส์
การเชื่อมต่อ การส่งข้อมูล
โปรโตคอล (Protocal) สำหรับการรับส่งข้อมูล
การรับส่งข้อมูล ต้องเรียกใช้ด้วยโปรโตคอล HTTPS เพื่อให้การรับส่งข้อมูล มีความปลอดภัยและ น่าเชื่อถือ
การลงลายมือชื่ออิเล็กทรอนิกส์
- ใบรับรองอิเล็กทรอนิกส์ (Electronic Certificate) ใบรับรองอิเล็กทรอนิกส์ที่ใช้ต้องออกโดยผู้ให้บริการออก ใบรับรองอิเล็กทรอนิกส์ ที่อยู่ภายใต้การรับรองของผู้ให้บริการออกใบรับรองอิเล็กทรอนิกส์แห่งชาติ (NRCA) และสำนักงานพัฒนาธุรกรรมทางอิเล็กทรอนิกส์ (องค์การมหาชน)
- รูปแบบการนำส่ง และการลงลายมือชื่ออิเล็กทรอนิกส์ การเรียกใช้ Web Service เพื่อนำส่งข้อมูลสำหรับการยื่นแบบอากรแสตมป์ การสอบถามการนำส่งข้อมูล การสอบถามผลการชำระอากร และการขอภาพแบบฯ ใบเสร็จรับเงินระหว่างผู้นำส่งกับกรมสรรพากร จะต้องมีการลงลายมือชื่อเพื่อความปลอดภัยในการรับส่งข้อมูล
ข้อมูลแบบฯ อ.ส.9 ที่ผู้นำส่ง ส่งให้กรมสรรพากร จะต้องอยู่ในรูปแบบมาตรฐาน JWS (JSON Web Signature) ซึ่ง JWS จะประกอบด้วยข้อมูล 3 ส่วน คือ JWS Header, JWS Payload และ JWS Signature ซึ่งทั้ง 3 ส่วน จะต้องถูกเข้ารหัสแบบ base64url encoded และต่อกันด้วย “.”
Example
base64url(UTF8(JWS Header) ) || '.' || base64url( JWS Payload ) || '.' ||
base64url( JWS Signature )
JWS Header
ส่วนของ Header จะเป็นข้อมูลซึ่งจะบอกว่าเป็น type และใช้ algorithm อะไร
{
"alg": "HS256",
"typ": "JWT"
}
ตัวอย่าง ข้อมูลเมื่อนำไปเข้ารหัสแบบ base64url encoder
ส่วนของ Header จะเป็นข้อมูลซึ่งจะบอกว่าเป็น type และใช้ algorithm อะไร
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
JWS Payload
ส่วนของ JWS Payload จะเป็นส่วนของข้อมูลแบบฯ อ.ส.9 ที่จะส่งให้กรมสรรพากร
{
"documentDetail": {
"requestId": "rdtest201908200041001",
"formType": "OS9",
"typeCode": "7",
"version": "01.00.0000",
"transAmount": 1
},
"instInfo": [
{
"id": "rdtest201908200041001",
"contractNo": "",
"creationDate": "2019-08-20",
"effectiveDate": "2019-08-20",
"expireDate": null,
"sendFormType": "1",
"relateInstInfo": null,
"instAmount": null,
"taxPayer": {
"specifiedTaxRegistration": {
"id": "1111111111119"
},
"branchNo": "0",
"branchType": "O",
"relationship": "2"
},
"party": {
"specifiedTaxRegistration": {
"id": "1212121212121"
},
"titleName": "นาย",
"name": "",
"surname": "",
"branchNo": "0",
"branchType": "O",
"postalTradeAddress": {
"buildingName": "",
"roomNo": "",
"floorNo": "",
"villageName": "",
"buildingNumber": "",
"moo": "",
"soiName": "",
"junctionName": "",
"streetName": "ถนนเพชรเกษม",
"citySubDivisionName": "หาดใหญ่",
"cityName": "หาดใหญ่",
"countrySubDivisionName": "สงขลา",
"postCode": "90110",
"countryId": "TH"
},
"totalParty": 1
},
"attachDetail": {
"detail1": "สัญญาแต่งตั้งตัวแทนนายหน้า",
"detail2": null,
"detail3": null,
"detail4": null,
"date": null,
"amount": null,
"number": null,
"actionType": "2"
},
"payment": {
"dutyAmount": 30,
"surchargeAmount": 0,
"fineAmount": 0,
"totalAmount": 30
}
}
],
"summary": {
"totalDuty": 30,
"totalSurcharge": 0,
"totalFine": 0,
"totalPayment": 30,
"payer": {
"specifiedTaxRegistration": {
"id": "1111111111119"
}
},
"responsePaymentType": "2"
}
}
ตัวอย่าง ข้อมูลเมื่อนำไปเข้ารหัสแบบ base64url encoder
ส่วนของ Header จะเป็นข้อมูลซึ่งจะบอกว่าเป็น type และใช้ algorithm อะไร
eyJkb2N1bWVudERldGFpbCI6eyJyZXF1ZXN0SWQiOiJ
yZHRlc3QyMDE5MDgyMDAwNDEwMDEiLCJmb3JtVHlwZ
SI6IiOiIwMS4wMC4wMDAwIiwidHJhbnNBbW91b4iLCJ
zdXJuYW1lIjoiPHN1cm5hbWU--C4leC4seC5ieC4h-
C4leC4seC4p-C5geC4l-C4meC4meC4suC4ouC4q ……………..
C4meCsImRldGFpbDQiOm51bGwsImRhdGlciI6eyJz
cGVjaWZpZWRUYXhSZWdpc3RyYXRpb24iOnsiaWQiOiI
xMTExMTExMTExMTE5In19LCJyZXNwb25zZVBheW1lbnR
UeXBlIjoiMiJ9fQ
JWS Signature
ส่วนของ JWS Signature คือ การลงลายมือชื่ออิเล็กทรอนิกส์ซึ่งจะเป็นการนำข้อมูลส่วนของ JWS Payload ที่ผ่านการเข้ารหัสแบบ base64url encoded มาทำการ sign ด้วย algorithm ตามที่ระบุไว้ใน header
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),
your-256-bit-secret)
ตัวอย่าง ข้อมูลเมื่อนำไปเข้ารหัสแบบ base64url encoder
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c