English
文件目录

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 字段。