关于 abacatepay
面向巴西 SaaS 开发者的 AbacatePay 集成 Skill,涵盖 PIX 支付、Webhook 验签及订阅处理模式,并使用 Node.js SDK。
主要功能
- 01创建 PIX 账单和二维码
- 02查询及模拟支付状态
- 03验证 Webhook 签名
- 04处理订阅与支付模式
适用场景
- 01为 SaaS 应用添加 PIX 结账
- 02处理支付确认 Webhook
- 03在开发环境测试支付流程
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ andrehfp/ tinyplate --skill abacatepay安装后在 Claude Code 中输入/abacatepay确认已加载。
附带文件references/api-reference.mdreferences/integration-patterns.md
详细介绍
AbacatePay 集成助手
协助巴西 SaaS 应用集成 AbacatePay 支付网关。
快速参考
安装
bun add abacatepay-nodejs-sdk
环境变量
ABACATEPAY_API_KEY="abp_live_..." # API key from dashboard
ABACATEPAY_WEBHOOK_SECRET="whsec_..." # Webhook secret
NEXT_PUBLIC_APP_URL="https://..." # For callback URLs
SDK 初始化
import AbacatePay from "abacatepay-nodejs-sdk";
const abacate = AbacatePay(process.env.ABACATEPAY_API_KEY!);
常见任务
1. 创建 PIX 支付
const response = await abacate.billing.create({
frequency: "ONE_TIME",
methods: ["PIX"],
products: [{
externalId: "plan-pro",
name: "Plano Pro",
quantity: 1,
price: 2990, // R$ 29,90 in centavos
}],
customer: {
email: "[email protected]",
name: "João Silva",
},
returnUrl: "https://app.com/pricing",
completionUrl: "https://app.com/billing/success",
});
// response.data: { id, url, status, amount }
2. 创建 PIX 二维码(直接创建)
const response = await abacate.pixQrCode.create({
amount: 2990, // R$ 29,90
expiresIn: 3600, // 1 hour
description: "Payment description",
});
// response.data: { id, brCode, brCodeBase64, status, expiresAt }
3. 检查支付状态
const response = await abacate.pixQrCode.check({ id: "pix_abc123" });
// response.data.status: "PENDING" | "PAID" | "EXPIRED" | "CANCELLED"
4. 模拟支付(开发模式)
await abacate.pixQrCode.simulatePayment({ id: "pix_abc123" });
Webhook 处理
签名验证(HMAC-SHA256)
import crypto from "crypto";
function validateSignature(payload: string, signature: string, secret: string): boolean {
const expected = crypto
.createHmac("sha256", secret)
.update(payload)
.digest("hex");
return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}
Webhook 事件
| 事件 | 描述 |
|---|---|
billing.paid | 已通过 PIX 确认支付 |
withdraw.done | 提现已完成 |
withdraw.failed | 提现失败 |
Webhook 负载结构
interface WebhookPayload {
id: string; // Event ID (use for idempotency)
event: string; // Event type
devMode: boolean; // True if test environment
data: {
billing?: {
id: string;
amount: number;
status: string;
};
};
}
定价
| 方式 | 费用 |
|---|---|
| PIX | 每笔交易固定收取 R$ 0,80 |
| 信用卡 | 3.5% + R$ 0,60 |
| 提现 | R$ 0,80(每月最多 20 笔) |
数据库架构概览
Plans 表
id:套餐标识符(例如,“pro-monthly”)priceInCents:以分为单位的价格(R$ 29,90 = 2990)interval:“monthly” | “yearly” | “lifetime”limits:包含功能限制的 JSONBfeatures:用于显示的功能 JSONB 数组
Subscriptions 表
userId:每位用户仅有一个订阅(唯一)planId:当前套餐status:“active” | “cancelled” | “expired”currentPeriodStart/End:订阅有效期
Payments 表
abacateBillingId:AbacatePay 账单 IDstatus:“pending” | “paid” | “expired”paidAt:支付确认时间戳
常见模式
请参阅 references/integration-patterns.md,了解:
- 订阅管理
- 幂等的 Webhook 处理
- 功能访问控制
- 错误处理
API 参考
请参阅 references/api-reference.md,了解完整的端点文档。
测试清单
- 已配置环境变量
- SDK 已成功连接
- 结账已创建账单并返回 URL
- Webhook 已收到事件(使用 AbacatePay 控制面板)
- 支付状态已正确更新
- 支付完成后已创建订阅
- 幂等性可防止重复操作
评论
支持 Markdown