当前位置: 首页 > news >正文

云南区块链商户平台发票助手成品

目录

  • 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 = 
http://www.lryc.cn/news/365610.html

相关文章:

  • AI图书推荐:检索增强生成RAG赋能大语言模型
  • 高效学习LabVIEW的方法
  • C语言 | Leetcode C语言题解之第136题只出现一次的数字
  • 如何利用Varjo混合现实技术改变飞机维修训练方式
  • C++:按指定字符分割字符串
  • 网络网络层之(6)ICMPv4协议
  • Opengrok代码在线查看平台
  • 济南适宜地提取
  • Windows 安装虚拟机(VMware+Ubuntu18.04)
  • 图像算法---自动对焦AF
  • sqli-labs 靶场 less-5、6 第五关和第六关:判断注入点、使用错误函数注入爆库名、updatexml()函数
  • WebSocket详解与封装工具类
  • Linux学习, 进程和线程
  • SVM模型实现城镇居民月平均消费数据分类
  • [ZJCTF 2019]NiZhuanSiWei、[HUBUCTF 2022 新生赛]checkin、[SWPUCTF 2021 新生赛]pop
  • c++“二纯” 纯虚函数和纯虚析构
  • MATLAB基础应用精讲-【数模应用】二元Logit分析(最终篇)(附python、MATLAB和R语言代码实现)
  • centos7安装mysql(完整)
  • C++ STL std::vector的实现机制【面试】
  • 激活函数对比
  • pycharm 上一次编辑位置不见了
  • FFmpeg播放器的相关概念【1】
  • =与==的优先级
  • 在Linux上的Java项目导出PDF乱码问题
  • java:使用shardingSphere访问mysql的分库分表数据
  • 红酒:如何选择适合的红酒储存容器
  • 【C++】 使用CRT 库检测内存泄漏
  • python手动搭建transformer,并实现自回归推理
  • AI数据分析:用deepseek进行贡献度分析(帕累托法则)
  • 生成式人工智能的风险与治理——以ChatGPT为例