文件目錄

Developer Hub/整合 Playground

Partner Event API · zero-production-impact

先驗證參考請求,再驗收你的後端

本頁先用瀏覽器完成兩個零汙染參考測試:步驟 1 檢查憑證與請求格式,步驟 2 檢查 mrt_ 測試通道。兩步通過後,下游工程師仍要從自己的後端重跑一次,才代表實際程式碼完成。

你要呼叫的測試 API

瀏覽器 Playground 與下游後端使用同一個正式 endpoint。測試請求必須帶 test: true 與對接包中的 mrt_;每次 API 回應都是該次測試的結果,但瀏覽器參考測試與下游後端驗收必須分開判讀。全程不需要登入租戶後台。

POST
https://api.meetroas.com/v1/events
僅驗籤與 schema
https://api.meetroas.com/v1/events/validate
Node.js 後端測試
// 在下游後端執行;三個值都由環境變數注入
const crypto = require("node:crypto");

async function main() {
  const endpoint = "https://api.meetroas.com/v1/events";
  const mrClickId = process.env.MEETROAS_TEST_ATTRIBUTION || "";
  if (!/^mrt_[A-Za-z0-9_-]{32}$/.test(mrClickId)) throw new Error("MEETROAS_TEST_ATTRIBUTION must be the mrt_ value from this Key's package");
  const body = JSON.stringify({
    event_id: "partner-smoke-" + Date.now(),
    mr_click_id: mrClickId,
    event: "account_registration",
    occurred_at: new Date().toISOString(),
    test: true
  });
  const timestamp = String(Math.floor(Date.now() / 1000));
  const signature = "v1=" + crypto.createHmac("sha256", process.env.MEETROAS_SECRET)
    .update(timestamp + "." + body).digest("hex");
  const response = await fetch(endpoint, { method: "POST", headers: {
    "content-type": "application/json",
    "x-meetroas-key": process.env.MEETROAS_KEY_ID,
    "x-meetroas-timestamp": timestamp,
    "x-meetroas-signature": signature
  }, body });
  const result = await response.json();
  console.log(response.status, result);
  if (![200, 202].includes(response.status) || result.integration_status !== "passed" || result.delivery_readiness !== "not_applicable") process.exit(1);
}

main().catch((error) => { console.error(error); process.exit(1); });

驗收狀態

1憑證與請求格式尚未執行
2Test Click ID 與測試寫入待完成步驟 1

1. 先驗證憑證與請求格式

貼上對接包中的 Key ID 與 Secret,並只保留目標平台真實支援的事件。瀏覽器會傳送參考請求,檢查 HMAC、schema 與安全拒絕行為;全部通過才會開放步驟 2。這個步驟不會寫入測試或正式事件。

資料只保留在這個分頁的記憶體;Secret 不會寫入網址、本機儲存、cookie 或畫面結果。

目標平台實際支援的事件

取消不支援的事件;不需要為了 MeetROAS 傳送不存在的業務事實。

2. 再驗證 Test Click ID 與測試寫入

從對接包的 15 天 Test URL 開啟本頁時,Test Click ID 會自動填入。步驟 1 通過後,這顆按鈕才會開放;它會由這個瀏覽器傳送測試事件,驗證 mrt_ 歸屬、寫入與冪等,不會執行下游自己的程式碼。

mrt_ 只認同一組 Key,且不屬於任何客戶 App/Campaign。測試只寫入獨立 Test Runs,不會建立正式事件、postback、Performance 或用量。
尚未開放請先完成步驟 1;通過後按鈕會轉為綠色。

最後:從你的後端完成真正驗收

Playground 兩步通過只證明對接包與 MeetROAS 測試通道可用。請複製上方 Node.js 範例,由下游後端讀取同一組 Key、Secret 與 mrt_,傳送 test: true 請求;收到 HTTP 200/202、integration_status=passed 與 delivery_readiness=not_applicable 後,工程師端才算完成。全程不需要登入租戶後台。

如何判讀

  • 步驟 1 通過 — 這組憑證可以正確簽章,schema、事件語義與安全拒絕行為符合契約。
  • 步驟 2 通過 — 瀏覽器參考請求可用 mrt_ 寫入 Test Runs,且重複與衝突語義正確;這不代表下游程式碼已經執行。
  • 下游後端通過 — 同樣結果由下游自己的後端產生,才代表工程師完成一次性帳號對接。正式 Campaign、Goal Binding 與投手來源設定另行處理。

Playground 只用於整合驗證。正式環境必須由後端 secrets manager 讀取憑證、儲存真實投放產生的 mrc_,並移除 test 欄位。