框架整合與範例商店
Vanilla JS / Node.js 後端的最小整合範例,以及一個真的跑在 ReBate Pay 上的範例商店。
目前沒有已發佈到 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);
}
ReBate Pay Docs