云南区块链商户平台发票助手成品
目录
- 1 概述
- 2 功能对比
- 3 项目演示图
- 4 核心逻辑
- 4.1智能赋码
- 4.2 解密方法
- 4.3 登录与检测
- 4.4 发票金额大写转换
- 4.5 检查登录是否失效
- 4.6 验证码识别
- 5 演示效果
- 6 项目部署
- 6.1 Web站点部署
- 6.1.1 环境
- 6.1.2 前端
- 6.1.3 后端
- 6.2 Docker部署
- 6.2.1 构建镜像
- 6.2.2 创建容器
- 6.3.3 访问项目域名
- 附件下载
1 概述
云南区块链商户平台是一款提供给云南省商户使用的开票工具,由于自身使用仅限于电脑端,没有移动端,且设计理念存在问题使用非常不便,于是打算通过制作一个发票助手完善一些核心功能模块,主要是对商户的使用流程顺序进行简化,以及对原产品的便捷性进行了提升,能不让商户进行操作的尽量全自动化
前面的几篇博文云南区块链商户平台:抓包技术自制开票工具(三)、云南区块链商户平台:抓包技术自制开票工具(二)、云南区块链商户平台:抓包技术自制开票工具(一)已经介绍了制作发票助手的一些功能模块,经测试使用了半个月后完善了本次项目
本项目对接了增值税票务OCR识别、51商品税收编码识别接口,前面的博文中提到了第三方识别平台,虽然免费可是效果太差,在最后的修改中废弃掉了,采用《基于DdddOcr通用验证码离线本地识别SDK搭建个人云打码接口Api》本地接口,对于第三方API接口,都是通过抓包分析的,第三方接口可以稳定使用,后续考虑将第三方接口单独拿出来供大家对接使用。
2 功能对比
| 功能 | 原平台 | 商户平台发票助手 |
|---|---|---|
| 自动登录 | ❌每次登陆需输入验证码 | ✅免验证码自动登录,登录状态失效自动更新检测,商户使用无感 |
| 商品编码识别 | ❌需商户自行判断或搜索该商品税收编码 | ✅提供本地库存和在线检测,本地没有记录自动匹配接口一键添加税收编码到商户 |
| 历史记忆 | ❌不会留存之前开过发票的公司信息 | ✅开过发票记录自动留存,关键字匹配公司名和纳税识别号,适用于小个体户经常给相同公司开发票 |
| 自动下载 | ❌发票开具成功后,需要去管理页面手动下载 | ✅开具成功后可自动发送文件到邮箱(邮箱绑定微信)也可自己下载 |
| 增值税票务OCR识别 | ❌只能手动输入 | ✅可通过拍照识别|图片上传识别,自动获取公司名和纳税识别号 |
| 辅助模式 | ❌ | ✅免输入,商品通过手动下滑选择添加,通过拍照识别开票公司信息 |
优点:免去每次需要登陆,采用自动登录,历史记忆留存更便捷开票信息填入,自动下载到手机,为广大云南商户开票提供便捷等
缺点:目前因业务需要,未进行税率调整操作,默认免税商品编码入库,有能力的可以自己修改后端接口,前端新增税率调整或通过api接口进行输入
3 项目演示图
可以便捷搜索商户平台原有商品库存,若没有该商品可以自动查询该商品的税收编码,点击可以一键添加到商户平台库存,方便下次使用,商品名采用模糊搜索,键入一定字符串就可以识别对应的商品,极大的简化了原平台全文输入模式

联网识别税收分类编码以及该分类介绍、类目等信息,帮助用户快速识别该商品的税收编码,点击即可添加入库,而传统的方式,需要商户自行搜索,该商品属于的类目,需要对分类进行一定的筛选和信息检索,该功能极大简化了用户操作的时间成本

首次可免密登录,下次启动保留账号自动识别登录,自动检查更新token,商户无需再次输入繁琐的账户和密码,开票就两步骤:1、打开软件 2、填入开票公司信息纳税识别号以及开票商品数据 简化了操作流程

4 核心逻辑
4.1智能赋码
全平台找了个遍,没有直接就能用的,需要自行解密抓包,税码识别来自51发票,通过商品关键词得出结果,可以根据选择人群最多的选择

流程:随机获取验证码并存储验证码id,通过本地ddddocr识别后将验证码与验证码id一起提交即可。
4.2 解密方法
登录的数据是经过aes加密的,想学习的可参考文章《云南区块链商户平台:抓包技术自制开票工具(二)》,不再赘述
<?php
header('Content-Type: text/html;charset=utf-8');
header('Access-Control-Allow-Origin:*'); // *代表允许任何网址请求
header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); // 允许请求的类型
header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
header('Access-Control-Allow-Headers: Content-Type,Content-Length,Accept-Encoding,X-Requested-with, Origin'); // 设置允许自定义请求头的字段header("Content-type:text/html;charset=utf-8");//字符编码设置function encrypt($plaintext, $key_text, $iv_text) {// 使用PKCS7填充$block_size = 16;$pad_length = $block_size - (strlen($plaintext) % $block_size);$plaintext .= str_repeat(chr($pad_length), $pad_length);// 如果IV不足16字节,使用空字节填充至16字节$iv_length = 相关文章:
云南区块链商户平台发票助手成品
目录 1 概述2 功能对比3 项目演示图4 核心逻辑4.1智能赋码4.2 解密方法4.3 登录与检测4.4 发票金额大写转换4.5 检查登录是否失效4.6 验证码识别5 演示效果6 项目部署6.1 Web站点部署6.1.1 环境6.1.2 前端6.1.3 后端6.2 Docker部署6.2.1 构建镜像6.2.2 创建容器6.3.3 访问项目域…...
AI图书推荐:检索增强生成RAG赋能大语言模型
本书《检索增强生成RAG赋能大型语言模型》(Retrieval-Augmented Generation - Dr. Ray Islam :Mohammad Rubyet )深入探讨了如何通过结合检索系统与神经语言模型,提升人工智能在自然语言处理领域的能力。 以下是各章节内容的概要&…...
高效学习LabVIEW的方法
学习LabVIEW可以通过系统化课程、在线资源、自学实验、参与论坛、结合实际项目等多角度进行。系统课程提供全面基础,在线资源便于查漏补缺,自学实验强化理解,论坛互动解决疑难,结合实际项目应用提高实践技能。结合项目学习是最高效…...
C语言 | Leetcode C语言题解之第136题只出现一次的数字
题目: 题解: class Solution { public:vector<int> singleNumbers(vector<int>& nums) {int eor 0;for (int num:nums)eor ^ num;int rightOne eor & (~eor 1); // 提取出最右的1int onlyOne 0;for (int cur : nums) {if ((cur…...
如何利用Varjo混合现实技术改变飞机维修训练方式
自2017年以来,总部位于休斯顿的HTX实验室一直在推进混合现实技术,与美国空军密切合作,通过其EMPACT平台提供可扩展的沉浸式飞机维护虚拟现实培训。 虚拟和混合现实对维修训练的好处: l 实践技能:提供一个非常接近真实场…...
C++:按指定字符分割字符串
按指定字符分割字符串 [C]对string按指定分隔符分割(split) #include <iostream> #include <vector> #include <string> #include <sstream> using namespace std; int main() {string origin_str "hello world !"; // 需要进行分割的字符串…...
网络网络层之(6)ICMPv4协议
网络网络层之(6)ICMPv4协议 Author: Once Day Date: 2024年6月2日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CS…...
Opengrok代码在线查看平台
OpenGrok 是一个基于 Web 的源代码搜索引擎和交叉引用工具,它可以用来浏览和搜索代码库。虽然 OpenGrok 提供了代码搜索、查看文件和历史等功能,但它本身不是一个完整的在线集成开发环境(IDE)。然而,OpenGrok 可以作为…...
济南适宜地提取
题目: 网上下载中国的DEM、土地利用地图(1980、2000、2015年的)和一张最新济南市行政区划 图(要求:莱芜市并入济南后的区划图); 2.网上下载中国2015年年平均降水空间插值数据;3..网上下载中国2015年年平均气温空间插值数据; (注:以上数据可到资源环境科学与数据中心下载http…...
Windows 安装虚拟机(VMware+Ubuntu18.04)
Windows下虚拟机安装 一、资源下载1.1 VMware安装包下载1.2 Ubuntu镜像下载二、电脑分区三、Vmware安装四、Vmware检查4.1 注册信息查看4.2 检查网络适配器五、Ubuntu安装5.1 创建新的虚拟机5.2 打开虚拟机这是一篇介绍在Windows系统上安装Ubuntu虚拟机的操作教程。 一、资源下…...
图像算法---自动对焦AF
一,CDAF反差对焦原理 CDAF,全称Contrast Detection Auto Focus,即反差式对焦或对比度检测自动对焦,是一种广泛应用于入门级数码相机和相机模块化智能手机上的自动对焦技术。以下是关于CDAF反差对焦的详细介绍: 工作原…...
sqli-labs 靶场 less-5、6 第五关和第六关:判断注入点、使用错误函数注入爆库名、updatexml()函数
SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它,我们可以学习如何识别和利用不同类型的SQL注入漏洞,并了解如何修复和防范这些漏洞。Less 5 SQLI DUMB SERIES-5 判断注入点:1. 首先,尝试正常的回显内容&#x…...
WebSocket详解与封装工具类
一、前言 在我们了解websocket之前,不妨先想想这几个问题: websocket是什么?websocket有什么好处和特点?为什么要用到websocket?什么情况下会用到websocket? 好了,带着这几个疑问一起来了解一…...
Linux学习, 进程和线程
进程 正在运行中的程序就是一个进程,进程有自己独有的内存空间和文件等等资源,进程中的资源一般都是相互隔离的。 进程内部还可以包含有多个线程,线程基本没有自己独占的资源(独有栈除外),他与进程内的其…...
SVM模型实现城镇居民月平均消费数据分类
SVM模型实现城镇居民月平均消费数据分类 一、SVM支持向量机简介二、数据集介绍三、SVM建模流程及分析一、SVM支持向量机简介 支持向量机是由感知机发展而来的机器学习算法,属于监督学习算法。支持向量机具有完备的理论基础,算法通过对样本进行求解,得到最大边距的超平面,并…...
[ZJCTF 2019]NiZhuanSiWei、[HUBUCTF 2022 新生赛]checkin、[SWPUCTF 2021 新生赛]pop
目录 [ZJCTF 2019]NiZhuanSiWei [HUBUCTF 2022 新生赛]checkin 1.PHP 关联数组 PHP 数组 | 菜鸟教程 2.PHP 弱比较绕过 PHP 类型比较 | 菜鸟教程 [SWPUCTF 2021 新生赛]pop [ZJCTF 2019]NiZhuanSiWei BUUCTF [ZJCTF 2019]NiZhuanSiWei特详解(php伪…...
c++“二纯” 纯虚函数和纯虚析构
首先给出这样一段概念: 在C中,当基类包含纯虚函数时,这些纯虚函数在基类中不需要(也不能)有定义。但是,如果基类有一个纯虚析构函数(即析构函数被声明为纯虚函数),那么情…...
MATLAB基础应用精讲-【数模应用】二元Logit分析(最终篇)(附python、MATLAB和R语言代码实现)
目录 算法原理 SPSSAU 1、二元logistic分析思路说明 2、如何使用SPSSAU进行二元logistic操作 3、二元logistic相关问题 算法流程 一、分析前准备 1、确定分析项 2.多重共线性判断 3.数据预处理 二、回归基本情况分析 三、模型拟合评价 1、似然比检验 2、拟合优…...
centos7安装mysql(完整)
官网5.7版本:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar 文件存于百度网盘:链接:https://pan.baidu.com/s/1x0fucIsD36_7agu88Jd2yg 提取码:s4m8 复制这段内容后打开百度网盘手机A…...
C++ STL std::vector的实现机制【面试】
std::vector 是 C 标准模板库(STL)中的一种序列容器,它封装了动态数组的实现,提供了一系列方法来操作这个动态数组。以下是 std::vector 的一些关键实现机制: 连续内存存储: std::vector 通过一块连续的内存…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
