个税模拟器,个人所得税计算批量,纯php源码

下载地址: http://www.pan123.fun/share.php?id=PyweEzk12uy&pwd=CBQ5

在日常的财务对账或HR薪酬管理中,个人所得税计算是一项常见且重复性较高的工作。虽然市面上有不少现成的个税计算器,但往往受限于网络环境、数据安全或者需要付费使用。作为一名开发者,我选择自己动手,用纯PHP写一个轻量级的个税模拟器,支持批量计算,数据完全本地处理,无需数据库,无需第三方库。

本文将从个税计算公式入手,逐步讲解如何设计一个支持多员工、批量导入的个税计算工具,并附上可直接运行的完整PHP源码。整个代码风格简洁,注释清晰,适合部署在内网或本地使用。

一、个税计算基础(2023年现行规则)
根据《中华人民共和国个人所得税法》,居民个人的综合所得(工资薪金)采用累计预扣法,但在实际小规模批量计算中,很多人习惯直接使用月度税率表快速估算。本工具同时提供两种计算模式:

简化模式:基于当月应纳税所得额,直接套用月度税率表(速算扣除数),适用于非累计场景。

标准模式:完整实现累计预扣法,需提供年初至今的累计收入、累计免税收入、累计扣除等信息。

考虑到大多数读者的日常需求(如单月奖金测算、临时批量计算),本文将重点实现简化月度计算,并在代码中预留累计预扣法的接口,方便扩展。

1.1 月度税率表(综合所得适用)
级数 应纳税所得额(月) 税率(%) 速算扣除数(元)
1 不超过3000元 3 0
2 超过3000元至12000元的部分 10 210
3 超过12000元至25000元的部分 20 1410
4 超过25000元至35000元的部分 25 2660
5 超过35000元至55000元的部分 30 4410
6 超过55000元至80000元的部分 35 7160
7 超过80000元的部分 45 15160
1.2 计算公式
text
应纳税所得额 = 应发工资 - 个人社保公积金 - 专项附加扣除 - 免征额(5000元)
应纳税额 = 应纳税所得额 × 适用税率 - 速算扣除数
若应纳税所得额 ≤ 0,则应纳税额为 0。

二、功能设计
我们要实现的“个税模拟器批量版”具备以下特点:

纯PHP原生代码,无任何外部依赖,上传即可运行。

支持批量录入:可通过多行文本框一次性输入多条记录,每行格式为 姓名,应发工资,社保公积金,专项附加扣除。

实时计算结果:展示每个人的应发工资、扣除额、应纳税所得额、适用税率、速算扣除数和实缴个税。

表格输出:结果以HTML表格呈现,方便复制或打印。

提供单条测试:同时保留表单式单条计算,便于手动验证。

代码安全:对输入做基本过滤,防XSS。

三、完整PHP源码
新建一个文件 tax_simulator.php,将以下代码完整复制进去即可。注意文件编码请使用 UTF-8 without BOM。

php

$line) { $line = trim($line); if ($line === '') continue; // 格式:姓名,应发工资,社保公积金,专项附加扣除 $parts = str_getcsv($line); if (count($parts) < 2) { $result[] = [ 'line' => $line, 'error' => '格式错误:至少需要姓名和应发工资', 'valid' => false ]; continue; } $name = htmlspecialchars($parts[0]); $salary = floatval($parts[1] ?? 0); $social = floatval($parts[2] ?? 0); $special = floatval($parts[3] ?? 0); if ($salary < 0) $salary = 0; if ($social < 0) $social = 0; if ($special < 0) $special = 0; $tax_detail = $tax_calc->calculateMonthly($salary, $social, $special); $tax_detail['name'] = $name; $tax_detail['valid'] = true; $result[] = $tax_detail; } } } /** * 个税计算器类 */ class TaxCalculator { // 免征额(元/月) const EXEMPTION = 5000; // 月度税率表 [上限, 税率, 速算扣除数] private $tax_brackets = [ [3000, 0.03, 0], [12000, 0.10, 210], [25000, 0.20, 1410], [35000, 0.25, 2660], [55000, 0.30, 4410], [80000, 0.35, 7160], [PHP_INT_MAX, 0.45, 15160] ]; /** * 简化月度个税计算 * @param float $salary 应发工资 * @param float $social 个人社保公积金 * @param float $special 专项附加扣除 * @return array 包含各项明细和应缴税额 */ public function calculateMonthly($salary, $social, $special) { $taxable_income = $salary - $social - $special - self::EXEMPTION; $taxable_income = max(0, $taxable_income); // 负数取0 $tax = 0; $rate = 0; $deduction = 0; foreach ($this->tax_brackets as $bracket) { if ($taxable_income <= $bracket[0]) { $rate = $bracket[1]; $deduction = $bracket[2]; $tax = $taxable_income * $rate - $deduction; break; } } // 四舍五入保留两位小数 $tax = round($tax, 2); return [ 'salary' => number_format($salary, 2), 'social' => number_format($social, 2), 'special' => number_format($special, 2), 'taxable_income' => number_format($taxable_income, 2), 'rate' => ($rate * 100) . '%', 'deduction' => number_format($deduction, 2), 'tax' => number_format($tax, 2), 'net_salary' => number_format($salary - $social - $tax, 2) ]; } // 扩展:累计预扣法(预留接口,可根据需要实现) // public function calculateAccumulated() { ... } } ?> 个税模拟器 - 批量计算工具 | 纯PHP版

📊 个税模拟器 · 批量计算版

纯PHP实现 | 月度税率表 | 支持自定义社保/专项扣除

💡 使用说明: 在下方面板中按行输入员工数据,每行格式为 姓名,应发工资,社保公积金,专项附加扣除
其中“社保公积金”和“专项附加扣除”为可选值,不填写默认为0。系统将自动计算应纳税所得额、适用税率及最终个税。






⚡ 提示:支持CSV格式,字段顺序固定为姓名、应发工资、个人社保公积金、专项附加扣除。可混合使用中英文逗号,推荐英文逗号。





⚠️



📋 计算结果明细





































姓名 应发工资(元) 社保公积金(元) 专项附加(元) 应纳税所得额(元) 税率 速算扣除数(元) 应缴个税(元) 实发工资(元)
❌ 解析失败: —— 原始数据:

✅ 注:本计算采用月度税率简化模型,免征额5000元/月,适用于单月工资薪金个税估算。




四、核心代码解读 为了让读者能根据自己的需求二次开发,下面对关键部分进行详细说明。

4.1 TaxCalculator 类的设计
php
class TaxCalculator
{
const EXEMPTION = 5000; // 起征点
private $tax_brackets = [ ... ]; // 税率表
}
$tax_brackets 是一个二维数组,每一行代表一个税率区间,依次存储 区间上限、税率、速算扣除数。最后一项 PHP_INT_MAX 用于处理超过 8 万元的部分。

calculateMonthly() 方法接收三个金额参数,按公式计算出应纳税所得额,然后遍历税率表找到合适的档位,计算最终个税。

4.2 批量数据解析
前端通过

posted @ 2026-06-02 14:57  无名说python  阅读(9)  评论(0)    收藏  举报