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

2019-03-02 01:05|来源: 网路

公司要做微支付,微信浏览器版本要大于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
    }
}

正则版本,待正则熟练之后再补充


转自:http://www.cnblogs.com/garinzhang/p/java_weixin_payment_browser_version

相关问答

更多
  • 如果有二维码可以扫描下载安装,如果没有二维码可以打开手机浏览器搜索中国农信手机银行客户端,然后下载安装 如,你在手机上打开百度,输入中国农村信用社手机银行客户端下载会找到,直接下载到手机上安装,也可以用电脑下载手机版的,复制到手机一直位置,再打开手机,找到文件,点击安装即可 还可以登录官网去下载
  • javacore ? 是 jdk 的 dump 么? 有工具可以打开,分析的 这里说的挺清楚的 http://www.ibm.com/developerworks/cn/java/j-lo-javacore/
  • 可以通过以下几种方式获取Javacore: 1. 向操作系统发送一个中止的signal http://blog.csdn.net/happyqwz/article/details/8255762 2. 在Java的执行代码中使用JavaDump()方法 com.ibm.jvm.Dump.JavaDump() 方法促使JVM dump 发布ProblemDiagnosticsLabToolkit应用包,通过可视化页面直接生成相关文件。 3. 系统在异常时自动抛出 ? 一个严重的本地调用出错(非Java的异常) ...
  • 本身就是启动的,不知道你说的什么功能,被你误解为没有启动!
  • 使用ACTION_VIEW,在启动Actitive之前调用Intent.choseActivity方法(名称可能拼写不对,你参考API看看就明白了)
  • 官网上啊 在百度或者Google搜索UCweb,下载对应自己的UCweb就可以安装了
  • 到手机腾讯网下载java通用版qq uc浏览器在wap.ucfly.com下载通用java版
  • 到以下uc官网下载安装即可,具体下载步骤如下! uc浏览器集FLASH,QQ农场摘菜,视频,搜索,下载,听歌,省流量等.用UC随时随地上QQ,邮箱,校内,看新闻娱乐.及时看NBA直播,轻松淘宝,便携公交查询,英语翻译。 手机下载:(能自己下载QQ或者飞信的手机都可以下载使用) 1.手机自带浏览器输入网址 wap.ucweb.cn , .输入激活码 100051 , 3.选择适合机型下载安装.(没合适机型的可到通用版下载无证书版本) PS:这个是UCWEB公司官网校园版的下载端口,校园版注重的是更兼容更稳定, ...
  • 你有2个选择: 增加默认超时 如果只是扩展就足够了,当线程被认为是从10分钟挂起到例如20时,那么只需定义以下JVM自定义属性: com.ibm.websphere.threadmonitor.threshold=1200 有关详细信息,请查看配置挂起检测策略 定义自定义健康策略 如果您正在运行WebSphere 8.5 Network Deployment,那么您可以配置运行状况策略以实现您想要的目标。 转至Operational policies > Health Policies并使用以下自定义条件 ...