因为最近需要给一个公众号做一个发票导入的功能,直接将微信抬头中的信息导入到微信公众号中!生成对应的抬头信息和二维码。

首先贴上国税总局给的二维码格式规范:

起始符+版本号+base64(名称</>纳税人识别号</>地址电话</>开户行及账号</>CRC)+结束符

起始符是特殊符号“$”,结束符同样是"$",版本号是固定的值“01”,base64(名称</>纳税人识别号</>地址电话</>开户行及账号</>CRC)这一段我们需要生成二维码的信息!首先这段信息需要使用base64进行加密,推荐使用Apache的commons-codec,不建议使用Java自带的私有包中的  Base64.encodeBase64()方法,附上代码:
public static String getBase64(String str) {  //加密
byte[] b = null;  
String s = null;  
try {  
b = str.getBytes("utf-8");  
} catch (UnsupportedEncodingException e) {  
e.printStackTrace();  
}  
if (b != null) {  
s = Base64.encodeBase64String(b).replaceAll("[\\s*\t\n\r]", "");

}  
return s;  
}

因为规范中地址和电话之间没有分隔符,所以生成的二维码解析后地址和电话连在一起,找了一些资料也为发现怎么解决,后来才发现在拼接的时候地址与电话之间需要拼接上"|",这是一个坑,请各位看官注意。

附上CRC生成代码

static int a=0x0000;
   static int crc16=0x8005;
private static void div(byte input) {//算法 
    int temp=0;  
    int data = input;  
    for (int i = 0; i < 8; i ++) {  
        temp = a & 0x8000;  
        a = a << 1;  
        a = a & 0x0000ffff;  
       int numIn = data & 0x80;  
       numIn = numIn >> 7;  
       a = a ^ numIn;  
       if (temp == 0x8000) {  
           a = a ^ crc16;  
       }  
       data = data << 1;  
       a = a & 0x0000ffff ; 
    }

}

调用生成CRC,注意一定要转换成GBK

public static String getCode(String input) {

try {
byte[] inputs = input.getBytes("GBK");  
for (int i = 0; i < inputs.length; i ++) {  
        div(inputs[i]);  
    }  
  byte r = 0;  
    div(r);  
    div(r); 
    String crc3=Integer.toHexString(a);
  String jm=getBase64(input+crc3.toUpperCase());//base64加密
  String s="$01"+jm+"$";
  return s;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;

}

通过使用微信小程序国家发票助手扫码解析出来的内容。

另外附上国税总局发票抬头二维码生成规范。

便捷开票二维码应用规范中的那些坑相关推荐

  1. 二维码在物联网中的应用

    二维码是自动识别中的一项重要技术,也是物联网产业的关键.核心技术之一.作为一种及时.准确.可靠.经济的数据输入手段已在工业.商业.国防.交通.金融.医疗卫生.有点急办公自动化等许多领域得到了广泛应用, ...

  2. 在微信中,实现微信点击链接或者扫描二维码在浏览器中打开指定的链接

    需求概述 最近很多朋友问我,为什么我的微信域名或者QQ域名怎么总是提示拦截呢?在这里跟大家说一下吧: 第一点:就是域名里面的内容违规或者诱导被举报而导致的拦截 第二点:就是被用户或者同行恶意举报而导致 ...

  3. 更便捷的二维码报修系统

    青鸟报修云是一款基于二维码报修的企业智能报修管理系统,采用移动端小程序/微信公众号配合PC端后台使用. 青鸟报修云 专注于提升企业内部故障报修效率的云平台,致力打造智能,便捷,高效的报修系统.解决各行 ...

  4. js生成二维码——QRCode.js中文文档

    QRCode v1.2.2 原文地址 API 文档 一.安装 npm install --save qrcode 二.使用 在 JavaScript 中使用 模块引入: <!-- index.h ...

  5. 二维码在ERP中的应用

    首先来看一则昨天的新闻标题,1月20日,阿里500万美元投资以色列条形码外观美化公司. 最近,俺总是会关注巨头们投资的公司,用来了解巨头们的技术和行业的判断. 言归正传,一维码在ERP中,应用比较广泛 ...

  6. 二维码在微信中无法保存的解决办法

    项目场景: 项目场景:示例:通过jquery.qrcode生成二维码,并长按保存到相册 问题描述: qrcode里面的代码是jquery.qrcode生成的,但是该默认的二维码无法长按保存,于是我尝试 ...

  7. ZXing扫描二维码在iphone中的使用

    1.首先要下载zxing2.0.zip: 下载库地址: http://code.google.com/p/zxing/     点击进入下载页     2.解压压缩包 里面只保留  cpp  和 ip ...

  8. halcon学习-二维码识别过程中对参数的选择以及对畸变的处理学习日志及遇到的问题

    写在前面: 本日志内容参考资料如下: 1.set_data_code_2d_param参数的选择 https://blog.csdn.net/cherish_now_forever/article/d ...

  9. 二维码在产品画册中的应用

    四川断崖水刀科技有限公司自2017年创立以来,致力于水刀拼花图形画册的设计.印刷以及销售工作,所设计的画册销售往全国各地. 在构建画册的过程中,设计师们希望能够将图形信息和设计理念通过文字的形式注入到 ...

  10. Vue页面生成分享海报最详说明(含二维码+多种水印方式+常见的坑处理)

    功能需求: 海报有1张背景图, 海报上的文案内容动态变化 在背景图的某个位置上添加二维码图片 水印功能 大致思路 html页面部分, 包括背景图,接口得来的数据,以及二维码图片的位置 使用 qrcod ...

最新文章

  1. 只需一行代码,你的纯文本秒变 Markdown
  2. SuperMap 房产政务协同管理平台
  3. 光模块、连接器、光纤的常用知识
  4. 【LeetCode笔记 - 每日一题】384. 打乱数组(Java、洗牌算法)
  5. 自学导航页(待续ing)
  6. 凸优化有关的数值线性代数知识 1矩阵结构与算法复杂性
  7. itextpdf 合并单元格 横向纵向
  8. Arch Linux stc-isp-wine AUR 包
  9. 网站建设需做的工作,你知道吗?
  10. ps制作印章教程:印章ps制作盖章
  11. 通用产品需求文档模板
  12. Image1000优秀网络简介(目-标-分-类)
  13. c语言作业报告,C语言程序设计综合作业报告——作业管理系统
  14. 解决html页面中文乱码
  15. 导数与偏导数的推导过程
  16. 量化评价和质化评价举例_量化评价和质性评价异同点
  17. 一位父亲给儿女的九条人生忠告(看看吧,受用一生,适用于任何人)
  18. Ubuntu18.04使用anaconda3安装tensorflow-gpu、pytorch
  19. Python数据分析与可视化——NumPy数组
  20. php实现手机归属地的查询,PHP实现手机归属地查询API接口

热门文章

  1. Java 计量单位换算 工具类
  2. java读取json文件
  3. 字节跳动拒招33岁程序员,网友:这也太坑了!太不合理!
  4. 【学习笔记】成功解决:(字体问题)Package fontspec Error: The font “STXingkai“ cannot be found. \makecover
  5. 计算机病毒与防治说课稿,计算机病毒与防治说课稿.doc
  6. dvi一分四_【1进4出DVI分配器】
  7. 离心泵水力设计——0设计参数
  8. miix4linux双系统,联想Miix4 Pro一键重装系统win10教程
  9. 可视化html css布局,一个开源可视化布局项目,在线生成纯css布局,可阅读的代码...
  10. linux shell 加密shc,使用shc工具加密shell脚本详解