[JavaCore] 微信手机浏览器版本判断
公司要做微支付,微信浏览器版本要大于5
package com.garinzhang.web.weixin; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils; /**
*类说明
*@author Garin Zhang
*/
public class WchatUtil { public static final String WEI_XIN_BROWSER = "MicroMessenger/";
public static final int WEI_XIN_LEGAL_VERSION = 5;
/**
* 正则使用不熟练,只能自己苦逼解析
* @param userAgent
* @return
*/
public static boolean isLegalVersion(String userAgent) {
// 判断是否为微信,并对支付渠道做相应处理
// "Mozilla/5.0(iphone;CPU iphone OS 5_1_1 like Mac OS X) AppleWebKit/534.46(KHTML,like Geocko) Mobile/9B206 MicroMessenger/5.0"
// String userAgent = request.getHeader("user-agent");
boolean isLegalVersion = false;
if(StringUtils.isNotBlank(userAgent)) {
// 判断是否为微信
int position = userAgent.indexOf(WEI_XIN_BROWSER);
userAgent.matches(WEI_XIN_BROWSER);
if(position != -1) {
String versionStr = userAgent.substring(position + WEI_XIN_BROWSER.length());
String[] splitVersion = versionStr.split("\\."); // 程序解析
if(splitVersion != null && splitVersion.length > 0) {
String mainVersion = splitVersion[0];
// 判断主版本号大于5
if(NumberUtils.isNumber(mainVersion)) {
int i = Integer.valueOf(mainVersion);
if(i >= WEI_XIN_LEGAL_VERSION) {
isLegalVersion = true;
}
}
}
}
}
System.out.println("Agent: " + userAgent + ", isLegalVersion: " + isLegalVersion);
return isLegalVersion;
}
public static void main(String[] args) {
// 本来准备直接按照如下比较,结果发现当主版本号超过10的时候,就不灵了
System.out.println("5.0".compareTo("5.0.2")); // =0
System.out.println("5.0".compareTo("10.1")); // >0
System.out.println("5.0".compareTo("0")); // >0
System.out.println("5.0".compareTo("4.0.2")); // >0
System.out.println("5.0".compareTo("5.1.2")); // <0 // 写个方法单独解析
isLegalVersion("Mobile/9B206 MicroMessenger/5.0"); // true
isLegalVersion("Mobile/9B206 MicroMessenger/5.0.2");// true
isLegalVersion("Mobile/9B206 MicroMessenger/4.0"); // false
isLegalVersion("Mobile/9B206 MicroMessenger/5.1"); // true
isLegalVersion("Mobile/9B206 MicroMessenger/10.1"); // true
isLegalVersion("Mobile/9B206 MicroMessenger/0.1"); // false
}
}
正则版本,待正则熟练之后再补充
[JavaCore] 微信手机浏览器版本判断的更多相关文章
- [完美]原生JS获取浏览器版本判断--支持Edge,IE,Chrome,Firefox,Opera,Safari,以及各种使用Chrome和IE混合内核的浏览器
截至自2017-08-11,支持现世已出的几乎所有PC端浏览器版本判断. 受支持的PC端浏览器列表: Edge IE Chrome Firefox Opera Safari QQ浏览器 360系列浏览 ...
- javascript判断手机浏览器版本信息
<script type="text/javascript"> /* * 智能机浏览器版本信息: * */ var browser={ versions:functio ...
- IE浏览器版本判断 HTML代码
<!--[if IE 6.0]> <div id="noie6" style="z-index: 20002;border: 1px solid #F7 ...
- 在手机浏览器中判断App是否已安装
从网上搜到之前手机中判断App是否安装可以通过onblur事件+定时器来实现. 但现在要做这个功能时,按网上的说法已经不能实现了.因为现在浏览器中打开App,window不会触发onblur事件. 在 ...
- IE浏览器版本判断
<script type="text/javascript"> var browser=navigator.appName var b_version=navigato ...
- jquery判断浏览器版本插件,jquery-browser.js
jquery判断浏览器版本插件,jquery-browser.js,jquery 判断是否为ie浏览器插件 >>>>>>>>>>>&g ...
- 识别手机浏览器代码【C#和JS两种语言】
C# 识别手机浏览器代码: public static bool MobileBrowserDetect() { bool bismobile = false; try { #region 包含and ...
- 通过浏览器navigator判断浏览器版本或者手机类型&&判断微信访问
javascript 的navigator属性,不常用,但是用处也不少,主要用处是在做浏览器兼容的问题的时候,现在有的网站已经不兼容IE6,用户假如用IE6浏览网页的话,会提示浏览器升级等信息.或者判 ...
- js判断手机浏览器操作系统和微信浏览器的方法
做手机端的前端开发,少不了对手机平台的判断.如,对于app下载,就要判断在Android平台下就显示Android下载提示:在iOS平台下就显示iOS下载提示. 今天就为大家介绍一下用js判断手机客户 ...
随机推荐
- php多线程抓取信息测试例子
php多线程抓取信息测试例子 PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程.多线程在处理重复性的循环任务,能够大大缩短程序执行时间. PHP扩展下载:htt ...
- MySQL知识点链接
1.使用ab进行压力测试详解 http://www.365mini.com/page/apache-benchmark. ...
- 通过分析 JDK 源代码研究 TreeMap 红黑树算法实现
本文转载自http://www.ibm.com/developerworks/cn/java/j-lo-tree/ 目录: TreeSet 和 TreeMap 的关系 TreeMap 的添加节点 Tr ...
- poj 2153
题意:题目还是很简单的,就是求Li Ming 在班上的排名,而且成绩是相加的. 思路:用map就行.不然好像用qsort+二分也可以,不过我在那里碰到了一些状况,然后就没用这种方法了,简单的map就可 ...
- 二叉树节点个数题目[n0,n1,n2]
若完全二叉树的节点个数为2N-1,则叶节点个数为() A)N-1 B)2×N C)2N-1 D)2N解析: 结点拥有的子树数为结点的度 证明 ...
- Java中使用Collections.sort()方法对数字和字符串泛型的LIst进行排序
在List的排序中常用的是Collections.sort()方法,可以对String类型和Integer类型泛型的List集合进行排序. 首先演示sort()方法对Integer类型泛型的List排 ...
- QPS计算方法
2016年3月14日 13:55:39 星期一 好久没写文章了, 神烦.....
- jquery checkbox 限制多选的个数
2015年11月6日 16:32:49 选中第四个的时候提示超过了3个, 点解alert框取消后, 将最后一个选中的checkbox取消选中 <script> $(document).re ...
- ffmpeg-20160714-git-bin.7z
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...
- Enum:Fliptile(POJ 3279)
Fliptile 题目大意:农夫想要测牛的智商,于是他把牛带到一个黑白格子的地,专门来踩格子看他们能不能把格子踩称全白 这一题其实就是一个枚举题,只是我们只用枚举第一行就可以了,因为这一题有点像开关一 ...