การส่งข้อมูล และการลงลายมือชื่ออิเล็กทรอนิกส์

chevron_left ย้อนกลับ

การเชื่อมต่อ การส่งข้อมูล

โปรโตคอล (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 อะไร
"eyJkb2N1bWVudERldGFpbCI6eyJyZXF1ZXN0SWQiOiJyZHRlc3QyMDE5MDgyMDAwNDEwMDEiLCJmb3JtVHlwZSI6IiOiIwMS4wMC4wMDAwIiwidHJhbnNBbW91b4iLCJzdXJuYW1lIjoiPHN1cm5hbWU--C4leC4seC5ieC4h-C4leC4seC4p-C5geC4l-C4meC4meC4suC4ouC4q…………….. C4meCsImRldGFpbDQiOm51bGwsImRhdGlciI6eyJzcGVjaWZpZWRUYXhSZWdpc3RyYXRpb24iOnsiaWQiOiIxMTExMTExMTExMTE5In19LCJyZXNwb25zZVBheW1lbnRUeXBlIjoiMiJ9fQ"

JWS Signature

ส่วนของ JWS Signature คือ การลงลายมือชื่ออิเล็กทรอนิกส์ซึ่งจะเป็นการนำข้อมูลส่วนของ JWS Payload ที่ผ่านการเข้ารหัสแบบ base64url encoded มาทำการ sign ด้วย algorithm ตามที่ระบุไว้ใน header
"HMACSHA256(base64UrlEncode(header) + '.' + base64UrlEncode(payload), your-256-bit-secret)"
ตัวอย่าง ข้อมูลเมื่อนำไปเข้ารหัสแบบ base64url encoder
"SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"