本文目录导读:

个人或企业进行发票查验(尤其是增值税发票),最官方、最权威的渠道是国家税务总局的“全国增值税发票查验平台”,在 PHP 中开发发票查验功能,没有任何官方公开的免费 API 可以直接调用。
PHP 实现发票查验通常有三种方案,以下是详细的实现思路和代码示例:
模拟登录官方平台(不推荐,容易被封)
这是最直接但也最脆弱的方式,官方平台有复杂的 JavaScript 加密和滑块验证,单纯用 PHP 的 cURL 模拟登录成功率极低,且违反网站使用条款。除非是内部极低频使用,否则不建议。
调用第三方 API(推荐,适合企业)
这是最主流的做法,选择一家有正规资质的第三方数据服务商(如聚合数据、APISpace、阿里云市场等),购买发票查验 API 服务。
流程:
- 在服务商平台注册并购买“发票查验” API。
- 获取
AppKey和AppSecret。 - 后端 PHP 将发票信息(发票代码、号码、开票日期、校验码/金额)发送给第三方 API。
- 第三方返回查验结果(真伪、发票详情)。
PHP 调用第三方 API 示例(以常见的 POST JSON 为例)
<?php
/**
* 发票查验函数(基于第三方 API)
* @param string $fpdm 发票代码(10位或12位)
* @param string $fphm 发票号码(8位)
* @param string $kprq 开票日期 (YYYY-MM-DD)
* @param string $kjhj 价税合计(校验码后6位,或输入金额,视不同接口要求)
* @return array 查验结果
*/
function checkInvoice($fpdm, $fphm, $kprq, $kjhj) {
// 1. 第三方平台提供的配置(示例数据)
$appcode = '你的AppCode'; // 用于头部认证
$api_url = 'https://api.example.com/invoice/verify'; // 第三方接口地址
// 2. 构造请求数据(根据所购 API 的文档调整字段)
$postData = [
'fpdm' => $fpdm, // 发票代码
'fphm' => $fphm, // 发票号码
'kprq' => $kprq, // 开票日期
'kjhj' => $kjhj, // 校验码后6位 或 不含税金额
'fpqqlx' => '01' // 发票类型代码(如:01 增值税专用发票)
];
// 3. 初始化 cURL
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $api_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => [
'Authorization: APPCODE ' . $appcode,
'Content-Type: application/json; charset=UTF-8'
],
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($postData)
]);
// 4. 执行请求
$response = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
// 5. 处理返回结果
if ($error) {
return ['success' => false, 'msg' => '请求失败: ' . $error];
}
$data = json_decode($response, true);
// 根据具体接口返回格式调整判断逻辑
if (isset($data['Result']) && $data['Result'] === '1') { // 1 代表查验一致
return ['success' => true, 'data' => $data['Detail']];
} else {
return ['success' => false, 'msg' => $data['Description'] ?? '查验失败'];
}
}
// 使用示例
$result = checkInvoice('031001900311', '12345678', '2023-10-01', '123456');
print_r($result);
?>
对接国家税务总局“乐企数字开放平台”(最合规,适合大型企业)
如果你是企业财务系统开发商,且企业具备一定的规模(通常需要纳税信用等级为 A/B 级,且满足当地税务局的特定要求),可以申请接入乐企平台。
- 优点:官方直连,数据准确,合规性最强。
- 缺点:门槛极高,需要企业有专门的软硬件环境,并且开发周期长(涉及复杂的加签、验签流程)。
核心步骤(极简版):
- 申请接入:向主管税务机关提交申请。
- 准备证书:申请税务数字证书(UKey/CA证书)。
- 加密交互:使用
phpseclib(PHP 加密库)或OpenSSL扩展对报文做 SM2/SM4 加解密。 - 调用接口:调用
/inv-verification相关接口。
总结与建议
| 方案 | 复杂度 | 成本 | 稳定性 | 适用场景 |
|---|---|---|---|---|
| 模拟官网 | 极高 | 免费 | 极差(易崩) | 极不推荐 |
| 第三方 API | 低 | 按次收费 (约 0.1-1元/次) | 高 | 中小企业首选 |
| 乐企平台 | 极高 | 高(需服务器与证书) | 高(最稳定) | 大型企业自建 |
如果你是 PHP 开发者,建议直接选择方案二(第三方 API)。
开发时的注意事项:
- 数据脱敏与安全:发票数据涉及财务信息,在日志中应隐藏校验码等敏感字段。
- 异常处理:第三方 API 返回超时或频率限制时,需要有合理的重试机制(建议队列异步处理)。
- 详情存储:查验成功后,建议将发票的
全票面信息(购买方、销售方、货物明细)存储到本地数据库,避免每次查验都请求接口产生费用。
如果有其他具体需求,欢迎继续提问。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播