PIX
PIX 是由 Banco Central do Brasil(BACEN)运营的巴西即时支付方案。BR Code QR 格式是 EMVCo MPM 的子集,标签 26 的商户账户信息中携带 PIX 密钥, , 可以是 CPF、CNPJ、电子邮件、电话号码或随机 EVP。PIX 在推出后不到两年(2020 → 2022)便完成了首个万亿雷亚尔的结算,现已成为巴西主流零售支付网络。
规范说明:Banco Central do Brasil, PIX 文档。核心决议:BACEN Resolution 103/2021, Manual de Padrões para Iniciação do Pix。
父规范:EMVCo MPM v1.1。PIX 保留商户账户标签
编码: TLV(标签-长度-值),采用 2 位标签、2 位长度和 CRC16-CCITT 尾部。
父规范:EMVCo MPM v1.1。PIX 保留商户账户标签
26;其余均继承自 EMVCo。 编码: TLV(标签-长度-值),采用 2 位标签、2 位长度和 CRC16-CCITT 尾部。
BR Code 结构, , 标签 26(PIX 商户账户信息)
PIX 专属内容位于标签 26 中,该标签本身是一个包含以下子标签的嵌套 TLV 结构:
| 子标签 | 名称 | 长度 | 说明 |
|---|---|---|---|
00 | GUI, , 全局唯一标识符 | 14 | 固定值 br.gov.bcb.pix,将方案标识为 PIX。 |
01 | PIX 密钥 | 可变 | CPF(11 位)、CNPJ(14 位)、电子邮件、电话(+55DDPHONE)或 EVP(类 UUID 随机密钥)。 |
02 | 附加信息 | 可变,≤72 | 发给付款人的自由文本消息,显示在其银行应用中。 |
25 | URL, , 动态 PIX | 可变 | 仅用于动态 PIX:扫码时付款人应用从此 URL 获取完整载荷(金额、到期日、有效期、折扣/罚款)。静态 PIX 完全省略标签 25。 |
PIX 密钥类型
| 密钥类型 | 格式 | 验证 |
|---|---|---|
| CPF(个人税务 ID) | 11 位数字,QR 载荷中无标点 | 最后 2 位的 Mod-11 校验和。掩码 123.456.789-09 → 原始值 12345678909。 |
| CNPJ(企业税务 ID) | 14 位数字,无标点 | 两个 mod-11 校验和。掩码 12.345.678/0001-95 → 原始值 12345678000195。 |
| 电子邮件 | 符合 RFC 5321,最多 77 个字符 | BACEN 在注册时转换为小写;QR 载荷必须与注册时的大小写一致。 |
| 电话 | E.164 格式,含国家代码 +55,最多 14 个字符 | 格式:+55DDNNNNNNNNN,其中 DD 为 2 位区号。无空格或连字符。 |
| EVP(随机密钥) | UUID v4 格式,36 个字符 | 注册时由付款人银行在服务器端生成。适合不希望暴露 CPF/CNPJ/邮件/电话的商户。 |
静态 PIX 与动态 PIX
- 静态 PIX(起始点
11)。所有内容编码在 QR 中:PIX 密钥、商户名称、商户城市、可选固定金额、可选参考号。付款人应用直接读取并授权。最适合印刷贴纸、发票、橱窗海报。金额可省略(付款人自行输入)或固定(精确收费)。 - 动态 PIX(起始点
12)。QR 携带 URL(子标签25)。扫码时付款人应用从该 URL 获取经 JWS 签名的 JSON 载荷,其中包含金额、到期日、有效期窗口以及可选的滞纳金/折扣规则。有到期日的账单发票(boletos híbridos)必须使用此模式。也用于 PIX Cobrança(账单)。
标准测试向量, , 带 CPF 密钥和固定金额的静态 PIX
CPF 12345678909,商户 LOJA TESTE(SAO PAULO),固定金额 R$10.00,无交易参考号:
00020126360014br.gov.bcb.pix0114123456789095204000053039865406010.005802BR5910LOJA TESTE6009SAO PAULO62070503***6304XXXX| 标签 | 值 | 含义 |
|---|---|---|
00 | 01 | 载荷格式指示符(始终为 01) |
01 | 11 | 静态起始点 |
26 | 36 字节嵌套 TLV | PIX 商户账户信息 |
├─ 00 | br.gov.bcb.pix | GUI |
├─ 01 | 12345678909 | CPF 密钥(11 位) |
52 | 0000 | MCC, , 未知/个人 |
53 | 986 | BRL 的 ISO 4217 货币代码 |
54 | 10.00 | 固定交易金额 |
58 | BR | 国家代码 |
59 | LOJA TESTE | 商户名称(EMVCo 规定最多 25 个字符) |
60 | SAO PAULO | 商户城市(最多 15 个字符) |
62 | 7 字节嵌套 | 附加数据模板 |
├─ 05 | *** | 参考标签(无参考时的占位符) |
63 | XXXX | 前述所有内容的 CRC16-CCITT(编码时重新计算) |
常见陷阱
- CPF/CNPJ 掩码。QR 载荷仅使用未掩码的数字(
12345678909,而非123.456.789-09)。部分代码生成器误留点和连字符, , 生成的 QR 在所有银行应用中都会报"chave PIX inválida"错误。 - 字符集至关重要。BACEN 规范要求商户名称和城市使用 ISO/IEC 8859-1(Latin-1)。带音调字符(
São Paulo)必须在计算 TLV 长度之前用 Latin-1 编码,而非 UTF-8。UTF-8 编码会增加字节数并破坏长度字段。 - CRC 计算。CRC16-CCITT(多项式
0x1021,初始值0xFFFF,无最终 XOR)覆盖从标签00到6304的所有内容, , 包括 CRC 字段本身的字面标签+长度。常见错误:对错误范围计算 CRC,QR 在某些应用中能正确解析,在其他应用中则失败。 - 金额格式为字符串,而非数字。标签
54是字符串:10.00,而非1000。必须有两位小数。最多两位小数, , BRL 没有分以下的面值。 - 静态 PIX 没有内置退款功能。付款后,静态 PIX 即时且最终。商户必须通过带外方式处理退款(从商户向付款人发起反向 PIX)。在印刷材料上清楚说明这一点。
- 贴纸覆盖欺诈。收银台上的实体 PIX QR 贴纸曾遭受覆盖欺诈攻击, , 攻击者将自己的 QR 贴在商户的上面。定期更换静态 QR 贴纸,进行覆膜处理,并在贴纸旁以明文显示预期 PIX 密钥,以便付款人核实。
- 投资/证券限制。Comissão de Valores Mobiliários(CVM)禁止将 PIX 用于未注册的投资招揽。代币、"保证收益"产品或 MLM 计划落地页上的 PIX QR 将触发 CVM 执法行动。
- 动态 PIX 需要可用的端点。如果标签
25URL 无法访问,扫码时支付将失败。使用您掌控的服务器,并至少在 QR 码的印刷使用期内保持其运行。
银行应用兼容性
每个持牌 PIX 参与机构(银行或支付机构)均在其消费者应用中支持 BR Code。主要实现如下:
| 应用 | 静态 | 动态 | 说明 |
|---|---|---|---|
| Itaú, Bradesco, Santander, BB, Caixa | 是 | 是 | 前 5 大银行。完整 PIX 支持,包括 Cobrança、agendado 和 devolução。 |
| Nubank | 是 | 是 | 巴西最受欢迎的数字银行。简洁的 PIX 用户体验。 |
| Inter, C6 Bank, PicPay | 是 | 是 | 完整 PIX 支持。 |
| Mercado Pago | 是 | 是 | 支付机构;PIX 是同一应用中多种支付渠道之一。 |
| 通用 iOS/Android 相机 | 否 | 否 | 原生相机应用无法将 BR Code 解析为支付意图。用户必须先打开银行应用。 |
另请参见
- /pix-qr-code/, 带 CPF/CNPJ 验证和实时 BR Code 编码的 PIX 生成器。
- /standards/emvco/, EMVCo MPM 父规范。
- /standards/upi/, 印度 UPI,另一个带标签 26 的 EMVCo 衍生方案。
- /standards/, 返回标准索引。