CKN/Technology/CKN Providers
CKN Providers

One API for marketplaces, social and chat

CKN Providers puts marketplaces, social platforms, messaging and Thai QR payments behind one consistent contract. Your team writes the integration once and reuses it across Lazada, Shopee, TikTok Shop, LINE, WhatsApp and more, instead of paying for a separate build per platform.

10platforms supported: 3 marketplace, 3 social, 4 messaging
29standard capability flags per marketplace connector (products, orders, finance, returns)
1runtime dependency (CKN core only), no platform SDK bundled
380+automated tests passing offline (plus 3 optional live checks that run only with credentials)
Capabilities

What CKN Providers does

01

Marketplace: Lazada, Shopee, TikTok Shop

Run shops on all three marketplaces with one set of calls. Products and orders map to a common model, and the platform's raw payload is always kept alongside.

  • Products: list, get, create, update, stock and price (batch)
  • Orders: list, get, ship, cancel, shipping documents
  • Catalog, media, finance (payouts, settlements) and returns
  • Signed webhook parsing
02

Social: Facebook, Instagram, TikTok

Publish content, follow comments and read insights from one place. Handles both instant posts and posts the platform processes in the background.

  • Publish, check publish status, delete (where the platform allows)
  • Comments and insights for Facebook and Instagram
  • Media upload and Instagram hashtag discovery
  • TikTok video publishing
03

Messaging: LINE, Messenger, Instagram Direct, WhatsApp

Chat with customers on four channels through one connector, with every channel's webhooks flattened into one event shape. Features a platform lacks are refused clearly, never faked.

  • Send text, image, video, file, sticker, location and WhatsApp templates
  • Quick replies, read receipts, typing, reactions
  • LINE reply, multicast and broadcast
  • Conversation history on Messenger and Instagram
04

Payments: Thai QR and Opn Payments

Build PromptPay and bill-payment QR codes yourself with no provider. To know when the customer has paid, use the Opn Payments connector, or the built-in sandbox to test your flow first.

  • Create and parse Thai QR payloads (PromptPay, bill payment)
  • Opn: create QR, check status, cancel, receive webhooks
  • Amount range 20.00 to 150,000.00 THB checked before any request
  • SandboxPaymentConnector for testing without a provider
05

OAuth and token lifecycle, handled

Every connector shares one OAuth lifecycle: authorise, exchange the code, store tokens and refresh them automatically. You choose where tokens live by passing in your own store.

  • One shared refresh even with many concurrent requests
  • Pluggable TokenStore for your own database (3 methods)
  • One connector per account, built for multi-tenant services
  • Events when a token is refreshed or becomes invalid
06

Safe and predictable by default

The mistakes that usually plague integration work are blocked in the library itself, which cuts rework and customer-data risk.

  • Webhook signature and timestamp-age checks before an event is trusted
  • Buyer data masked unless you explicitly ask for includePii
  • Money as a decimal string, never a rounded float
  • Typed errors (auth, rate limit, platform, validation) you can branch on
Reliability

Defaults designed for production

These are the defaults of the shared transport every connector runs on, not speed benchmarks. Every value can be tuned per connector.

Attempts when a request fails transiently
3 attempts
Backoff starts at 250 ms, doubles up to 5 s, with jitter, and honours the platform's Retry-After header.
Retries for write calls
1 attempt
POST and PATCH are not retried automatically, so a retry cannot create duplicates. GET, PUT and DELETE are retried.
Timeout per request
30 s
Covers the whole attempt including reading the body. A timeout is reported as a retryable error.
Maximum response size accepted
8 MiB
Protects memory from oversized or runaway responses. Adjustable per connector.
Webhook timestamp tolerance
±5 min
Webhooks older or newer than this window are rejected, which helps block replay attacks. Adjustable.
Token refreshed ahead of expiry
60 s
Tokens are refreshed 60 seconds early, and only once even when many requests arrive together.

Figures come from CKN's own test suites and benchmarks. Real results depend on each system's hardware and data volume.

Business value

What your business gets

Pay for the integration once

Add a new sales or chat channel without rebuilding the system. Your team reuses the same models and error handling, which cuts time and cost each time the business expands to a channel.

Lower risk on data and money

Buyer data is masked by default, amounts are never rounded, and webhooks are signature-checked before use. That reduces the chance of data leaks and wrong totals at the library level.

Own the code, no external SDK lock-in

It calls each platform's public API directly, bundles no one's SDK and has a single dependency (CKN core). That makes it easy to audit and upgrade, and it runs on both Node.js and in the browser.

For developers

Pull the last 24 hours of Shopee orders

In use across the CKN stack

  • Business services that sell online: sync orders, stock and prices with marketplaces
  • The integration platform: outbound calls and inbound webhooks to external platforms
  • Retail, fashion and FMCG solutions that sell and talk to customers across channels
  • Customer-service apps that take chats from LINE, WhatsApp and Messenger and collect payment by 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();
CKN Technology

Explore the other packages

See CKN Providers working on your systems

Contact us →