[ชื่อ-นามสกุล] / backend

● เปิดรับงานเล็ก · remote / async · เวลาไทย (UTC+7)

ไล่ดูว่าข้อมูลผิดตรงไหน ก่อนลงมือแก้

นักพัฒนา backend / API ระดับต้น รับงานสืบหาสาเหตุบั๊ก เชื่อมต่อ API และสำรวจระบบเดิมก่อนออกแบบใหม่ ผมเขียนสิ่งที่เข้าใจให้คุณตรวจก่อนเสมอ

01

ลองเล่น:ลายเซ็นของ webhook

ระบบรับเงินต้องเชื่อได้ว่าคำขอมาจากผู้ให้บริการจริง ลองแก้ข้อความทีละนิดแล้วดูว่าทำไมผมตรวจจากไบต์ดิบก่อนอ่านเนื้อหา

1 · ผู้ส่ง: ลายเซ็นของข้อความต้นฉบับ

…

2 · ผู้รับ: ข้อความที่ได้รับ (แก้ได้)

3 · ผู้รับ: คำนวณลายเซ็นจากข้อความที่ได้รับ

…

4 · เปรียบเทียบ (เวลาคงที่)

ไบต์ไม่ตรงกับที่เซ็นไว้ จึงไม่อ่านเนื้อหาเลย

ลองกด "เติมช่องว่าง" หรือ "จัดรูป JSON ใหม่": ความหมายของ JSON ไม่เปลี่ยน แต่ลายเซ็นไม่ตรง เพราะลายเซ็นคิดจากไบต์ ผู้รับจึงต้องตรวจจาก raw body ก่อน parse แล้วค่อยอ่านค่า ระบบของผมทำตามลำดับนี้

ตัวอย่างนี้คำนวณ HMAC-SHA256 ในเบราว์เซอร์ของคุณด้วยคีย์สมมติ demo-secret-key ไม่เกี่ยวกับคีย์จริงของระบบใด

02

ลองเล่น:webhook มาได้หลายแบบ

เหตุการณ์จริงที่ระบบจ่ายเงินต้องรับมือ: ส่งซ้ำ จ่ายซ้ำสองช่องทาง ยอดไม่ตรง QR หมดอายุก่อนเงินเข้า เลือกเหตุการณ์แล้วดูว่าระบบตัดสินใจอย่างไรทีละขั้น

คำขอที่เข้ามา · POST /beam/webhook

x-beam-signature: ถูกต้อง
body: SUCCEEDED · THB · 15000 สตางค์

    ก่อนรับ webhook

    ยอดบิล
    ฿150.00
    payment
    pending
    order
    served
    หมายเหตุ
    —

    หลังรับ webhook

    กด "ส่ง webhook" เพื่อดูผล

    จำลองตามโค้ดจริงใน rice-shop-pos (promptpay.rs · webhook / settle) ไม่ได้เชื่อมต่อ Beam หรือระบบจริง

    03

    rice-shop-pos

    โปรเจกต์ส่วนตัว: POS แบบ PWA สำหรับร้านข้าวหลายสาขา เปิดโค้ดเป็นสาธารณะ ไม่ใช่งานจากที่ทำงาน และผมไม่อ้างจำนวนผู้ใช้หรือรายได้

    เงิน
    เก็บเป็นสตางค์ (จำนวนเต็ม) ไม่ใช้ทศนิยม
    ประวัติการเงิน
    ออเดอร์และการชำระเงินเป็นแบบเพิ่มต่อท้าย การยกเลิก/คืนเงินเป็นสถานะพร้อมเหตุผล ไม่ลบข้อมูล
    ชำระด้วย PromptPay
    สร้าง QR ผ่าน Beam แล้วรอ webhook ที่ตรวจลายเซ็นจากไบต์ดิบ บิลปิดได้เมื่อ Beam แจ้งสำเร็จด้วยยอดที่ตรงเท่านั้น ไม่มีปุ่มให้พนักงานปิดเอง
    หลายร้าน
    ทุกตารางมี shop_id เจ้าของเข้าผ่าน Cloudflare Access พนักงานใช้ PIN พร้อมการล็อกเมื่อใส่ผิดซ้ำ
    อ่านสลิป
    คิวสลิปให้ตัวอ่านในเครื่องร้านก่อน ถ้าไม่ว่างจึงใช้ Workers AI สำรอง และมีงานกวาดคิวทุกนาที
    ส่งขึ้นระบบ
    CI รันทุก push และ PR ส่วน deploy ทำเมื่อ push tag ที่อยู่บน main เท่านั้น
    • Rust (axum)
    • Cloudflare Workers
    • D1
    • R2
    • React PWA
    • GitHub Actions
    04

    วิธีทำงาน

    • เขียนสิ่งที่เข้าใจให้ตรวจก่อนสรุปปัญหา ข้อสมมติ และคำถามที่ยังค้าง ให้คุณยืนยันก่อนลงมือ
    • ไล่ edge case ที่เกี่ยวกับเงินและสถานะกดซ้ำ ยกเลิกกลางทาง ข้อมูลมาซ้ำหรือสลับลำดับ
    • ใช้ AI เป็นผู้ช่วย ไม่ใช่เจ้าของงานผมใช้ช่วยวิเคราะห์ เทียบทางเลือก และรีวิว แต่ logic และการตรวจความถูกต้องเป็นหน้าที่ของผม
    • ส่งมอบเป็นขั้นที่ตรวจรับได้แบ่งงวดจ่าย ถ้าขั้นแรกไม่ผ่านก็ยังไม่ต้องไปต่อ

    ผมไม่รับ

    • งานระดับ senior หรือเป็นเจ้าของสถาปัตยกรรม production
    • DevOps / ดูแลระบบจริงตลอดเวลา
    • งาน frontend ที่เน้นดีไซน์ หรือแอปมือถือ native
    • งานจริงที่ไม่มีค่าจ้าง
    05

    เล่าปัญหาให้ฟังได้เลย

    ทำงานประจำอยู่ จึงรับงานแบบ async ช่วงเย็นและวันหยุด ตอบภายใน 1 วันทำการ

    อีเมล[PLACEHOLDER: อีเมล]LINE[PLACEHOLDER: LINE ID]Fastwork[PLACEHOLDER: ลิงก์โปรไฟล์]GitHubgithub.com/vote1995