[JavaCore] 微信手机浏览器版本判断

摘要:
该公司需要进行微信支付,微信浏览器版本应大于5packagecom.garinzhang.web。威信;importorg.apache.commons.lang.StringUtils;importorg.apachemons.lang.math。NumberUtils;/***类描述*@authorGarinZhang*/publicclassWchatUtil{publicstati

公司要做微支付,微信浏览器版本要大于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] 微信手机浏览器版本判断》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c#枚举型遍历更改mysql引擎后无法建立外键(navicat)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

钉钉机器人

普通发送消息 Map<String, Object> params = new HashMap<>(3); params.put("msgtype", "text"); Map<String, Object> text = new HashMap<>(1);...

C#中char[]与string之间的转换;byte[]与string之间的转化

(1)C#中char[]与string互相转换的写法:string 转换成 Char[]string ss="abcdefg";char[] cc=ss.ToCharArray();Char[] 转换成stringstring s=new string(cc);------------------------------------------------...

request获取数据的几种方法

1、request.getparameter(); 1//只接收前台穿过来的一个指定的参数2 String value=request.getparameter("key"); 2、request.getParameterMap(); 说白了前端提交到Servlet或者Action里面的参数Map,如果你是以表单提交,那么request.getParam...

C#调用7z实现文件的压缩与解压

C#调用7z实现文件的压缩与解压 1.关于7z 首先在这里先介绍一下7z压缩软件,7z是一种主流的 压缩格式,它拥有极高的压缩比。在计算机科学中,7z是一种可以使用多种压缩算法进行数据压缩的档案格式。主要有以下特点: 来源且模块化的组件结构 最高的压缩比 强大的AES-256加密 可更改配置的压缩算法 支持操大文件 支持多线程压缩 具有多种压缩文件格式...

java Process在windows的使用汇总(转)

最常用的是ant(java工程中流行),maven,及通用的exec(只要有shell脚本如.sh,.bat,.exe,.cmd等).而其实前两者不容易出错,后者却遇到了以下问题:Caused by: java.io.IOException: Cannot run program "DailyBuild.bat"...java.io.IOException...

IdentitiServser4 + Mysql实现Authorization Server

 Identity Server 4官方文档:https://identityserver4.readthedocs.io/en/latest/ 新建2个asp.net core 项目使用空模板 Auth 身份认证服务 Client客户端 Auth项目打开安装相关依赖  IdentityServer4 和 EF 实体框架 Mysql EF Provid...