เชื่อม marketplace, social และแชต ด้วย API เดียว
CKN Providers คือชั้นเชื่อมต่อที่รวม marketplace, social, messaging และการรับชำระเงินแบบ Thai QR ไว้ใต้รูปแบบเดียวกัน ทีมของคุณเขียนโค้ดครั้งเดียว แล้วใช้ได้กับ Lazada, Shopee, TikTok Shop, LINE, WhatsApp และอีกหลายช่องทาง โดยไม่ต้องจ้างทำ integration แยกทีละเจ้า
สิ่งที่ CKN Providers ทำได้
Marketplace: Lazada, Shopee, TikTok Shop
จัดการร้านบนทั้งสาม marketplace ด้วยชุดคำสั่งเดียว ข้อมูลสินค้าและออเดอร์ถูกแปลงเป็นโมเดลกลาง แต่เก็บข้อมูลดิบจากแพลตฟอร์มไว้ให้เสมอ
- สินค้า: list, get, create, update, ปรับ stock และราคา (แบบ batch)
- ออเดอร์: ดึง, ยืนยันจัดส่ง, ยกเลิก, เอกสารจัดส่ง
- catalog, media, การเงิน (payout, settlement) และ returns
- รับ webhook พร้อมตรวจลายเซ็น
Social: Facebook, Instagram, TikTok
โพสต์คอนเทนต์ ติดตามคอมเมนต์ และดู insight จากที่เดียว รองรับทั้งการโพสต์แบบทันทีและแบบที่ต้องรอแพลตฟอร์มประมวลผล
- โพสต์, ดูสถานะการโพสต์, ลบโพสต์ (ตามที่แต่ละแพลตฟอร์มอนุญาต)
- คอมเมนต์และ insight ของ Facebook และ Instagram
- อัปโหลดสื่อ และค้นหาโพสต์ตาม hashtag บน Instagram
- TikTok รองรับการโพสต์วิดีโอ
Messaging: LINE, Messenger, Instagram Direct, WhatsApp
คุยกับลูกค้าบนสี่ช่องทางผ่าน connector รูปแบบเดียว และ webhook ทุกช่องทางถูกแปลงเป็น event รูปแบบเดียวกัน ฟีเจอร์ที่แพลตฟอร์มไม่มีจะแจ้งชัดเจน ไม่ถูกจำลองให้ผิดความจริง
- ส่งข้อความ รูป วิดีโอ ไฟล์ สติกเกอร์ ตำแหน่ง และ template ของ WhatsApp
- quick reply, read receipt, typing, reaction
- LINE: reply, multicast, broadcast
- ประวัติสนทนาบน Messenger และ Instagram
รับชำระเงิน: Thai QR และ Opn Payments
สร้าง QR พร้อมเพย์และ bill payment ได้เองโดยไม่ต้องใช้ provider หากต้องการรู้ว่าลูกค้าจ่ายแล้วหรือยัง ใช้ connector ของ Opn Payments หรือใช้ sandbox ทดสอบระบบก่อนต่อจริง
- สร้างและอ่าน Thai QR payload (PromptPay, bill payment)
- Opn: สร้าง QR, ตรวจสถานะ, ยกเลิก, รับ webhook
- ตรวจช่วงยอด 20.00 ถึง 150,000.00 บาทก่อนส่ง request
- SandboxPaymentConnector สำหรับทดสอบโดยไม่ต้องมี provider
OAuth และ token ที่จัดการให้ครบ
ทุก connector ใช้วงจร OAuth เดียวกัน: ขอสิทธิ์ แลก code เก็บ token และต่ออายุอัตโนมัติ คุณเลือกได้ว่าจะเก็บ token ที่ไหนด้วยการส่ง store ของตัวเองเข้าไป
- ต่ออายุ token ครั้งเดียวแม้มีหลาย request พร้อมกัน
- TokenStore ที่ต่อกับฐานข้อมูลของคุณได้ (3 เมธอด)
- 1 connector ต่อ 1 บัญชี เหมาะกับระบบหลายลูกค้า (multi-tenant)
- รับ event เมื่อ token ถูกต่ออายุหรือใช้ไม่ได้
ปลอดภัยและคาดเดาได้เป็นค่าเริ่มต้น
ความผิดพลาดแบบที่เจอบ่อยในงาน integration ถูกกันไว้ที่ตัว library ตั้งแต่ต้น ลดงานตรวจแก้และความเสี่ยงเรื่องข้อมูลลูกค้า
- ตรวจลายเซ็น webhook และอายุของ timestamp ก่อนเชื่อ event
- ข้อมูลผู้ซื้อถูกปิดบังไว้ เว้นแต่ขอ includePii อย่างชัดเจน
- จำนวนเงินเป็น decimal string ไม่ปัดเศษด้วย floating point
- error แยกประเภท (auth, rate limit, platform, validation) ให้ตัดสินใจในโค้ดได้
ค่าเริ่มต้นที่ออกแบบมาเพื่อระบบจริง
ตัวเลขด้านล่างคือค่าเริ่มต้นของ transport ที่ทุก connector ใช้ร่วมกัน ไม่ใช่ผล benchmark ความเร็ว ทุกค่าปรับได้ต่อ connector
ตัวเลขจากชุดทดสอบและ benchmark ภายในของ CKN ผลจริงขึ้นกับเครื่องและปริมาณข้อมูลของแต่ละระบบ
ธุรกิจของคุณได้อะไร
จ่ายค่า integration ครั้งเดียว
เพิ่มช่องทางขายหรือช่องทางแชตใหม่โดยไม่ต้องเขียนระบบใหม่ทั้งชุด ทีมใช้โมเดลและวิธี handle error เดิม ลดเวลาและต้นทุนทุกครั้งที่ธุรกิจขยายช่องทาง
ลดความเสี่ยงจากข้อมูลและเงิน
ข้อมูลผู้ซื้อถูกปิดบังเป็นค่าเริ่มต้น จำนวนเงินไม่ถูกปัดเศษ และ webhook ถูกตรวจลายเซ็นก่อนใช้งาน ช่วยลดโอกาสข้อมูลรั่วและยอดเงินผิดพลาดตั้งแต่ระดับ library
เป็นเจ้าของโค้ดเอง ไม่ผูกกับ SDK ภายนอก
เรียก API สาธารณะของแต่ละแพลตฟอร์มโดยตรง ไม่ฝัง SDK ของใคร และมี dependency เพียงตัวเดียว (CKN core) ทำให้ตรวจสอบง่าย อัปเกรดง่าย และรันได้ทั้งบน Node.js และในเบราว์เซอร์
ดึงออเดอร์ Shopee ใน 24 ชั่วโมงล่าสุด
ใช้งานอยู่ในส่วนต่าง ๆ ของ CKN stack
- business service ที่ขายออนไลน์: ซิงก์ออเดอร์ สต็อก และราคากับ marketplace
- integration platform: ช่องทางขาออกและขาเข้า (webhook) สู่แพลตฟอร์มภายนอก
- industry solution ด้านค้าปลีก แฟชั่น และ FMCG ที่ต้องขายและคุยกับลูกค้าบนหลายช่องทาง
- แอปบริการลูกค้าที่รับแชตจาก LINE, WhatsApp, Messenger และรับชำระด้วย Thai QR
import { ShopeeConnector, makeTokenSet } from "@ckn-technology/providers/marketplace";
const shopee = new ShopeeConnector({
credentials: { partnerId: process.env.SHOPEE_PARTNER_ID!, partnerKey: process.env.SHOPEE_PARTNER_KEY! },
account: { shopId: process.env.SHOPEE_SHOP_ID! },
tokens: makeTokenSet({ accessToken: process.env.SHOPEE_ACCESS_TOKEN!, expiresInSec: 14_400, nowMs: Date.now() }),
});
for await (const page of shopee.orders.list({ createdAfter: new Date(Date.now() - 86_400_000) })) {
for (const order of page.items) console.log(order.status, order.total); // same model on every marketplace
}
shopee.dispose();
