ๅบๆผ W3C Verifiable Credentials ๆจๆบ็ๅปไธญๅฟๅๆธไฝๅชๆ ๅธ็ณป็ตฑ
ไฟกไปปๅธ้ (TrustCoupon) ๆฏไธๅๅบๆผๅฐ็ฃๆธไฝ็ผๅฑ้จ (MODA) ๆธไฝๆ่ญ็ฎๅคพๆฒ็็ฐๅข้็ผ็ๅปไธญๅฟๅๅชๆ ๅธ็ฎก็็ณป็ตฑใๆฌ็ณป็ตฑๅฏฆ็พไบ W3C Verifiable Credentials (VC) ๅ Decentralized Identifiers (DID) ๆจๆบ๏ผๆไพๅฎๅ จใ้ๆใๅฏ้ฉ่ญ็ๆธไฝๅชๆ ๅธ็ผ่ก่้ฉ่ญๆๅใ
- ๅปไธญๅฟๅ: ๆถ่ฒป่ ๅฎๅ จๆๆง่ชๅทฑ็ๅชๆ ๅธ่ณๆใ
- ้ข็ท้ฉ่ญ: ๅๅฎถๅฏๅจ็ก็ถฒ่ทฏ็ฐๅขไธ้ฉ่ญๆ่ญๆๆๆงใ
- ๅฎๅ จๅฏ้ : ๅบๆผๆฟๅบๆธไฝๅบ็ค่จญๆฝ,็ขบไฟๆ่ญ็ๅฏฆๆงใ
ๆฌๅฐๆกๅ่ใ2025 ๆธไฝ็ผๅฑ้จๆธไฝๆ่ญๅ ดๆฏๅตๆฐ่ณฝใ,ๅฑ็คบๆธไฝๆ่ญๅจๅๆฅญๅ ดๆฏ็ๅฏฆ้ๆ็จใ
- ้ถๅฎๆฅญ: ๅๅฎถ็ผ่กๆๅนๅธใๆๅกๅชๆ ใ
- ้ค้ฃฒๆฅญ: ้คๅปณๆๆฃๅธใๆปฟ้กๅชๆ ใ
- ้ปๅๅนณๅฐ: ็ตฑไธๅชๆ ๅธ็ฎก็,่ทจๅๅฎถไฝฟ็จใ
- ไผๆฅญ็ฆๅฉ: ๅกๅทฅๅชๆ ๅธใไผๆฅญ็ฆฎๅธใ
- ไบๅๅผๆๆฃ้้กๆฑบๅฎๆฉๅถใ
- 100-900 ๅ ้จๆฉๆฝ้ธใ
- ่ฆ่ฆบๅๆ่ฝๅ็ซๆๆใ
- ๅขๅ ็ผๅธ้็จ่ถฃๅณๆงใ
- ES256 ๆธไฝ็ฐฝ็ซ ใ
- NIST P-256 ๆฉขๅๆฒ็ทๅ ๅฏใ
- SD-JWT ้ธๆๆงๆญ้ฒใ
- Status List ๆค้ทๆฉๅถใ
- Web ็ฎก็ไป้ข (ๅๅฎถ็ซฏ)ใ
- ๆธไฝๆ่ญ็ฎๅคพ APP (ๆถ่ฒป่ ็ซฏ)ใ
- ้ฟๆๅผ่จญ่จ,ๆฏๆด่กๅ่ฃ็ฝฎใ
- ็ด่ฆบๅๆไฝไป้ขใ
- ๅณๆ QR Code ็ข็ใ
- ไธๆญฅ้ฉ้ฉ่ญๆต็จใ
- ่ฉณ็ดฐไบคๆ่จ้ใ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TrustCoupon ็ณป็ตฑๆถๆง โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ ๅๅฎถๅ็ซฏ โ โ ้ฉ่ญ็ซฏๅ็ซฏ โ โ
โ โ (React) โ โ (React) โ โ
โ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โ
โ โ โ โ
โ โ Frontend Layer โ โ
โ โโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโ โ
โ โ โ โ
โ โ Backend Layer โ โ
โ โ โ โ
โ โโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโ โ
โ โ API Server (Golang/Gin) โ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โ
โ โ โ Issue API โ โ Verify API โ โ โ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โโโโโโโโผโโโโโโโ โโโโโโโโผโโโโโโโ โ
โ โ SQLite โ โ MODA APIs โ โ
โ โ Database โ โ โ โ
โ โโโโโโโโโโโโโโโ โ - Issuer โ โ
โ โ - Verifier โ โ
โ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- ่ช่จ: Go 1.21+
- ๆกๆถ: Gin Web Framework
- ่ณๆๅบซ: SQLite3
- HTTP ๅฎขๆถ็ซฏ: net/http
- UUID ็ๆ: google/uuid
- ๆกๆถ: React 18.2+
- UI ็ตไปถ: Ant Design 5.x
- HTTP ๅฎขๆถ็ซฏ: Axios
- ๆฅๆ่็: Day.js
- ๅ็คบ: Ant Design Icons
- MODA ็ผ่ก็ซฏ API: https://issuer-sandbox.wallet.gov.tw
- MODA ้ฉ่ญ็ซฏ API: https://verifier-sandbox.wallet.gov.tw
ๅฟ
่ฆ่ณๆบ:
- ็ผ่ก็ซฏๆฒ็ๅธณ่
- ้ฉ่ญ็ซฏๆฒ็ๅธณ่
- Access Token (็ผ่ก็ซฏ)
- Access Token (้ฉ่ญ็ซฏ)
- VC ๆจกๆฟ (ๅทฒ็ผๅธ็ๆ
)
- VP ๆจกๆฟ (ๅทฒ็ผๅธ็ๆ
)twdiw-demo-trustcoupon/
โ
โโโ backend/ # ๅพ็ซฏ็จๅผ็ขผ
โ โโโ main.go # ไธป็จๅผๅ
ฅๅฃ
โ โโโ go.mod # Go ๆจก็ตๅฎ็พฉ
โ โโโ go.sum # ไพ่ณด็ๆฌ้ๅฎ
โ โ
โ โโโ config/ # ้
็ฝฎ็ฎก็
โ โ โโโ config.go # ็ณป็ตฑ้
็ฝฎ (API Token, VC/VP ่จญๅฎ)
โ โ
โ โโโ models/ # ่ณๆๆจกๅ
โ โ โโโ transaction.go # ไบคๆ่จ้ๆจกๅ
โ โ โโโ coupon.go # ๅชๆ ๅธๆจกๅ
โ โ โโโ verification.go # ้ฉ่ญ่จ้ๆจกๅ
โ โ โโโ request.go # API ่ซๆฑ็ตๆง
โ โ โโโ response.go # API ๅๆ็ตๆง
โ โ
โ โโโ handlers/ # HTTP ่็ๅจ
โ โ โโโ issue.go # ็ผ่ก็ซฏ่็ๅจ
โ โ โโโ verify.go # ้ฉ่ญ็ซฏ่็ๅจ
โ โ
โ โโโ services/ # ๆฅญๅ้่ผฏๆๅ
โ โ โโโ moda_issuer.go # MODA ็ผ่ก็ซฏ API ๆๅ
โ โ โโโ moda_verifier.go # MODA ้ฉ่ญ็ซฏ API ๆๅ
โ โ
โ โโโ database/ # ่ณๆๅบซ็ฎก็
โ โ โโโ db.go # SQLite ๅๅงๅ่็ฎก็
โ โ
โ โโโ trustcoupon.db # SQLite ่ณๆๅบซๆชๆก (ๅท่กๅพ็ๆ)
โ
โโโ frontend/ # ๅ็ซฏ็จๅผ็ขผ
โ โโโ package.json # NPM ไพ่ณดๅฎ็พฉ
โ โโโ package-lock.json # ไพ่ณด็ๆฌ้ๅฎ
โ โ
โ โโโ public/ # ้ๆ
่ณๆบ
โ โ โโโ index.html # HTML ๅ
ฅๅฃ
โ โ โโโ favicon.ico # ็ถฒ็ซๅ็คบ
โ โ โโโ manifest.json # PWA ้
็ฝฎ
โ โ
โ โโโ src/ # ๅๅง็ขผ
โ โโโ index.js # React ๅ
ฅๅฃ
โ โโโ index.css # ๅ
จๅๆจฃๅผ
โ โโโ App.jsx # ไธปๆ็จ็ตไปถ
โ โโโ App.css # ๆ็จๆจฃๅผ
โ โ
โ โโโ components/ # React ็ตไปถ
โ โ โโโ IssuePanel.jsx # ็ผ่กๅชๆ ๅธ้ขๆฟ
โ โ โโโ VerifyPanel.jsx # ้ฉ่ญๅชๆ ๅธ้ขๆฟ
โ โ โโโ SpinWheel.jsx # ๅนธ้่ผช็ค็ตไปถ
โ โ โโโ SpinWheel.css # ่ผช็คๆจฃๅผ
โ โ
โ โโโ services/ # API ๆๅ
โ โโโ api.js # ๅพ็ซฏ API ๅฐ่ฃ
โ
โโโ LICENSE # ๆๆฌๆขๆฌพ
โโโ README.md # ๅฐๆก่ชชๆ (ๆฌๆไปถ)
git clone https://github.com/your-username/trustcoupon.git
cd trustcouponcd backend
go mod download็ทจ่ผฏ config/config.go:
const (
// VC ๆจกๆฟ่ณ่จ (ๅพ MODA ๆฒ็ๅๅพ)
VCId = "666971" // ๆจ็ VC ๆจกๆฟๅบ่
VCUid = "00000000_00000000_trustcoupon_discount" // ๆจ็ VC ๆจกๆฟไปฃ็ขผ
// VP ้ฉ่ญ่ณ่จ (ๅพ MODA ๆฒ็ๅๅพ)
VPRef = "00000000_00000000_trustcoupon_discount" // ๆจ็ VP ๅ่ไปฃ็ขผ
)
// Access Tokens (ๅพ่จปๅ้ตไปถๅๅพ)
var IssuerAccessToken = "your_issuer_token_here"
var VerifierAccessToken = "your_verifier_token_here"go run main.gocd frontend
npm installnpm start็่ฆฝๅจๆ่ชๅ้ๅ http://localhost:3000
-
้ฒๅ ฅ็ผ่ก้ขๆฟ
- ้ปๆใ๐ค ็ผ่กๅชๆ ๅธใ้ ็ฑค
-
ๅกซๅฏซๆถ่ฒป่ ่ณ่จ
- ๅงๅ: ่ผธๅ ฅๆถ่ฒป่ ไธญๆๅงๅ
- ๆๆฃ้้ก: ๆๅ่ผธๅ ฅๆไฝฟ็จๅนธ้่ผช็ค
- ๅฐๆๆฅๆ: ้ธๆๅชๆ ๅธๆๆๆ้
-
ไฝฟ็จๅนธ้่ผช็ค (ๅฏ้ธ)
- ้ปๆใๅนธ้่ผช็คใๆ้
- ็ญๅพ ๆ่ฝ็ตๆ
- ็ณป็ตฑ่ชๅๅกซๅ ฅ้จๆฉ้้ก
- ๅฏๆๅ่ชฟๆด้้ก
-
็ข็ QR Code
- ้ปๆใ็ข็ QR Codeใ
- ็ณป็ตฑ้กฏ็คบ QR Code ๅ Deep Link
- ๆถ่ฒป่ ๆๆ QR Code ไธ่ผๆ่ญ
-
็ข็้ฉ่ญ QR Code
- ๅๆๅฐใโ ้ฉ่ญๅชๆ ๅธใ้ ็ฑค
- ้ปๆใ็ข็้ฉ่ญ QR Codeใ
- ็ณป็ตฑ็ข็้ฉ่ญ็จ QR Code
-
ๆถ่ฒป่ ๆๆ
- ๅบ็คบ QR Code ็ตฆๆถ่ฒป่
- ๆถ่ฒป่ ไฝฟ็จๆธไฝๆ่ญ็ฎๅคพ APP ๆๆ
- ๆถ่ฒป่ ้ธๆ่ฆๆไพ็ๆ่ญไธฆไธๅณ
-
่ผธๅ ฅๆถ่ฒป้้ก
- ่ผธๅ ฅๆฌๆฌกๆถ่ฒป้้ก (้ ่จญ 2000 ๅ )
- ้ปๆใ้ฉ่ญไธฆ่จ็ฎๆๆฃใ
-
ๆฅ็็ตๆ
- ็ณป็ตฑ้กฏ็คบ:
- ๆถ่ฒป่ ๅงๅ
- ๆๆฃ้้ก
- ๅฐๆๆฅๆ
- ๅๅน
- ๅฏฆไป้้ก (ๅคงๅญ้กฏ็คบ)
- ็ณป็ตฑ้กฏ็คบ:
-
้ ๅๅชๆ ๅธ
- ้ๅๆธไฝๆ่ญ็ฎๅคพ APP
- ๆๆๅๅฎถๆไพ็็ผ่ก QR Code
- ็ขบ่ชๅชๆ ๅธ่ณ่จ
- ไธ่ผๅฐ็ฎๅคพ
-
ไฝฟ็จๅชๆ ๅธ
- ๅ็ฅๅๅฎถ่ฆไฝฟ็จๅชๆ ๅธ
- ๆๆๅๅฎถๆไพ็้ฉ่ญ QR Code
- ้ธๆ่ฆไฝฟ็จ็ๅชๆ ๅธ
- ็ขบ่ชๆไพ่ณๆ
-
ๅฎๆไบคๆ
- ๅๅฎถ้กฏ็คบๆๆฃๅพ้้ก
- ๆฏไปๅฏฆไป้้ก
- ไบคๆๅฎๆ