`
zysnba
  • 浏览: 182901 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

小程序解析手机号

 
阅读更多
1,通过code获取sesionKey和openid
封装实体类

public class WxMaJscode2SessionResult {
    private String session_key;

    private String openid;

    private String unionid;

    private Integer errcode;

    private String errmsg;
}

2,通过jsCode获取相关信息

  Map<String, Object> param = Maps.newHashMap();
        param.put("appid", appid);
        param.put("secret", secret);
        param.put("js_code", jsCode);
        param.put("grant_type", "authorization_code");
        log.info("小程序登录参数 param = {}", JSONObject.toJSONString(param));
        String result = HttpUtil.get("https://api.weixin.qq.com/sns/jscode2session", param);
        log.info("小程序登录返回的结果:" + result);
        WxMaJscode2SessionResult wxMaJscode2SessionResult = JSONObject.parseObject(result, WxMaJscode2SessionResult.class);
        log.info("小程序登录返回的结果转换对应的结果 实体转换 --WxMaJscode2SessionResult = {}", JSONObject.toJSONString(wxMaJscode2SessionResult));
        return wxMaJscode2SessionResult;



3,获取手机号解密的方法



package com.test.utils;

import com.alibaba.fastjson.JSONObject;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.AlgorithmParameters;
import java.security.Security;
import java.util.Arrays;

public class WXUtils {
    public static JSONObject getUserInfo(String encryptedData, String sessionKey, String iv){
        // 被加密的数据
        byte[] dataByte = Base64.decode(encryptedData);
        // 加密秘钥
        byte[] keyByte = Base64.decode(sessionKey);
        // 偏移量
        byte[] ivByte = Base64.decode(iv);

        try {
            // 如果密钥不足16位,那么就补足.  这个if 中的内容很重要
            int base = 16;
            if (keyByte.length % base != 0) {
                int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0);
                byte[] temp = new byte[groups * base];
                Arrays.fill(temp, (byte) 0);
                System.arraycopy(keyByte, 0, temp, 0, keyByte.length);
                keyByte = temp;
            }
            // 初始化
            Security.addProvider(new BouncyCastleProvider());
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding","BC");
            SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
            AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
            parameters.init(new IvParameterSpec(ivByte));
            cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化
            byte[] resultByte = cipher.doFinal(dataByte);
            if (null != resultByte && resultByte.length > 0) {
                String result = new String(resultByte, "UTF-8");
                return JSONObject.parseObject(result);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

解密结果获取手机号

   JSONObject obj= WXUtils.getUserInfo(encryptedData, sessionKey, iv);
        if (obj!= null && obj.toJSONString().length() > 0) {
            String mobile = userinfo.getString("phoneNumber");
}



<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.59</version>
</dependency>
分享到:
评论

相关推荐

    微信小程序获取手机号 (java解密及微信小程序获取openid、session_key)

    java解析的源码和小程序的源码,自己从项目中剥离出来的,肯定能用,有疑问私信,微信小程序获取各类信息(openid、session_key以及用户基本信息、解密手机号)

    微信小程序前端解密获取手机号

    在微信小程序中,获取用户手机号是一项重要的功能,它涉及到用户的隐私保护和应用的安全性。本文将深入探讨微信小程序如何在前端实现安全地解密获取用户手机号。 一、微信小程序授权获取手机号流程 1. 用户授权:...

    微信小程序获取手机号码解密算法PHP版本

    微信小程序在用户授权后,会将用户的手机号码以加密的形式返回给服务器,为了保护用户隐私,这个加密过程是微信官方实现的。对于开发者来说,我们需要在服务器端使用特定的解密算法来获取到真实的手机号码。这里我们...

    微信小程序解析用户手机号码官方示例.rar

    以上就是关于“微信小程序解析用户手机号码官方示例”的详细讲解,涵盖了前后端的交互、解密过程以及相关语言的实现。无论你是C++, Node.js, PHP还是Python开发者,都可以参考这些示例来实现微信小程序中的手机号码...

    服务端(C#)获取小程序(微信、字节跳动)手机号

    ### 服务端(C#)获取小程序(微信、字节跳动)手机号 #### 概述 在现代互联网应用开发中,小程序作为一种轻量级的应用形式,在提高用户体验的同时也简化了开发流程。对于开发者而言,如何安全有效地获取用户的手机...

    虚拟手机号创建 验证码接收 视频解析 图片扣图等功能于一体的小程序

    虚拟手机号创建 验证码接收 视频解析 图片扣图等功能于一体的小程序 自带配置说明 注意是小程序 小程序 小程序 配置的有虚拟手机号池 可以小程序内接收虚拟手机号验证码 全站视频解析功能 老旧图片修复 图片抠像

    微信小程序开发之获取用户手机号码(php接口解密)

    在对应的JS(微信小程序的逻辑层语言)中,监听这个事件,获取到的`e.detail`包含了用户的授权状态和加密后的手机号数据。 ```html !phone}}" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"&gt; ...

    小程序登陆+用户基本信息授权+手机号授权(结合业务)1

    本篇文章将详细解析小程序的登录流程、用户基本信息授权以及手机号授权。 首先,我们来看小程序的登录流程。这个过程涉及到小程序客户端与微信服务器及开发服务器的交互。当用户打开小程序时,小程序会调用`wx....

    微信小程序getPhoneNumber组键与php版服务端获取用户手机号DemogetPhoneNumber-master.zip

    在微信小程序中,`getPhoneNumber`接口是用于获取用户手机号码的关键功能,它允许开发者在用户授权的情况下获取到微信用户的手机号,从而提高用户体验并进行更精准的用户管理。 在微信小程序中调用`getPhoneNumber`...

    C#微信小程序服务端获取用户解密信息实例代码

    在C#中开发微信小程序的服务端,获取用户解密信息是关键步骤之一,这涉及到微信小程序与微信服务器之间的数据交互。微信小程序在用户授权后,会通过API接口发送加密后的用户信息到服务端,服务端需要正确解密这些...

    微信小程序如何通过用户授权获取手机号(getPhoneNumber)

    在微信小程序开发中,获取用户手机号是常见的需求之一,用于提供个性化服务或验证用户身份。本文将详细讲解如何使用微信小程序的API `getPhoneNumber` 来实现用户授权获取手机号的功能。 首先,`getPhoneNumber` 是...

    网址打包微信小程序源码 wap转微信小程序 网站转小程序源码 网址转小程序开发.zip

    该压缩包文件“网址打包微信小程序源码 wap转微信小程序 网站转小程序源码 网址转小程序开发.zip”包含了用于创建微信小程序的源代码,它允许开发者将网页内容转换并封装到微信小程序中,以便用户在微信环境中无需...

    买来的某租车小程序源码+前端小程序

    前端小程序是运行在用户设备上的应用程序部分,如手机或电脑上的用户界面。它负责与用户交互,显示数据,处理用户输入,通常由HTML、CSS和JavaScript等技术构建。在这个租车小程序中,前端部分可能采用了微信小程序...

    微信小程序:登陆/注册验证手机号/tab切换/进度条/选项卡/...xfb-fdmp-master.zip

    1. **微信小程序登录/注册验证手机号**: 微信小程序提供了一套完整的用户身份验证体系,允许用户通过微信账号进行授权登录,简化了传统应用的注册登录流程。在验证手机号方面,通常会采用短信验证码的方式。开发者...

    S-LOVE多端恋爱小站小程序源码 uniapp多端

    uniapp是一款由DCloud(即成都动软科技)开发的跨平台开发工具,它允许开发者用一套代码实现多端运行,包括iOS、Android、H5、微信小程序、支付宝小程序等多个平台。uniapp基于Vue.js,具备强大的组件化能力,同时...

    省钱兄陪诊小程序医院陪护陪诊小程序APP源码 uniapp前端模板

    《省钱兄陪诊小程序:医院陪护陪诊小程序APP源码与uniapp前端模板解析》 在当前数字化医疗的时代背景下,医院陪护陪诊小程序逐渐成为了一种便捷的服务模式,为患者提供了贴心的陪伴和照顾。本文将围绕“省钱兄陪诊...

    小程序--房产

    为了提供个性化的服务,小程序可能会要求用户授权,如获取用户基本信息、手机号等。微信提供了相应的API来处理这些需求,如`wx.login()`获取用户登录凭证,`wx.getUserInfo()`获取用户信息。 10. **性能优化** ...

    微信小程序项目之考研知识题库小程序(源码+说明).zip

    【微信小程序项目之考研知识题库小程序(源码+说明).zip】是一个包含源代码和说明文档的压缩包,主要用于帮助开发者或者学习者了解如何构建一个基于微信小程序平台的考研知识题库应用。这个项目旨在提供一个交互式的...

    快递实时查-微信小程序

    【微信小程序介绍】 微信小程序是一种轻量级的应用开发平台,由腾讯公司于2017年推出,旨在提供“触手可及”的便捷服务。它无需安装,用户可以通过微信扫一扫或搜索快速找到并使用,使用完毕后即刻退出,不占用手机...

    Java的输出星号的小程序

    本次我们将深入探讨一个Java小程序,该程序的主要功能是以倒三角形式输出星号(*),这不仅是一个基础的编程练习,也是理解循环结构和格式化输出的良好示例。 ### Java输出星号小程序详解 #### 程序结构解析 首先...

Global site tag (gtag.js) - Google Analytics