Skip to content
Back to skills

Invoice Verify

ASecurity

发票真伪查验。通过 Python 脚本调用汇联易查验服务,支持增值税发票、全电发票、区块链发票等 17 种类型的真伪核验。当用户提供发票信息要求查验真伪时使用。

  • 417 stars
  • 0 votes
  • 0 copies
  • 11 views
  • Added September 8, 2026
developmentpythongobashapi

Works with

  • api
  • mcp

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add infometa/workbuddyskills --skill invoice-verify --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Invoice Verify?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Invoice Verify
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/infometa-invoice-verify/badge)](https://www.skillsdirectory.com/skills/infometa-invoice-verify)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: invoice-verify
version: 1.0.0
description: 发票真伪查验。通过 Python 脚本调用汇联易查验服务,支持增值税发票、全电发票、区块链发票等 17 种类型的真伪核验。当用户提供发票信息要求查验真伪时使用。
---

# 发票查验 (Invoice Verify)

## 文件地图 (File Map)

```
invoice-verify/
├── SKILL.md                       # ▶ 技能主入口(当前文件):触发规则、工作流程、参数矩阵、输出规范
├── scripts/
│   └── verify_invoice.py          # ⚙️ 核心执行脚本:构建参数 → HTTP 调用 → SSE 解析 → 格式化结果
└── references/
    └── parameters.md              # 📖 参数参考手册:参数定义、发票类型×必填字段矩阵、判参逻辑
```

### 文件职责说明

| 文件 | 用途 | 调用时机 |
|------|------|----------|
| `SKILL.md` | 定义触发条件、工作流程阶段、参数校验规则、输出规范和错误处理策略 | 每次技能触发时全文加载 |
| `scripts/verify_invoice.py` | 执行实际查验调用:构建 JSON-RPC 负载 → POST → 解析 SSE → 格式化结果文本(API Key 优先级:--apikey > .apikey > HELIOS_KEY) | 阶段 1 Step 4 调用 |
| `references/parameters.md` | 参数定义细节、发票类型代码说明和条件必填对照矩阵 | WorkBuddy 在参数校验阶段按需引用 |

## Overview

对用户提供的发票信息进行真伪核验。通过 Python 脚本调用汇联易查验服务,支持查验增值税专用发票、增值税普通发票、全电发票、区块链电子发票等 17 种发票类型。

## 触发场景

当用户表达以下意图时使用此技能:
- "帮我查验这张发票"
- "验一下发票真伪"
- "查发票"
- "帮我验证发票是否真实"
- 提供了发票代码、发票号码、开票日期等信息要求查验
- 上传或提供了发票图片,要求核实真伪

## 工作流程

### 阶段 0:配置 API Key

**此阶段为所有查验操作的前置条件,每次触发技能时必须首先执行。**

#### 0.1 检查 HELIOS_KEY 环境变量

检查当前环境中 `HELIOS_KEY` 变量是否已设置且非空:

```bash
echo "${HELIOS_KEY:?}" 2>/dev/null
```

- 如果已设置且非空 → 直接进入 **阶段 1**
- 如果未设置或为空 → 进入 **0.2**

#### 0.2 引导用户配置 API Key

停止后续所有流程,向用户输出以下引导信息(三种方式任选其一):

> ⚠️ 尚未配置汇联易 API Key,无法进行发票查验。
>
> **请选择以下任一方式配置:**
>
> **方式一:环境变量(推荐)**
>
> 1. 登录**汇联易 PC 端**系统
> 2. 进入 **个人设置 → MCP 服务**
> 3. 复制您的个人 API Key
> 4. 在终端执行:
>
>    ```bash
>    export HELIOS_KEY=您复制的API密钥
>    ```
>
> **方式二:.apikey 文件**
>
> 在 `scripts/` 上级目录创建 `.apikey` 文件,写入 API Key:
>
> ```bash
> echo "您复制的API密钥" > skills/invoice-verify/.apikey
> ```
>
> **方式三:命令行参数**
>
> 使用 Python 脚本时通过 `--apikey` 参数传入:
>
> ```bash
> python scripts/verify_invoice.py --apikey YOUR_KEY --invoiceTypeNo ... --invoiceNo ... --billingDate ...
> ```
> 
> 设置完成后,重新发起查验请求即可。
>
> ⚠️ 注意:请使用您**自己**的 API Key,不要借用他人的 Key。

等待用户确认已完成配置后,再重新进入阶段 0.1 检查。

---

### 阶段 1:收集发票信息

按以下顺序执行,每步完成后才能进入下一步:

**1. 提取发票信息**

先查看用户当前提供的信息(文本、图片均可):
- 如果用户上传了发票图片 → 使用 Read 工具读取图片,从中提取发票类型、发票号码、开票日期、发票代码、金额、校验码等关键信息
- 如果用户上传了 PDF → 使用 PDF 读取工具提取发票类型、发票号码、开票日期、发票代码、金额、校验码等关键信息
- 如果用户直接提供了文本 → 直接解析文本中的发票信息
- 如果用户信息不完整 → 仅向用户索要缺少的参数,不强求一次性提供所有参数

**2. 判断发票类型**

按以下顺序执行:

**2.1 先判断发票类型**

首先根据前一步中获取到的信息初步判断发票类型;发票类型参考 parameters.md 中列出的发票类型;

**2.2 检查是否支持查验**

- 如果匹配到的发票类型在已支持的发票类型范围内 → 进入步骤 **3**
- 如果发票类型不在提供的可查验的发票类型范围内 → **直接返回"该发票类型暂不支持查验"给用户**,停止后续流程,不支持的发票类型有:纸质火车票、定额发票

**3. 确定必填参数组合**

根据判断出的发票类型,在 **参数校验规则** 表格中找到对应的必填参数组合(即标记 ✅ 的列)。向用户确认这些参数是否齐全:
- 齐全 → 进入阶段 2
- 缺少某参数 → 仅询问缺少的那一项,不要重复确认已有参数

**4. 执行脚本并返回结果**

执行 Python 脚本进行发票查验:

```bash
python scripts/verify_invoice.py --invoiceTypeNo ... --invoiceNo ... --billingDate ... [其他条件必填参数]
```

脚本自动处理 API Key 读取(优先级:`--apikey` 参数 > `.apikey` 文件 > `HELIOS_KEY` 环境变量)。

注意:

- **数据格式校正**:当脚本返回错误码时,仅可调整参数的**格式**(例如 `2024-04-24` → `20240424`),**绝不能改变参数的实际值**(例如不能把 2024-01-24 改为 20240124 以外的值)
- 脚本返回结果后,整理为清晰的可读信息提供给用户

### 阶段 2:向用户呈现结果

脚本调用返回结果后,整理为清晰的可读信息提供给用户。

**查验通过** — 以表格形式展示发票基本信息:

```
✅ 该发票查验通过,为真实有效的发票

| 字段 | 值 |
|------|-----|
| 发票类型 | 增值税专用发票 |
| 发票号码 | 12345678 |
| 发票代码 | 3100012345 |
| 开票日期 | 2022-04-19 |
| 购买方 | XX公司 |
| 购买方税号 | 91440101MA... |
| 销售方 | YY公司 |
| 销售方税号 | 91440101MA... |
| 价税合计 | ¥1000.00 |
| 不含税金额 | ¥884.96 |
| 税额 | ¥115.04 |
| 税率 | 13% |
| 发票状态 | 正常 |
| 是否作废 | 否 |
```

**invoiceGoods(货物/服务明细)** — 单独展示在基本信息下方:

- 仅当 `invoiceGoods` 存在且 `goodsName` 不为空/空字符串时展示。
- 如果 `goodsName` 为空或该结构不存在,**不展示整个 invoiceGoods 部分**。
- 展示格式:

```
货物/服务明细:

| 序号 | 货物/服务名称 | 数量 | 单价 | 金额 | 税率 |
|------|-------------|------|------|------|------|
| 1 | 技术服务费 | 1 | 884.96 | 884.96 | 13% |
| 2 | 咨询费 | 2 | 500.00 | 1000.00 | 6% |
```

**查验未通过** → `❌ 该发票查验未通过...`,附结果码和错误消息

**系统异常** → `⚠️ 系统异常,请稍后重试`

> 注意:当工具返回错误码时,仅可调整参数的**格式**(如 `2024-04-24` → `20240424`),**绝不能改变参数的实际值**(如不能把 2024-01-24 改为 20240124 以外的值)。若格式调整后仍失败,如实告知用户错误信息,不要自行修改参数值重试。

## 参数校验规则

**必填参数:**
- `invoiceTypeNo` — 发票类型代码
- `invoiceNo` — 发票号码
- `billingDate` — 开票日期,格式为 8 位数字如 `20220419`

**条件必填(根据发票类型决定):**

| 发票类型 | invoiceCode | invoiceAmount | checkCode | invoiceFee | totalAmount |
|---------|:-----------:|:-------------:|:---------:|:----------:|:-----------:|
| 01 增值税专用发票 | ✅ | ✅ | | | |
| 03 机动车销售统一发票 | ✅ | ✅ | | | |
| 04 增值税普通发票 | ✅ | | ✅ | | |
| 08 增值税电子专用发票 | ✅ | ✅ | | | |
| 10 增值税普通发票(卷式) | ✅ | | ✅ | | |
| 10 深圳区块链发票 | ✅ | ✅ | ✅ | | |
| 11 增值税普通发票(卷式) | ✅ | | ✅ | | |
| 14 通行费电子普票 | ✅ | | ✅ | | |
| 112 电子发票(专票) | | | | ✅ | |
| 113 电子发票(普票) | | | | ✅ | |
| CZEI013 二手车销售发票 | ✅ | | | ✅ | |
| CZEI112 铁路电子客票 | | | | ✅ | |
| CZEI113 航空行程单 | | | | | ✅ |
| CZEI212 机动车销售发票(电子) | | | | ✅ | |
| CZEI312 通行费(电子) | | | | ✅ | |
| CZEI313 二手车销售发票(电子) | | | | ✅ | |

> **重点备注**:04 增值税普通发票,如果为"全电纸质普通发票",需要取"全电发票号码"作为"校验码"进行入参。

## 输出格式参考

脚本返回结果后,按以下规则呈现:

### 查验通过(code 121800 / "查验成功")

**基本信息** — 以表格形式展示:

```
| 字段 | 值 |
|------|-----|
| 发票类型 | {type} |
| 发票号码 | {invoiceNo} |
| 发票代码 | {invoiceCode} |
| 开票日期 | {billingDate} |
| 购买方 | {title} |
| 购买方税号 | {draweeNo} |
| 销售方 | {payee} |
| 销售方税号 | {payeeNo} |
| 价税合计 | ¥{fee/100:.2f} |
| 不含税金额 | ¥{feeWithoutTax/100:.2f} |
| 税额 | ¥{tax/100:.2f} |
| 税率 | {taxRate}% |
| 发票状态 | {receiptStatus} |
| 是否作废 | {invalidStatus == 'N' ? '否' : '是'} |
```

**invoiceGoods(货物/服务明细)** — 仅在以下条件**同时满足**时展示:

1. `invoiceGoods` 字段存在且为数组
2. 数组中至少有一条记录的 `goodsName` 不为空/空字符串

展示格式:

```
货物/服务明细:

| 序号 | 货物/服务名称 | 数量 | 单价 | 金额 | 税率 |
|------|-------------|------|------|------|------|
| 1 | {goodsName} | {quantity} | {unitPrice} | {amount} | {taxRate}% |
| 2 | ... | ... | ... | ... | ... |
```

若 `invoiceGoods` 不存在,或其中所有 `goodsName` 均为空 → **不展示整个 invoiceGoods 部分**。

### 查验未通过

```
❌ 该发票查验未通过...
结果码: {code}
消息:   {message}
```

### 系统异常

```
⚠️ 系统异常,请稍后重试
```

## 错误处理

- **HELIOS_KEY 未配置**: 进入阶段 0.2 引导用户选择配置方式(环境变量 / .apikey 文件 / --apikey 参数)
- **API Key 无效或过期**: 提示用户重新登录汇联易获取新的 API Key,重新配置
- **网络错误**: 重试或检查网络连接
- **参数错误**: 根据错误提示修正参数后重试
- **服务端错误**: 汇联易服务异常,稍后重试

## Resources

文件结构与职责参见顶部 **文件地图** 章节。

| 资源 | 路径 | 说明 |
|------|------|------|
| API Key 来源 | 三种方式:`HELIOS_KEY` 环境变量(推荐)/ `.apikey` 文件 / `--apikey` 命令行参数 | 用户自行配置,每人使用自己的 Key |
| 参数对照矩阵 | `references/parameters.md` | 17 种发票类型 × 8 个参数的完整校验规则 |

Files in this skill

  • SKILL.md10.8 KB
  • references/parameters.md4.9 KB
  • scripts/verify_invoice.py8.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in development →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.