功能激活
概述
PIX Bacen 模式包含两个需要激活的功能:
- BACEN 接口端点:访问兼容中央银行规范的接口端点
- V2 Webhooks:使用
{type, data}信封结构的新通知格式
激活 PIX Bacen 模式是一项不可逆变更。Webhook 将切换到完全不同的格式。请确保在申请激活前已更新您的集成。
如何申请激活
1. 联系技术支持
发送邮件至 suporte@firebanking.com.br,包含以下信息:
- 公司名称
- CNPJ
- 应用程序 Client ID
- 确认已实现 V2 Webhook 支持
2. 等待配置
我们的团队将:
- 在您的账户上激活 PIX Bacen 模式
- 启用接口端点和 V2 Webhook 格式
- 通过邮件确认激活完成
3. 测试集成
激活后:
- 通过
PUT /cob/:txid发起测试收款 - 验证 V2 Webhook 是否正确到达
- 确认您的应用程序已正确处理新格式
激活后有哪些变化?
接口端点
您将获得 BACEN 接口端点的访问权限:
| 激活前 | 激活后 |
|---|---|
POST /pix/cash-in | PUT /cob/:txid |
POST /pix/cash-out | POST /dict/pix |
POST /pix/:id/refund | PUT /pix/:e2eid/devolucao/:id |
GET /balance | GET /accounts/balances |
旧接口端点仍然可用。您可以同时使用两套 API。
Webhooks
Webhook 格式将完全改变:
{
"event": "CashIn",
"status": "CONFIRMED",
"transactionId": "12345",
"movementType": "CREDIT",
"originalAmount": 100.00,
"finalAmount": 100.00,
"counterpart": {
"name": "João Silva",
"document": "123.xxx.xxx-xx"
}
}{
"type": "RECEIVE",
"data": {
"id": 123,
"txId": "abc123",
"status": "LIQUIDATED",
"payment": {
"amount": "100.00",
"currency": "BRL"
},
"creditDebitType": "CREDIT",
"debtorAccount": {
"name": "João Silva",
"document": "123.xxx.xxx-xx"
},
"creditorAccount": {...}
}
}Webhook 主要区别
| 方面 | V1 | V2 |
|---|---|---|
| 结构 | 字段在根层级 | 信封结构 {type, data} |
| 事件类型 | event: "CashIn" | type: "RECEIVE" |
| 成功状态 | CONFIRMED | LIQUIDATED |
| 退款状态 | CONFIRMED | REFUNDED |
| 金额类型 | number (100.00) | string ("100.00") |
| 交易对手 | counterpart | debtorAccount / creditorAccount |
准备您的集成
1. 更新 Webhook 处理器
// 激活前 (V1)
function handleWebhookV1(payload: any) {
if (payload.event === 'CashIn' && payload.status === 'CONFIRMED') {
processPayment(payload.transactionId, payload.finalAmount);
}
}
// 激活后 (V2)
function handleWebhookV2(payload: any) {
if (payload.type === 'RECEIVE' && payload.data.status === 'LIQUIDATED') {
const amount = parseFloat(payload.data.payment.amount);
processPayment(payload.data.id, amount);
}
}2. 更新类型/接口定义
// V2 类型定义
interface WebhookV2Payload {
type: 'RECEIVE' | 'TRANSFER' | 'REFUND';
data: WebhookV2Data;
}
interface WebhookV2Data {
id: number;
txId: string | null;
status: 'PENDING' | 'LIQUIDATED' | 'REFUNDED' | 'ERROR';
payment: {
amount: string; // 注意:是字符串,不是数值!
currency: string;
};
creditDebitType: 'CREDIT' | 'DEBIT';
debtorAccount: AccountInfo;
creditorAccount: AccountInfo;
endToEndId: string | null;
refunds: RefundInfo[];
// ... 其他字段
}3. 在开发环境中测试
在申请生产环境激活之前:
- 在沙盒环境中申请激活
- 对收款、转账和退款进行完整测试
- 验证所有 Webhook 均被正确处理
回滚
激活后无法自动恢复到 V1。如需回滚,请联系技术支持。
建议在过渡期间同时支持两个版本:
function handleWebhook(payload: any) {
// 通过格式检测版本
if (payload.type && payload.data) {
return handleWebhookV2(payload);
} else if (payload.event) {
return handleWebhookV1(payload);
}
throw new Error('Unknown webhook format');
}激活检查清单
更新您的代码以处理 {type, data} 信封格式
在沙盒环境中申请激活并运行完整测试
测试:RECEIVE、TRANSFER、REFUND,包含状态 LIQUIDATED、REFUNDED 和 ERROR
发送邮件至 suporte@firebanking.com.br 并附上所需信息
激活后监控首批交易以确保一切正常运行