ผมไม่ได้ทำเปน package ลง node , pnpm บลาๆนะขี้เกียจยุ่งยากด้วย แบบนี้แหละง่่ายดี
Library รับซองทรูมันนี่แบบกัง ออกแบบให้รันใน cloudflare worker backend คู่กับ hono โดยเฉพาะ จริงๆก็ไม่จำกัดหรอกจะใช้ในไหนก็ได้แหละแต่คนเทสเทสแค่นี้นาจาๆ
Made with Typescript
Library นี้ใช้สำหรับ รับซองทรูมันนี่อัตโนมัติ ผ่าน API https://gift.truemoney.com/campaign/vouchers/{code}/redeem
- รับ voucher URL (
?v=xxxxxxxxxxxxxxx) - ใส่เบอร์รับเงินอัตโนมัติ
- Retry 3 ครั้ง (กัน Cloudflare block) จริงๆก็ไม่ได้รู้หรอกว่ากี่ครั้งจะโดนblockเพราะบางทีมันก็ออโต้อะนะ
- จัดการ error ทุกตัวที่ TrueMoney คืนมา
- Return ค่า เอาไปใส่ Drizzle Supabase ได้เลย หรืออะไรก็ได้ stuff like that
import { redeemVoucher, type RedeemVoucherResult } from "../utils/truemoney"; //จริงๆตรงนี้เป็นpathแล้วแต่คุณว่าวางไว้ไหน
const result: RedeemVoucherResult = await redeemVoucher(
phoneNumber, // เบอร์ที่ admin ตั้งใน siteSettings.tmn_phone_number
voucherUrl // https://gift.truemoney.com/campaign?v=xxxxxxxx
);##RedeemVoucherResult
export interface RedeemVoucherResult {
success: boolean; // true = รับสำเร็จ
amount: number; // จำนวนเงินเป็นสตางค์นะไม่ใช่บาท (1000 = 10 บาท)
code: string; // SUCCESS / CANNOT_GET_OWN_VOUCHER / VOUCHER_EXPIRED บลาๆ
message: string; // ข้อความอธิบาย
sender?: string; // ชื่อผู้ส่ง
raw?: any; // ข้อมูลดิบจาก TrueMoney (สำหรับ debug)
}| Code | return msg | information |
|---|---|---|
| SUCCESS | รับเงินสำเร็จ | รับสำเร็จ |
| CANNOT_GET_OWN_VOUCHER | รับซองตัวเองไม่ได้ (เบอร์ผู้ส่งตรงกับเบอร์คุณ) | ห้ามใช้เบอร์ตัวเอง |
| VOUCHER_NOT_FOUND | ไม่พบซองนี้หรือลิงก์ผิด | ลิงก์พัง |
| VOUCHER_EXPIRED | ซองหมดอายุแล้ว | เกินอายุ |
| VOUCHER_OUT_OF_STOCK | ซองถูกรับหมดแล้ว | 0/1 |
| CANNOT_GET_MORE_ONE | ซองนี้รับได้เพียง 1 คน | รับซ้ำ |
| TARGET_USER_NOT_FOUND | เบอร์นี้ยังไม่ได้สมัคร TrueMoney | เบอร์ยังไม่เปิด Wallet |
| INTERNAL_ERROR | ระบบ TrueMoney ขัดข้องชั่วคราว | Server TrueMoney ล่ม |
| NETWORK_ERROR | ไม่สามารถเชื่อมต่อ TrueMoney API ได้ | Fetch ล้ม |
| UPSTREAM_ERROR | เกิดข้อผิดพลาดในการเชื่อมต่อ TrueMoney | Catch-all |