框架整合與範例商店

Vanilla JS / Node.js 後端的最小整合範例,以及一個真的跑在 ReBate Pay 上的範例商店。

檢視 Markdown
目前沒有已發佈到 npm 的 @rebatepay/node 或任何語言的官方套件。下面的 Node.js 範例用原生 fetch,不需要安裝任何 ReBate Pay 專屬套件;如果你在這個 repo 內開發,也可以用內部的 TypeScript client(見下方)。

Vanilla JS / fetch(任何後端都適用)

const BASE = process.env.REBATE_PAY_BASE_URL;
const KEY = process.env.REBATE_PAY_API_KEY;

async function rebatePay(method, path, body) {
  const res = await fetch(`${BASE}/api${path}`, {
    method,
    headers: {
      Authorization: `Bearer ${KEY}`,
      "Content-Type": "application/json",
      ...(body ? { "Idempotency-Key": crypto.randomUUID() } : {}),
    },
    body: body ? JSON.stringify(body) : undefined,
  });
  const json = await res.json();
  if (json.error) throw new Error(`${json.error.code}: ${json.error.message}`);
  return json.data;
}

const link = await rebatePay("POST", "/PaymentLink", { name: "Order #1", priceId: "price_..." });

內部 TypeScript client(source-only,尚未發佈)

這個 repo 裡有一個完整、真的可用的 TypeScript client(packages/rebatepay-sdk):帶自動 Idempotency-Key、安全重試(只重試 GET 或本來就冪等的寫入,unknown 付款絕不自動重試)、游標分頁 paginate(),還有 verifyWebhookSignature()。它是原始碼形式,還沒發佈成 npm 套件,只能用相對路徑匯入。

import { RebatePay, verifyWebhookSignature } from "../packages/rebatepay-sdk/src/index";

const client = new RebatePay({ apiKey: process.env.REBATE_PAY_API_KEY!, baseUrl: process.env.REBATE_PAY_BASE_URL! });

const link = await client.createPaymentLink({ name: "Order #1", priceId: "price_..." });

for await (const product of client.paginate((cursor) => client.listProducts({ startingAfter: cursor }))) {
  console.log(product.id);
}