Opens in a new tab

วิธีเชื่อม API ตรวจสลิปด้วย Python (FastAPI) พร้อมตัวอย่างโค้ด  

วิธีเชื่อม API ตรวจสลิปด้วย Python (FastAPI) พร้อมตัวอย่างโค้ด

เชื่อม API ตรวจสลิปด้วย Python ช่วยให้เว็บไซต์หรือระบบหลังบ้านสามารถตรวจสอบข้อมูลการโอนเงินได้อัตโนมัติ โดยไม่ต้องให้พนักงานตรวจสลิปทีละรายการ สำหรับนักพัฒนาที่ใช้ FastAPI สามารถเชื่อมต่อกับ EasySlip API v2 ผ่าน HTTP Request เพื่อส่งข้อมูล QR Payload ของสลิป แล้วรับผลตรวจสอบ เช่น จำนวนเงิน รายละเอียดธุรกรรม และสถานะสลิปซ้ำกลับมาใช้งานต่อในระบบได้ บทความนี้จะพาไปดูตั้งแต่การเตรียม API Key การติดตั้ง Python Library ไปจนถึงตัวอย่างโค้ด FastAPI สำหรับสร้าง Endpoint ตรวจสอบสลิปที่สามารถนำไปต่อยอดกับระบบรับออเดอร์และระบบยืนยันการชำระเงินได้ 

ทำไมต้องใช้ Python FastAPI เชื่อม API ตรวจสลิป?

FastAPI เป็น Framework สำหรับสร้าง Web API ด้วย Python ที่รองรับการทำงานแบบ Asynchronous มีระบบตรวจสอบข้อมูลที่รับเข้ามา และสร้างเอกสาร API อัตโนมัติ ช่วยให้นักพัฒนาสร้าง Endpoint สำหรับรับข้อมูลจากหน้าเว็บไซต์หรือระบบอื่นได้สะดวกขึ้น เมื่อเชื่อมต่อกับ EasySlip API แล้ว สามารถนำไปประยุกต์ใช้กับงานต่าง ๆ ได้ เช่น

  • ตรวจสอบข้อมูลสลิปก่อนอัปเดตสถานะคำสั่งซื้อ
  • เปรียบเทียบยอดเงินในสลิปกับยอดที่ลูกค้าต้องชำระ
  • ตรวจสอบว่าสลิปเคยถูกส่งมาตรวจสอบแล้วหรือไม่
  • ดึงข้อมูลธุรกรรมไปประกอบการทำงานของระบบหลังบ้าน

อย่างไรก็ตาม การเรียก API สำเร็จไม่ได้หมายความว่าควรยืนยันคำสั่งซื้อทันที ระบบควรตรวจสอบผลลัพธ์และเงื่อนไขการชำระเงินให้ครบก่อนเปลี่ยนสถานะเป็นชำระเงินแล้ว

ขั้นตอนเตรียมความพร้อมก่อนเชื่อม EasySlip API

ก่อนเริ่มเขียนโค้ด ควรมีบัญชี EasySlip Developer และ API Key สำหรับเรียกใช้งาน API โดย EasySlip API v2 ใช้ Bearer Token ใน Header เพื่อยืนยันตัวตน และมี Endpoint สำหรับตรวจสอบสลิปธนาคารที่ https://api.easyslip.com/v2/verify/bank

ขั้นตอนเตรียมความพร้อมก่อนเชื่อม EasySlip API
ขั้นตอนเตรียมความพร้อมก่อนเชื่อม EasySlip API

1. ติดตั้ง Library ที่จำเป็น

ติดตั้งแพ็กเกจ FastAPI, Uvicorn, HTTPX และ Python Dotenv ด้วยคำสั่ง

pip install fastapi uvicorn httpx python-dotenv

HTTPX ใช้ส่ง HTTP Request ไปยัง EasySlip API ส่วน python-dotenv ช่วยโหลดค่าตั้งค่าจากไฟล์ .env ในสภาพแวดล้อมพัฒนา 

2. ตั้งค่า API Key

สร้างไฟล์ .env ไว้ในโฟลเดอร์โปรเจกต์ แล้วใส่ API Key ของตัวเอง

EASYSLIP_API_KEY=your_actual_api_key

อย่านำ API Key จริงไปใส่ในโค้ดที่เผยแพร่สู่สาธารณะ หรือส่งขึ้น Git Repository ที่ทุกคนเข้าถึงได้ สำหรับระบบ Production ควรใช้ Secret Manager หรือระบบจัดการความลับของแพลตฟอร์มที่นำแอปพลิเคชันไปติดตั้ง และไม่บันทึก Key ลงใน Log

ตัวอย่างโค้ด Python FastAPI เชื่อม EasySlip API v2 เพื่อตรวจสอบสลิปโอนเงินอัตโนมัติ
ตัวอย่างโค้ด Python FastAPI เชื่อม EasySlip API v2 เพื่อตรวจสอบสลิปโอนเงินอัตโนมัติ

ตัวอย่างโค้ดเชื่อม API ตรวจสลิปด้วย Python FastAPI

ตัวอย่างต่อไปนี้สร้าง Endpoint ชื่อ /verify-slip เพื่อรับ QR Payload จากระบบของเรา จากนั้นส่งข้อมูลไปตรวจสอบกับ EasySlip API v2 พร้อมรองรับการเปรียบเทียบยอดเงินและตรวจสอบสลิปซ้ำ

สร้างไฟล์ main.py แล้วใส่โค้ดต่อไปนี้ 

import os

import httpx

from dotenv import load_dotenv

from fastapi import FastAPI, HTTPException

from pydantic import BaseModel, Field

load_dotenv()

app = FastAPI(title="Slip Verification API")

EASYSLIP_API_KEY = os.getenv("EASYSLIP_API_KEY")

EASYSLIP_URL = (

    "https://api.easyslip.com/v2/verify/bank"

)

class VerifySlipRequest(BaseModel):

    payload: str = Field(min_length=1, max_length=128)

    expected_amount: float | None = Field(

        default=None, gt=0

    )

    check_duplicate: bool = True

    match_account: bool = False

    order_id: str | None = Field(

        default=None, max_length=255

    )

@app.post("/verify-slip")

async def verify_slip(request: VerifySlipRequest):

    if not EASYSLIP_API_KEY:

        raise HTTPException(

            status_code=500,

            detail="EasySlip API Key is not configured"

        )

    body = {

        "payload": request.payload,

        "checkDuplicate": request.check_duplicate,

        "matchAccount": request.match_account,

    }

    if request.expected_amount is not None:

        body["matchAmount"] = request.expected_amount

    if request.order_id: 

        body["remark"] = request.order_id

    headers = {

        "Authorization": f"Bearer {EASYSLIP_API_KEY}",

        "Content-Type": "application/json",

    }

    try:

        async with httpx.AsyncClient(

            timeout=15.0

        ) as client:

            response = await client.post(

                EASYSLIP_URL,

                headers=headers,

                json=body,

            )

    except httpx.TimeoutException:

        raise HTTPException(

            status_code=504,

            detail="EasySlip API request timed out",

        )

    except httpx.RequestError:

        raise HTTPException(

            status_code=502,

            detail="Unable to connect to EasySlip API",

        )

    try:

        result = response.json()

    except ValueError:

        raise HTTPException(

            status_code=502,

            detail="Invalid response from EasySlip API",

        )

    if response.is_error:

        raise HTTPException(

            status_code=502,

            detail={

                "message": "EasySlip API returned an error",

                "upstream_status": response.status_code,

            },

        )

    return result

โค้ดนี้ใช้ชื่อฟิลด์แบบ Python เช่น expected_amount และแปลงเป็น matchAmount ก่อนส่งให้ EasySlip ตามรูปแบบ Request ของ API v2 ส่วน checkDuplicate ใช้ตรวจสอบสลิปซ้ำ และ matchAccount ใช้ตรวจสอบการจับคู่บัญชีผู้รับตามบัญชีที่ลงทะเบียนไว้   สำหรับตัวอย่างนี้รองรับการส่ง QR Payload เท่านั้น หากต้องการส่งไฟล์รูปสลิปโดยตรง ต้องปรับ Request ให้ใช้ multipart/form-data ตามเอกสาร API 

3. เริ่มต้นใช้งาน API

เปิด Terminal ในโฟลเดอร์เดียวกับ main.py แล้วรันคำสั่ง

uvicorn main:app –reload

เมื่อเซิร์ฟเวอร์เริ่มทำงานแล้ว ให้เปิด http://127.0.0.1:8000/docs เพื่อทดลองเรียก Endpoint ผ่านหน้าเอกสาร API อัตโนมัติของ FastAPI ได้

4. ทดลองส่งข้อมูลตรวจสอบสลิป

ตัวอย่าง Request สำหรับทดสอบ Endpoint ของเรา

curl -X POST http://127.0.0.1:8000/verify-slip \

  -H “Content-Type: application/json” \

  -d ‘{

    “payload”: “YOUR_REAL_QR_PAYLOAD”,

    “expected_amount”: 1500,

    “check_duplicate”: true,

    “match_account”: true,

    “order_id”: “ORDER-12345”

  }’

เปลี่ยน YOUR_REAL_QR_PAYLOAD ให้เป็น QR Payload จริงจากสลิปที่ต้องการตรวจสอบ และใช้บัญชีที่ตั้งค่าไว้ใน EasySlip หากเปิดใช้การจับคู่บัญชี ตัวอย่างนี้เป็นข้อมูลสำหรับทดสอบรูปแบบ Request ไม่ใช่ข้อมูลธุรกรรมจริง

อ่านผลตรวจสอบสลิปอย่างไรให้ถูกต้อง?

EasySlip API v2 มีข้อมูลที่นำไปใช้ประกอบการตัดสินใจได้หลายรายการ เช่น

ฟิลด์ความหมาย
successผลการเรียกตรวจสอบตาม Response ของ API
amountInSlipจำนวนเงินจากสลิปโอนเงิน
isAmountMatchedผลการเปรียบเทียบยอดเงินกับยอดที่กำหนด
isDuplicateระบุว่าสลิปเคยถูกตรวจสอบแล้วหรือไม่
matchedAccountข้อมูลบัญชีที่จับคู่ได้ หากมีผลการจับคู่
rawSlip.transRefรหัสอ้างอิงธุรกรรม
rawSlip.dateวันและเวลาของธุรกรรม

หาก isDuplicate เป็น true ควรหยุดการดำเนินการที่อาจทำให้เกิดการรับชำระซ้ำ ส่วนกรณี isAmountMatched เป็น false ไม่ควรยืนยันว่าออเดอร์ได้รับเงินครบตามยอดที่กำหนดโดยอัตโนมัติ นอกจากนี้ ควรตรวจสอบโครงสร้าง Response และจัดการกรณี API Key ไม่ถูกต้อง ข้อมูลไม่ครบ หรือบริการไม่ตอบสนองด้วย เพราะการเชื่อมต่อ API สำเร็จเพียงอย่างเดียวยังไม่เพียงพอที่จะยืนยันว่าธุรกรรมถูกต้อง

ข้อควรระวังเมื่อเชื่อม API ตรวจสลิปกับระบบจริง

ก่อนนำระบบขึ้น Production ควรคำนึงถึงประเด็นสำคัญดังนี้

  • ความปลอดภัย: เก็บ API Key ฝั่ง Server เท่านั้น พร้อมจำกัดสิทธิ์การเข้าถึง Endpoint ของเราเอง
  • การตรวจสอบซ้ำ: ใช้ข้อมูลอ้างอิงธุรกรรมและสถานะคำสั่งซื้อร่วมด้วย เพื่อป้องกันการประมวลผลซ้ำ
  • การจัดการข้อผิดพลาด: แยกกรณีข้อมูลผิดพลาด API หมดเวลา และบริการต้นทางขัดข้องออกจากกัน
  • การตรวจสอบยอดเงิน: เปรียบเทียบยอดที่ได้รับกับยอดของคำสั่งซื้อจริงก่อนยืนยันการชำระเงิน
  • การทดสอบระบบ: ทดลองกับข้อมูลทดสอบและกรณีผิดพลาดหลายรูปแบบก่อนใช้งานจริง

สำหรับระบบที่ต้องตรวจสอบสลิปจำนวนมาก สามารถศึกษาการทำงานแบบ Asynchronous หรือ Batch ของ EasySlip API เพิ่มเติม เพื่อเลือกวิธีเชื่อมต่อให้เหมาะกับปริมาณงานและขั้นตอนการทำงานของระบบ

สรุปวิธีเชื่อม API ตรวจสลิปด้วย Python

การเชื่อม API ตรวจสลิปด้วย Python และ FastAPI สามารถเริ่มต้นได้จากการสร้าง Endpoint รับ QR Payload ส่งข้อมูลไปยัง EasySlip API v2 และนำผลตรวจสอบกลับมาใช้งานในระบบหลังบ้าน วิธีนี้ช่วยลดขั้นตอนการตรวจสอบด้วยมือและทำให้ระบบจัดการสถานะการชำระเงินได้เป็นระเบียบขึ้น ซึ่งสิ่งสำคัญคือควรตรวจสอบยอดเงิน สถานะสลิปซ้ำ และบัญชีผู้รับตามเงื่อนไขของธุรกิจ รวมถึงจัดการข้อผิดพลาดและเก็บ API Key อย่างปลอดภัย ก่อนนำระบบไปใช้งานจริง หากต้องการเพิ่มระบบตรวจสลิปอัตโนมัติให้กับเว็บไซต์หรือแอปพลิเคชัน สามารถเริ่มต้นจาก Slip Verification API จาก EasySlip แล้วเลือกวิธีเชื่อมต่อให้เหมาะกับเทคโนโลยีที่ใช้อยู่

คำถามที่พบบ่อย (FAQ)

Q 1: Python สามารถเชื่อม API ตรวจสลิปได้อย่างไร?

สามารถใช้ HTTP Client เช่น HTTPX ส่ง HTTP Request จาก Python ไปยัง API ตรวจสลิป โดยระบุ API Key ใน Header และส่งข้อมูลสลิปตามรูปแบบที่ผู้ให้บริการกำหนด จากนั้นนำ Response กลับมาตรวจสอบและประมวลผลในระบบ

Q 2: FastAPI เหมาะกับการทำระบบตรวจสอบสลิปอัตโนมัติหรือไม่?

เหมาะสำหรับการสร้าง Endpoint ที่รับข้อมูลจากเว็บไซต์หรือระบบหลังบ้าน แล้วส่งต่อไปยัง API ตรวจสลิป FastAPI รองรับ Asynchronous Request และมีเอกสาร API อัตโนมัติ ช่วยให้พัฒนาและทดสอบการเชื่อมต่อได้สะดวก

Q 3: EasySlip API ตรวจสอบยอดเงินและสลิปซ้ำได้หรือไม่?

ได้ โดย API v2 รองรับพารามิเตอร์ matchAmount สำหรับเปรียบเทียบยอดเงิน และ checkDuplicate สำหรับตรวจสอบสลิปที่เคยถูกตรวจสอบแล้ว ควรอ่านผลลัพธ์ที่ได้รับและกำหนดเงื่อนไขการยืนยันการชำระเงินในระบบของตัวเองด้วย

Q 4: สามารถส่งรูปสลิปแทน QR Payload ได้หรือไม่?

ได้ EasySlip API v2 รองรับการตรวจสอบผ่าน QR Payload, ไฟล์รูปภาพ, Base64 และ URL แต่แต่ละวิธีใช้รูปแบบ Request ต่างกัน ตัวอย่างในบทความนี้ใช้ QR Payload หากต้องการส่งรูปภาพโดยตรง ต้องปรับโค้ดให้ส่งไฟล์ผ่าน multipart/form-data

Q 5: ควรเก็บ API Key ไว้ตรงไหน?

ควรเก็บ API Key ใน Environment Variables หรือระบบจัดการ Secrets ของแพลตฟอร์ม โดยเรียก API จากฝั่ง Server และหลีกเลี่ยงการฝังคีย์ไว้ใน Frontend, Source Code ที่เผยแพร่สาธารณะ หรือ Log

เพิ่มระบบตรวจสอบสลิปอัตโนมัติให้ธุรกิจของคุณ

ลดขั้นตอนการตรวจสอบสลิปโอนเงินแบบแมนนวลด้วย Slip Verification API จาก EasySlip ที่ช่วยให้ระบบของคุณนำข้อมูลธุรกรรมไปตรวจสอบและประมวลผลต่อได้สะดวกยิ่งขึ้น ดูรายละเอียดบริการและช่องทางสมัครใช้งานได้ที่เว็บไซต์ EasySlip หมดปัญหาสลิปปลอม ด้วยบริการ Slip Verification API จาก EasySlip ช่วยให้การตรวจสอบสถานะและรายละเอียดการโอนจ่ายเป็นเรื่องง่าย

บทความที่เกี่ยวข้อง