DEPLOY GUIDE部署與 ECPay 申請操作說明

這個資料夾可以直接上傳到 Cloudflare Pages。以下照著點就能完成上線與綠界(ECPay)商店申請。

① 先確認網域 ② 上傳 Cloudflare Pages ③ 綁定子網域 ③-B 目前 DNS 缺什麼 ④ ECPay 申請要填什麼 ⑤ 要改哪裡 ⑥ 上線檢查清單
先看這段,很重要。
你的網域是 dandigame.com.de。實際查證結果:

✅ 網域已註冊成功,狀態 connect(正常)。
✅ DNS 已交給 Cloudflare 代管:journey.ns.cloudflare.com/maxim.ns.cloudflare.com。
⚠️ 但 Cloudflare 裡目前沒有任何 DNS 記錄:dandigame.com.de 查得到(NOERROR)卻沒有 A 記錄,game.dandigame.com.de 是 NXDOMAIN(不存在)。

關於 .com.de 這個後綴:它是 CentralNic 營運的私人二級網域,不是德國官方 .de(DENIC)發的。它真實可註冊、可正常解析、可申請憑證,但沒有官方地位,部分較嚴格的服務(例如某些銀行、政府網站、部分企業信箱驗證)可能不認可。

👉 因此本包與下文全部採用 dandigame.com.de,子網域用 game.dandigame.com.de。
若你買的其實是別的網域,只要照 ⑤ 要改哪裡 改 2 個檔案即可。

① 先確認網域(30 秒)

確認註冊商後台顯示的網域 登入你買網域的網站(Namecheap/GoDaddy/Cloudflare Registrar 等),看「My Domains」列的完整字串。記下它到底是 .com.de 還是別的。
確認 DNS 已經交給 Cloudflare 到 Cloudflare 後台 → Websites,看清單裡有沒有 dandigame.com.de。
有 → 直接跳到 ②。
沒有 → 按 + Add a site,輸入網域,選 Free 方案,它會給你兩組 nameserver,回註冊商後台把 NS 改成那兩組,等 5 分鐘~24 小時生效。

② 上傳到 Cloudflare Pages

登入 Cloudflare 後台 開啟 https://dash.cloudflare.com,選你的帳號。
進入 Workers & Pages 左側選單點 Workers & Pages(舊版介面叫 Workers & Pages/Pages)。
按 Create 右上角藍色按鈕 Create → 選上面的分頁 Pages → 點 Upload assets。
看到三個選項(Connect to Git / Upload assets / …)時,選 Upload assets,不要選 Connect to Git——本包沒有 Git repo,直接傳資料夾最快。
建立專案 專案名稱填 shenmo-jiugongzhan(或你想要的英文名,之後網址會是 專案名.pages.dev)→ 按 Create project。
拖入資料夾 把解壓後的 shenmo-jiugongzhan-pages 資料夾整個拖進虛線框,或按 select from computer 選資料夾。
確認清單顯示 約 150 個檔案(含 index.html、game.js、art/、audio/、images/、6 個服務頁)。
部署 按 Deploy site,等 30–90 秒出現 Success!。
此時會給你一個 https://shenmo-jiugongzhan.pages.dev 網址,先點開確認遊戲能玩。
為什麼不是「連 Git」?連 Git 適合有原始碼版本控制的情況。你這包是成品靜態檔,Upload assets 每次更新都只要重新拖資料夾,對「改版 → 上線」的流程更直接。

③ 綁定子網域 game.dandigame.com.de

進到剛建好的專案 Workers & Pages → 點專案名稱 shenmo-jiugongzhan。
切到 Custom domains 分頁 上方分頁列點 Custom domains。
新增網域 按 Set up a custom domain,輸入:
game.dandigame.com.de
按 Continue。
確認 CNAME 因為 dandigame.com.de 已經在 Cloudflare,它會自動幫你建立一筆
game → CNAME → shenmo-jiugongzhan.pages.dev(Proxied 橘雲)
直接按 Activate domain。
等待生效 通常 1–5 分鐘,狀態從 Initializing 變成 Active,憑證會自動簽發(免費)。
完成後打開 https://game.dandigame.com.de 應該直接進遊戲主頁。
若 Custom domains 說「zone not found」:代表 dandigame.com.de 這個 zone 不在你目前這個 Cloudflare 帳號裡。解法有兩種:
(a) 先把 zone 加進同一個帳號(Add a site,改 nameserver);
(b) 先不要綁自訂網域,用 shenmo-jiugongzhan.pages.dev 上線,之後再綁。

③-B 目前 DNS 到底缺什麼(實際查證結果)

我用 dig 對 1.1.1.1 實查,結果如下:

查詢實際結果意義
NS dandigame.com.dejourney.ns.cloudflare.com
maxim.ns.cloudflare.com
✅ 已交給 Cloudflare 代管
SOA dandigame.com.dejourney.ns.cloudflare.com. dns.cloudflare.com. …✅ zone 存在且生效
A dandigame.com.de(空)❌ 沒有 A 記錄
A game.dandigame.com.de(空)❌ 子網域不存在
game.dandigame.com.de 狀態NXDOMAIN❌ 這個名字在 DNS 裡根本不存在
dandigame.com.de 狀態NOERROR(但無 A)⚠️ 名字存在,但沒有指向任何主機
HTTP / HTTPS 連線000(連不上)❌ 無主機可連
結論:卡在「DNS 沒有任何記錄」這一關。不是網域沒註冊、不是 NS 沒生效、也不是憑證問題——是 Cloudflare 的 DNS 表是空的,所以瀏覽器查不到要連去哪台主機。

要在 Cloudflare 新增的記錄(照抄)

Cloudflare 後台 → 選 dandigame.com.de → 左側 DNS → Records → Add record:

TypeNameContent / TargetProxyTTL
CNAMEgameshenmo-jiugongzhan.pages.dev🟠 ProxiedAuto
CNAMEwwwshenmo-jiugongzhan.pages.dev🟠 ProxiedAuto
CNAME@shenmo-jiugongzhan.pages.dev🟠 ProxiedAuto
為什麼是 CNAME 不是 A?Cloudflare Pages 的位址會變,用 CNAME 指到 *.pages.dev 才不會哪天 IP 換了就斷。
Proxy 一定要開(橘雲),這樣 Cloudflare 才會自動幫你簽免費的邊緣憑證(Universal SSL),HTTPS 才會通。
若 Pages 專案名稱不是 shenmo-jiugongzhan,把上面三處 shenmo-jiugongzhan.pages.dev 換成你實際的 專案名.pages.dev。

憑證怎麼開

確認 SSL/TLS 模式是 Full Cloudflare → 左側 SSL/TLS → Overview → 選 Full(不要選 Flexible,會無限重導)。
確認 Universal SSL 已啟用 SSL/TLS → Edge Certificates → 看 Universal SSL 是否為 Active。新加入的 zone 通常 15 分鐘~24 小時內自動簽好。
開啟 Always Use HTTPS 同一頁往下找 Always Use HTTPS → 開關切到 On。
⚠️ 重要:static.teamily.ai 不能拿來綁自訂網域。
我實測對 static.teamily.ai 送 Host: game.dandigame.com.de,回應是 403(BunnyCDN 的 unconfigured 頁面)。也就是說目前放遊戲的那台靜態主機只認自己的網域,不支援自訂網域綁定。

👉 所以要把遊戲放上 game.dandigame.com.de,必須先上傳到 Cloudflare Pages(見 ②),再把網域綁到 Pages 專案(見 ③)。不能直接把 DNS 指到 static.teamily.ai。

④ ECPay 綠界申請時要填什麼

綠界「特約商店」申請表會問網站相關欄位,照下表填即可(網址請用你最後綁好的那個):

欄位要填的內容
網站名稱神魔九宮戰
網站網址https://game.dandigame.com.de
遊戲介紹頁https://game.dandigame.com.de/about.html
商品/方案頁https://game.dandigame.com.de/pricing.html
退款說明頁https://game.dandigame.com.de/refund.html
聯絡方式頁https://game.dandigame.com.de/contact.html
服務條款頁https://game.dandigame.com.de/terms.html
隱私權政策頁https://game.dandigame.com.de/privacy.html
商品類型線上遊戲/數位內容(虛擬點數「靈石」)
交易幣別新台幣 TWD
客服信箱你 contact.html 裡填的那個
客服電話你的聯絡電話
營業地址你的營業地址
綠界審核通常會自己點這幾頁來看:首頁能不能開、有沒有明顯的價格、有沒有退款政策、有沒有客服聯絡方式、有沒有服務條款與隱私權政策。
本包首頁底部已放一排服務連結(遊戲介紹 · 儲值方案 · 退款說明 · 聯絡方式 · 服務條款 · 隱私權政策),每一頁都有共用導覽列可以互相跳轉。

⑤ 要改哪裡(只有 3 個地方)

1. 網域字串(若你買的不是 dandigame.com.de)

只在兩個檔案出現,全域取代即可:

檔案內容
contact.html「營運者資訊」表格裡的 網站網址 那一列
sitemap.xml全部 <loc> 網址

其他頁面全部使用相對連結(about.html 這種),換網域不用改。

2. 營運者資料(必填,綠界會核對)

以下字串出現在 每一頁的頁尾 與 contact.html/terms.html/privacy.html/refund.html,把【】內容換成真實資料:

搜尋這個字串換成
【請填寫公司/個人名稱】你的公司名稱或個人姓名
【請填寫統一編號,個人免填】/【請填寫】統一編號
【請填寫營業地址】營業地址
【請填寫客服信箱,例如 support@yourdomain.com】客服信箱
【請填寫客服信箱】客服信箱
【請填寫地方法院】管轄地方法院
不想一頁一頁改,可以直接用編輯器「檔案總管 → 資料夾上按右鍵 → 在檔案中尋找取代」,範圍選這個資料夾,一次全改。

3. 儲值方案價格(pricing.html)

pricing.html 的價格表目前是範例(NT$150/300/500/900/999)。請改成你實際要在綠界開的方案,並且要和遊戲內「儲值」頁的方案一致,否則審核會認為前後不符。

⑥ 上線檢查清單

⑦ 之後要更新版本怎麼辦

改檔案在本機資料夾改好 index.html/game.js 等。
重新上傳Cloudflare → 該專案 → Deployments 分頁 → 右上 Create new deployment → Upload assets → 拖入整個資料夾 → Deploy。
不用重綁網域自訂網域會自動跟著最新一次部署,舊版本仍可在 Deployments 裡一鍵回滾。

⑦ 後端部署與綠界金流設定

本包已附後端(server/),並已內建 ECPay 綠界金流 SDK(ecpay_aio_nodejs)。後端負責:好友邀請、好友切磋、觀戰、對局回放、檢舉證據上傳、訂單與綠界扣款。

Cloudflare Pages 只能放靜態檔,不能跑 Node。
所以 server/ 要另外部署到一台有 Node 18+ 的主機(VPS、Render、Railway、Fly.io 都可以)。

1. 啟動後端

cd server
npm install

ADMIN_KEY=你的後台密碼 \
ECPAY_MERCHANT_ID=你的商店代號 \
ECPAY_HASH_KEY=你的HashKey \
ECPAY_HASH_IV=你的HashIV \
ECPAY_MODE=stage \
PORT=8787 npm start

2. 綠界後台要填的兩個網址

綠界欄位填入
ReturnURL(伺服器端付款通知)https://你的後端網域/api/ecpay/return
OrderResultURL(付款完成導回)https://你的後端網域/api/ecpay/result
ClientBackURL(使用者按返回)https://game.dandigame.com.de/

※ ReturnURL 必須是公開的 HTTPS 網址,綠界從外網打進來;localhost 收不到通知。

3. 前端要改哪個 API 位址

在 index.html 的 <head> 找到這一行,把網址改成你的後端:

<script>window.XM_API = "https://api.dandigame.com.de";</script>

留空 = 同源模式(前端與後端同網域時自動生效)。也可用網址參數 ?api=https://… 或 localStorage xm_api_base_v43。

4. 測試環境 vs 正式環境

測試正式
ECPAY_MODEstageprod
金流主機payment-stage.ecpay.com.twpayment.ecpay.com.tw
商店代號2000132(綠界公測)你自己的
測試卡號4311-9522-2222-2222真實卡號

⑧ 這包沒有附什麼(誠實說明)

進入遊戲 看儲值方案