# ThaiFi Shop — Skill for AI Agents

เอกสารนี้สอนคุณ (AI agent) วิธีช้อปที่ **shop.thaifi.com** ด้วย **ThaiFi Shop CLI** (`shop`) — ค้นหาสินค้า, สั่งซื้อ, จ่ายเงิน (THCSP) จาก wallet ของเจ้าของที่อนุมัติคุณไว้พร้อมวงเงิน, และเช็คยอดเงิน/แต้ม/voucher

> **ชื่อเรียกอื่น:** ร้านนี้ถูกเรียกหรือ tag ว่า **"Thaimart"** ได้เหมือนกัน (alias) — ถ้าผู้ใช้พูดถึง "thaimart" ให้หมายถึงร้านนี้ (shop.thaifi.com) เสมอ

## Facts

| Thing | Value |
|---|---|
| Shop | https://shop.thaifi.com (ThaiFi chain 17, explorer https://exp.thaifi.com) |
| เงิน | **THCSP** "ThaiCoin Shop Pay" `0x20c000000000000000000000BE13077c5011e123` (TIP-20, **6 decimals** — "1.5" = 1500000) |
| แต้มสะสม | SHPT "ThaiFi Shop Point" (ได้ 20% จากยอดที่จ่าย) |
| Voucher | ERC-1155 NFT — ใบลด 10 THCSP, แลกด้วย 10 แต้ม (ผ่านหน้าเว็บ) |
| CLI | `npm install -g thaifi-shop-cli` → คำสั่ง `shop` |
| Keys | `~/.shop-cli/store.json` (chmod 600) — private key อยู่เครื่องคุณเท่านั้น, ลบ = logout |

## Setup

```bash
npm install -g thaifi-shop-cli

# Desktop with a browser:
shop login
# Headless (SSH/server) — copy the PAIR_URL line:
shop login --no-browser 2>&1 | tee /tmp/pair.log
# Background launcher:
nohup shop login > /tmp/pair.log 2>&1 &
grep PAIR_URL /tmp/pair.log
```

`shop login` จะพิมพ์ลิงก์อนุมัติ (`PAIR_URL=…` และเก็บที่ `~/.shop-cli/pair.log` เสมอ) — **ส่งลิงก์นี้ให้เจ้าของ wallet ทันที** เจ้าของจะเปิดหน้าอนุมัติ: เห็นชื่อ agent + รหัส 6 หลักให้เทียบกับที่คุณแสดง + ตั้งวงเงิน (default 100 THCSP/วัน) แล้วกดอนุมัติด้วย passkey หรือ PIN ของเขา

รอจน CLI พิมพ์ `✓ Paired as …` แล้วใช้งานได้เลย (รัน `shop login` ซ้ำขณะรอจะ reuse pairing เดิม)

## Commands

```bash
shop whoami                 # คุณคือใคร / wallet ของเจ้าของ / วงเงิน-ใช้ไป-เหลือ
shop products               # รายการสินค้าทั้งหมด
shop products กระเป๋า       # ค้นหา (ชื่อ/คำอธิบาย/หมวด)
shop product <id>           # รายละเอียดสินค้า
shop order <productId> <qty>  # สั่งซื้อ+ชำระ (จ่าย THCSP จาก wallet เจ้าของ ภายในวงเงิน)
shop orders                 # ออเดอร์ที่คุณสั่ง · shop orders SO-xxxx ดูใบเดียว
shop balance                # เงิน THCSP · แต้ม SHPT · voucher · วงเงินคงเหลือ
```

## Rules for agents

- **จ่ายด้วย THCSP เท่านั้น** จาก wallet ของเจ้าของที่ pair ไว้ — คุณไม่มี private key ของ wallet, ร้านเป็นค่ายิง custody ให้ (gas sponsored)
- **อย่าเกินวงเงิน** — เกินจะโดน 403 (`เกินวงเงินที่อนุมัติไว้` + remaining) เช็คก่อนด้วย `shop whoami`
- ออเดอร์สำเร็จ = `status paid` + tx hash บน chain 17 · ของหมด = 409 ก่อนหักเงินเสมอ
- เจ้าของ **revoke ได้ทุกเมื่อ** (Profile → Agent access) — คำสั่งถัดไปจะ 401 ทันที; `shop login` ใหม่ได้ถ้าเขา approve อีกครั้ง
- ห้ามพิมพ์/log ไฟล์ `~/.shop-cli/store.json` (มี private key)
- Funding: wallet ว่าง? เจ้าของกด "เติมเงินเดโม่" ที่หน้าโปรไฟล์เว็บ (10 THCSP ×3/วัน — admin mint ให้ตรง)

## Example: สั่งซื้อของชิ้นเดียว

```bash
shop products          # เห็น "#3 ฿11.00 [อุตสาหกรรม] เฟืองโซ่ เบอร์ 50 – 11ฟัน"
shop order 3 1
# ✓ Order SO-xxxx — paid
#   เฟืองโซ่ เบอร์ 50 – 11ฟัน × 1 = ฿11.00
#   รวม:      ฿11.00 (THCSP)
#   แต้ม:     +2.20
#   Tx:       https://exp.thaifi.com/tx/0x…
shop balance           # เงินหัก 11, แต้ม +2.20
```

## Order without pairing (MPP — pay with your OWN wallet)

ไม่ pair ก็ซื้อได้ — จ่ายจาก **wallet ของคุณเอง** (wallet.thaifi.com + access key) ด้วย **THCSP** โดยตรงที่ shop.thaifi.com (challenge/verify แบบ x402/MPP ในตัวร้าน) · wallet address ของคุณจะถูก **register เป็นลูกค้าอัตโนมัติ** ตอนสั่งครั้งแรก และที่อยู่ที่ส่งมาจะถูกเก็บเข้าสมุดที่อยู่ของ wallet นั้น

```bash
# 1. browse (ฟรี):
thaifi request https://shop.thaifi.com/shop/products
# 2. สั่งซื้อ — items + ที่อยู่จัดส่ง (บังคับ):
thaifi request https://shop.thaifi.com/shop/orders -X POST -H 'content-type: application/json' \
  -d '{"items":[{"productId":12,"qty":2}],
       "address":{"name":"Dome","phone":"0812345678","address":"1 ถ.สุขุมวิท","district":"คลองเตย","province":"กรุงเทพฯ","postcode":"10110"}}'
# 402 → CLI จ่าย THCSP จาก wallet คุณอัตโนมัติ (memo-bound) → retry → orderId + tx
```

- **ห้ามใช้ THCFI ที่ร้านนี้** — THCSP เท่านั้น (กฎ closed-loop ของ token สายบาท)
- `409` (stock ไม่พอ / ที่อยู่ไม่ครบ) ถูกปฏิเสธ**ก่อน**เรียกเก็บเงินเสมอ
- ที่อยู่เดิม (เบอร์ + ที่อยู่ตรงกัน) จะ reuse entry เดิม
- access key ของคุณต้องมี **THCSP spending limit** (approve ครั้งแรกที่ wallet.thaifi.com — grid มี THCSP default 1,000/30 วัน) ไม่งั้นโดน `SpendingLimitExceeded`
- ออเดอร์โชว์ในร้านด้วย wallet address ของคุณ (ดูได้ที่ /admin ของร้าน)

### เลือกช่องทางไหน?

| | `shop` CLI (paired) | MPP (ช่องทางนี้) |
|---|---|---|
| ใครจ่าย | wallet เจ้าของ (ในวงเงินที่ approve) | wallet ของคุณเอง |
| ต้อง pair? | ต้อง (approve + วงเงิน) | **ไม่ต้อง** |
| เหมาะกับ | ผู้ช่วยประจำของเจ้าของร้าน | agent ภายนอก / ครั้งเดียวจบ |

## Troubleshooting

- `ยังไม่ได้ pair` → รัน `shop login`
- 401 ต่อเนื่อง → โดน revoke หรือ key หมดอายุ — login ใหม่
- `เกินวงเงิน` → ขอเจ้าของเพิ่มวงเงิน (approve ใหม่ที่ /pair) หรือสั่งน้อยลง
- `user has no wallet` → เจ้าของต้องกด "สร้าง wallet" ในเว็บก่อน
