@borga/节点
官方节点客户端 博尔加 API:为冰岛市场支付卡片、银行发票(krafa)、订阅和计费.
安装
npm install @borga/node
要求节点.js 18或更新.
使用量
以密钥 API 认证( E)sk_test_… 或者说 sk_live_…从Borga仪表板下 开发者。密钥可以识别您的商家,所以不需要其他标题.
import { Borga } from "@borga/node";
const borga = new Borga({ apiKey: process.env.BORGA_SECRET_KEY! });
// Create a hosted checkout session and redirect the payer to session.url
const session = await borga.paymentSessions.create({
amount: 24180, // whole krónur: 24.180 kr.
currency: "ISK",
return_url: "https://example.is/order/complete",
cancel_url: "https://example.is/cart",
external_reference: "order_1042",
});
通过Borga OAuth 的赠款为商人代理的应用程序 new Borga({ accessToken })通过一份证书,而不是两份证书; defaultHeaders 在每个请求中添加信头但无法设置 Authorization. 赠款的范围决定哪些要求成功.
嵌入式检出
const session = await borga.paymentSessions.create({
amount: 24180,
currency: "ISK",
mode: "embedded",
origin: "https://example.is",
});
// Hand session.id and session.client_secret to the browser and open the
// modal with borga.js: new Borga(pk).checkout.open({ sessionId, clientSecret })
用法事件(计费)
await borga.usageEvents.create({
event_name: "api_call",
customer: "cus_…",
idempotency_key: "req_…",
metadata: { units: 1 },
});
网络呼号
import { verifyWebhookSignature } from "@borga/node";
const event = verifyWebhookSignature({
body: rawRequestBody, // the raw string or Buffer, not the parsed JSON
signature: req.headers["borga-signature"],
secret: process.env.BORGA_WEBHOOK_SECRET!,
});
switch (event.type) {
case "payment.succeeded":
// event.data is narrowed to the Payment object
break;
case "invoice.payment_failed":
// event.data.attempt, event.data.reason
break;
}
行为
- POST 请求获得自动生成
Idempotency-Key所以复试是安全的。 自己通过{ idempotencyKey }使各种过程的重复也变得安全. - 5xx,429和网络出错被以指数回放(默认为3回放)来重试.
- API 出错
BorgaError与type, (中文(简体) ),code, (中文(简体) ),status, (中文(简体) ),param, (中文(简体) ),requestId和被剖开的身体.
文档
指南和 API 的完整参考文件在 维基文库中相关的原始文献: 维基语录链接:名人名言 - 分类。所有代码样本都会对照此软件包进行打字检查.