แอปพลิเคชัน Fintech ไม่ค่อยเริ่มต้นจากศูนย์อีกต่อไปแล้ว เมื่อผู้ใช้เชื่อมโยงบัญชีเช็คเข้ากับแอปของคุณ โอกาสที่ Plaid จะเข้ามาอยู่ตรงกลาง ทำหน้าที่แปลงการเข้าสู่ระบบธนาคารให้เป็น JSON ที่สะอาดซึ่งแบ็กเอนด์ของคุณสามารถนำไปใช้ได้ Plaid API ขับเคลื่อนการเชื่อมโยงบัญชี การตรวจสอบยอดคงเหลือ ประวัติการทำธุรกรรม และการยืนยันตัวตนสำหรับแอปนับพัน รวมถึง Venmo, Robinhood และ Chime
คู่มือนี้จะพาคุณไปทำความเข้าใจ Plaid API จากมุมมองของนักพัฒนา: วิธีรับคีย์ วิธีการทำงานของ Link token แบบครบวงจร ผลิตภัณฑ์ที่คุณควรรู้ และความหมายของข้อผิดพลาดทั่วไปเมื่อเกิดปัญหากับระบบที่ใช้งานจริง คุณยังจะได้เห็นวิธีทดสอบทุกขั้นตอนด้วย Apidog เพื่อให้คุณไม่ต้องเดาสิ่งที่จะส่งไปในคำขออีกต่อไป หากคุณต้องการแหล่งข้อมูลที่แท้จริง ให้เปิด เอกสารอย่างเป็นทางการของ Plaid ไว้ในแท็บที่สองขณะอ่าน
Open banking เป็นพื้นที่ที่มีการแข่งขันสูง และ Plaid เป็นหนึ่งในตัวเลือกหลายตัวเลือก หากคุณยังคงเปรียบเทียบผู้ให้บริการ คู่มือสรุป API Open banking ที่ดีที่สุด ของเราจะเป็นประโยชน์อย่างยิ่ง สำหรับโพสต์นี้ สมมติว่าคุณได้เลือก Plaid แล้วและพร้อมที่จะนำไปใช้งาน
สรุปย่อ (TL;DR)
- Plaid เป็นผู้รวบรวมข้อมูลทางการเงินที่เชื่อมต่อแอปของคุณกับธนาคารมากกว่า 12,000 แห่งทั่วสหรัฐอเมริกา แคนาดา และยุโรป
- คุณจะได้รับสามสภาพแวดล้อมทันทีที่ใช้งาน: Sandbox (ฟรี, ข้อมูลปลอม), Development (รายการสดฟรี 100 รายการ), และ Production (จ่ายตามการเรียกใช้)
- ขั้นตอนการเชื่อมโยงเป็นกระบวนการสี่ขั้นตอน: สร้าง `link_token` ฝั่งเซิร์ฟเวอร์, เปิด Plaid Link ฝั่งไคลเอนต์, แลกเปลี่ยน `public_token` เป็น `access_token`, จากนั้นเรียกใช้ endpoint ของผลิตภัณฑ์
- ผลิตภัณฑ์หลักคือ Auth, Balance, Transactions, Identity, Investments, Liabilities และ Income คุณเปิดใช้งานผลิตภัณฑ์เหล่านี้ต่อ Item
- ข้อผิดพลาดที่พบบ่อยที่สุดในการใช้งานจริงคือ `ITEM_LOGIN_REQUIRED` และ `INVALID_CREDENTIALS` Webhook จะแจ้งให้คุณทราบเมื่อ Item ต้องการความสนใจ
- มีการจำกัดอัตราต่อ Item และต่อไคลเอนต์ ควรอ่านข้อมูลเป็นชุดและฟัง Webhook แทนการสอบถามข้อมูลซ้ำๆ
Plaid คืออะไร?
Plaid เป็นบริษัทโครงสร้างพื้นฐาน fintech ในสหรัฐอเมริกาที่อยู่ระหว่างแอปของคุณกับธนาคารของผู้ใช้ เมื่อผู้ใช้ป้อนข้อมูลประจำตัวธนาคารลงใน Plaid Link Plaid จะเชื่อมต่อกับธนาคาร (ผ่าน API open banking อย่างเป็นทางการหากมี หรือเว็บไซต์ธนาคารที่วิศวกรรมย้อนกลับหากไม่มี) ดึงข้อมูลที่ร้องขอ ปรับให้เป็นมาตรฐาน และส่งคืนการตอบกลับ JSON ที่สอดคล้องกันให้คุณโดยไม่คำนึงว่ามาจากธนาคารใด
คุณจะไม่เห็นหรือจัดเก็บข้อมูลประจำตัวธนาคารของผู้ใช้ Plaid ถือการเชื่อมต่อ ซึ่งเรียกว่า Item และให้ `access_token` แก่คุณซึ่งแสดงถึงสิทธิ์ในการสอบถาม Item นั้น Item หนึ่งรายการเท่ากับการเข้าสู่ระบบหนึ่งชุดที่สถาบันการเงินหนึ่งแห่ง และอาจรวมถึงหลายบัญชี (บัญชีเช็ค, บัญชีออมทรัพย์, บัตรเครดิต)
Plaid ครอบคลุมบัญชีเช็คและออมทรัพย์ของผู้บริโภค บัตรเครดิต เงินกู้ยืม บัญชีลงทุน และข้อมูลเงินเดือน ไม่ได้เคลื่อนย้ายเงินด้วยตัวเอง สำหรับการโอนเงิน ACH โดยทั่วไปคุณจะจับคู่ Plaid Auth กับผู้ประมวลผลการชำระเงินแยกต่างหาก บทความของเราเกี่ยวกับ API การชำระเงิน ACH ที่ดีที่สุด จะอธิบายว่าการจับคู่นั้นโดยทั่วไปเป็นอย่างไร
การยืนยันตัวตนและการตั้งค่า
ขั้นตอนที่ 1: สร้างบัญชีนักพัฒนา Plaid
ลงทะเบียนที่ plaid.com และยืนยันอีเมลของคุณ คุณจะเข้าสู่ Plaid Dashboard พร้อมสภาพแวดล้อมสามแบบที่จัดเตรียมไว้แล้ว:
- Sandbox: สถาบันปลอม, ผู้ใช้ปลอม, ไม่มีค่าใช้จ่าย ใช้ `user_good` / `pass_good` เพื่อเข้าสู่ระบบ
- Development: การเชื่อมต่อธนาคารจริง, จำกัดที่ 100 Live Items, ฟรี
- Production: การเชื่อมต่อจริง, ไม่จำกัด, การเรียกเก็บเงินตามปริมาณการใช้งาน
ขั้นตอนที่ 2: ดึงคีย์ของคุณ
จาก Dashboard ไปที่ Team Settings > Keys คุณต้องใช้ค่าสองค่า:
- `client_id`: เหมือนกันในทุกสภาพแวดล้อม
- `secret`: แตกต่างกันไปในแต่ละสภาพแวดล้อม (sandbox, development, production)
จัดเก็บสิ่งเหล่านี้ไว้ในตัวแปรสภาพแวดล้อม ห้าม commit ไปยัง git เด็ดขาด
ขั้นตอนที่ 3: ติดตั้ง SDK
Node.js SDK อย่างเป็นทางการอยู่ที่ github.com/plaid/plaid-node
npm install plaid
ขั้นตอนที่ 4: เริ่มต้นไคลเอนต์
import { Configuration, PlaidApi, PlaidEnvironments } from 'plaid';
const config = new Configuration({
basePath: PlaidEnvironments.sandbox,
baseOptions: {
headers: {
'PLAID-CLIENT-ID': process.env.PLAID_CLIENT_ID,
'PLAID-SECRET': process.env.PLAID_SECRET,
},
},
});
const client = new PlaidApi(config);
Core Endpoints
ขั้นตอน Link token
การเชื่อมโยง Plaid ทุกครั้งจะปฏิบัติตามกระบวนการสี่ขั้นตอนเดียวกัน คุณทำขั้นตอนที่ 1 และ 3 ฝั่งเซิร์ฟเวอร์; Plaid Link จัดการขั้นตอนที่ 2 ในเบราว์เซอร์หรือแอปมือถือของผู้ใช้
ขั้นตอนที่ 1: สร้าง link_token
const response = await client.linkTokenCreate({
user: { client_user_id: 'user_123' },
client_name: 'Your App',
products: ['auth', 'transactions'],
country_codes: ['US'],
language: 'en',
});
const linkToken = response.data.link_token;
curl -X POST https://sandbox.plaid.com/link/token/create \
-H 'Content-Type: application/json' \
-d '{
"client_id": "YOUR_CLIENT_ID",
"secret": "YOUR_SANDBOX_SECRET",
"user": { "client_user_id": "user_123" },
"client_name": "Your App",
"products": ["auth", "transactions"],
"country_codes": ["US"],
"language": "en"
}'
ขั้นตอนที่ 2: เปิด Plaid Link ในไคลเอนต์
ส่ง `link_token` ไปยังส่วนหน้าของคุณและส่งไปยัง Plaid Link SDK ผู้ใช้เลือกธนาคารของตนเอง เข้าสู่ระบบ และ Plaid จะส่ง `public_token` กลับมายังฟังก์ชัน callback `onSuccess` ของคุณ
ขั้นตอนที่ 3: แลกเปลี่ยน public_token
const exchange = await client.itemPublicTokenExchange({
public_token: publicToken,
});
const accessToken = exchange.data.access_token;
const itemId = exchange.data.item_id;
จัดเก็บ `accessToken` ไว้ที่ฝั่งเซิร์ฟเวอร์ โดยผูกกับผู้ใช้ของคุณ โทเค็นนี้มีอายุการใช้งานยาวนานและเป็นสิ่งที่คุณใช้สำหรับการเรียกใช้ในอนาคตทุกครั้ง
ขั้นตอนที่ 4: เรียกใช้ endpoints ของผลิตภัณฑ์
const accounts = await client.accountsGet({ access_token: accessToken });
const balance = await client.accountsBalanceGet({ access_token: accessToken });
Endpoints ของผลิตภัณฑ์ที่คุณควรรู้
- Auth ส่งคืนหมายเลขบัญชีและหมายเลขเส้นทางสำหรับ ACH (`/auth/get`)
- Balance ส่งคืนยอดคงเหลือแบบเรียลไทม์ โดยข้ามแคช (`/accounts/balance/get`)
- Transactions ส่งคืนข้อมูลธุรกรรมที่จัดระเบียบแล้วสูงสุด 24 เดือน (`/transactions/sync`)
- Identity ส่งคืนชื่อเจ้าของบัญชี อีเมล โทรศัพท์ ที่อยู่ (`/identity/get`) หากกรณีการใช้งานของคุณคือ KYC โดยแท้จริง ให้เปรียบเทียบกับผู้ให้บริการเฉพาะทางในคู่มือ API KYC ที่ดีที่สุด ของเรา
- Investments ส่งคืนสินทรัพย์ที่ถือครองและธุรกรรมการลงทุน (`/investments/holdings/get`)
- Liabilities ส่งคืนรายละเอียดเงินกู้นักเรียน บัตรเครดิต และสินเชื่อที่อยู่อาศัย (`/liabilities/get`)
- Income ส่งคืนข้อมูลเงินเดือนผ่าน Plaid Income (`/credit/payroll_income/get`)
การทดสอบ Plaid API ด้วย Apidog
การทดสอบ Plaid แบบ end-to-end เป็นเรื่องที่ยุ่งยากเนื่องจากขั้นตอน Link เกิดขึ้นในเบราว์เซอร์ คุณยังคงต้องการวิธีที่เชื่อถือได้ในการเรียกใช้ endpoints ฝั่งเซิร์ฟเวอร์ด้วย payload ที่ถูกต้อง ดูว่าข้อผิดพลาดเกิดขึ้นได้อย่างไร และแบ่งปันคำขอที่ใช้งานได้กับเพื่อนร่วมทีม Apidog จัดการสิ่งเหล่านี้ได้ดีกว่าเครื่องมือส่วนใหญ่
นำเข้า Plaid’s OpenAPI spec เข้าสู่ Apidog แล้วคุณจะได้รับ endpoint ทุกรายการที่กำหนดค่าไว้ล่วงหน้าพร้อมประเภท, ตัวอย่าง body, และ auth headers ที่ถูกต้อง คุณสามารถสร้างชุดตัวแปรสภาพแวดล้อม sandbox (client_id, secret, access_token) และสลับไปยัง production ได้ด้วยคลิกเดียว คำขอแบบลูกโซ่ช่วยให้คุณสามารถเรียกใช้ linkTokenCreate → sandboxPublicTokenCreate → itemPublicTokenExchange → accountsGet ในโฟลว์เดียว เพื่อให้คุณสามารถตรวจสอบกระบวนการทั้งหมดได้โดยไม่ต้องใช้เบราว์เซอร์
Apidog's mock server มีประโยชน์เมื่อทีม frontend ของคุณต้องการการตอบกลับ /accounts/get ก่อนที่การรวมแบ็กเอนด์ของคุณจะเสร็จสิ้น หากคุณกำลังย้ายจากเครื่องมืออื่น คู่มือของเราเกี่ยวกับ การทดสอบ API โดยไม่ต้องใช้ Postman ในปี 2026 ครอบคลุมการย้ายข้อมูลโดยละเอียด ดาวน์โหลด Apidog และชี้ไปที่ spec ของ Plaid เพื่อเริ่มต้น
ข้อผิดพลาดทั่วไปและการจำกัดอัตรา
ข้อผิดพลาดของ Plaid จะส่งกลับมาพร้อมกับ `error_type`, `error_code` และ `error_message` ที่มนุษย์อ่านได้ จัดการสี่ข้อผิดพลาดนี้ในการผลิต:
- `INVALID_CREDENTIALS`: ผู้ใช้พิมพ์รหัสผ่านผิดที่ธนาคาร แจ้งให้พวกเขาลองอีกครั้งผ่านโหมดอัปเดต Link
- `ITEM_LOGIN_REQUIRED`: ธนาคารทำให้เซสชันไม่ถูกต้อง (เปลี่ยนรหัสผ่าน, หมุนเวียน MFA) ทริกเกอร์ Link ในโหมดอัปเดตเพื่อยืนยันตัวตนอีกครั้ง คุณจะทราบเรื่องนี้ผ่าน webhook ไม่ใช่การเรียกที่ล้มเหลว
- `RATE_LIMIT_EXCEEDED`: คุณถึงขีดจำกัดต่อ Item หรือต่อ endpoint ถอยกลับแล้วลองใหม่พร้อม jitter
- `PRODUCT_NOT_READY`: ข้อมูลธุรกรรมยังคงถูกดึงอยู่ ลองอีกครั้งหลังจาก webhook `INITIAL_UPDATE` ทำงาน
Webhooks
ส่ง URL ของ webhook เมื่อคุณสร้าง link_token และ Plaid จะ POST การอัปเดตไปยัง URL นั้น Webhook สามประเภทที่คุณไม่สามารถละเลยได้คือ SYNC_UPDATES_AVAILABLE (ธุรกรรมใหม่), ITEM: LOGIN_REQUIRED (ต้องการการยืนยันตัวตนใหม่) และ ITEM: ERROR (ข้อผิดพลาดถาวร) ตรวจสอบลายเซ็น JWT บนทุก webhook ก่อนดำเนินการ
การจำกัดอัตรา
Plaid บังคับใช้การจำกัดอัตราต่อ Item ต่อ endpoint ตัวอย่างเช่น `/accounts/balance/get` ถูกจำกัดไว้ที่ประมาณ 5 การเรียกต่อนาทีต่อ Item ในการผลิต นอกจากนี้ยังมีการจำกัดระดับไคลเอนต์โดยรวมสำหรับ endpoint ที่มีการใช้งานหนัก กฎปฏิบัติคือ: เรียกดู webhook, แคชยอดคงเหลือเป็นเวลาสองสามนาที และไม่เคยเรียกใช้ Plaid จากเส้นทางคำขอที่ผู้ใช้เข้าถึงโดยตรง
ราคา Plaid
Plaid ใช้การกำหนดราคาแบบจ่ายตามการเรียกใช้ API ในระบบ production โดยประมาณ:
- Sandbox: ฟรี, ไม่จำกัด
- Development: ฟรีสูงสุด 100 รายการ (Items)
- Production:
- Auth: ประมาณ $1.50 ต่อบัญชีที่เชื่อมโยง, ชำระครั้งเดียว
- Balance: กำหนดราคาตามการเรียกใช้
- Transactions: ค่าธรรมเนียมรายเดือนต่อรายการ (ประมาณ $0.30)
- Identity: กำหนดราคาตามการเรียกใช้
- Investments / Liabilities / Income: ค่าธรรมเนียมต่อรายการแยกต่างหาก
Plaid เจรจาการกำหนดราคาที่กำหนดเองสำหรับปริมาณที่สูงกว่าที่กำหนด ดังนั้นอัตราสาธารณะจึงเป็นจุดเริ่มต้น ตรวจสอบ หน้าผลิตภัณฑ์ของ Plaid สำหรับตัวเลขปัจจุบัน
คำถามที่พบบ่อย (FAQ)
access_token มีอายุการใช้งานนานเท่าใด?ไม่มีกำหนด จนกว่าผู้ใช้จะเพิกถอนการเข้าถึง หรือธนาคารทำให้เซสชันไม่ถูกต้อง จัดเก็บแบบเข้ารหัสและไม่ให้หมดอายุที่ฝั่งของคุณ
ฉันสามารถใช้ Plaid เพื่อยืนยันตัวตนเพียงอย่างเดียวได้หรือไม่?คุณสามารถใช้ Plaid Identity ได้ แต่หากความต้องการหลักของคุณคือ KYC คุณอาจได้รับการบริการที่ดีกว่าจากผลิตภัณฑ์การยืนยันตัวตนโดยเฉพาะ เราครอบคลุมข้อดีข้อเสียในคู่มือของเราเกี่ยวกับ วิธีการใช้ Stripe Identity API
Plaid รองรับประเทศนอกสหรัฐอเมริกาหรือไม่?ใช่ Plaid ครอบคลุมสหรัฐอเมริกา แคนาดา สหราชอาณาจักร และส่วนใหญ่ของสหภาพยุโรป การรองรับประเทศจะแตกต่างกันไปตามผลิตภัณฑ์ ตรวจสอบพารามิเตอร์รหัสประเทศในคำสั่ง /link/token/create
จะเกิดอะไรขึ้นหากผู้ใช้เปลี่ยนรหัสผ่านธนาคารของตน?รายการ (Item) จะเข้าสู่สถานะ ITEM_LOGIN_REQUIRED และคุณจะได้รับ webhook ทริกเกอร์ Plaid Link ในโหมดอัปเดต และผู้ใช้จะยืนยันตัวตนใหม่โดยไม่สูญเสีย access_token
ฉันสามารถทดสอบโฟลว์ Link โดยไม่ต้องใช้เบราว์เซอร์จริงได้หรือไม่?ได้ Endpoint /sandbox/public_token/create จะข้าม Link ไปทั้งหมดและส่งคืน public_token ที่คุณสามารถแลกเปลี่ยนได้ ใช้สำหรับ Automated Integration Tests
ฉันจะจัดการ Plaid ในการพัฒนาในเครื่องได้อย่างไร?เก็บ secret ของ sandbox ไว้ในไฟล์ .env ของคุณ และเชื่อมต่อสภาพแวดล้อมการพัฒนาของคุณกับ PlaidEnvironments.sandbox ใช้ tunneling (ngrok, Cloudflare Tunnel) เพื่อรับ webhooks ในเครื่อง
