• 第一步、开通测试公众号 ... 通过上面的链接,然后登陆微信账号之后按照指引可以得到一个测试公众号;开通成功后的页面如下,会显示微信号以及appId和appSecret;...这一个步骤主要是让微信验证你的项目接口有效性,...

    第一步、开通测试公众号

    https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

    通过上面的链接,然后登陆微信账号之后按照指引可以得到一个测试公众号;开通成功后的页面如下,会显示微信号以及appId和appSecret;这些用于之后的接口配置信息配置

    第二步、接口信息配置

    这一个步骤主要是让微信验证你的项目接口有效性,关于服务器资源,可以用内网穿透natapp,

    https://natapp.cn/ 这个是官网,按照指示,登录注册后获取到免费渠道后,下载他的natapp.exe文件,开启,将自己的127.0.0.1变成域名地址,要注意的是,因为微信你URL的时候是80端口的,所以你要讲你tomcat的端口设置成80的;

    在微信调用URL后,会传送signature,timestamp, nonce三个参数,解析然后获取到然后与token拼接加密,与signature进行比较,下面贴出我的验证代码,

    ====================进行token加密=====================

        /**
         * 微信token校验
         * @param weChatSign
         * @return
         */
        public static boolean checkSignNature(WeChatSign weChatSign)
        {
            //对token,timestamp,nonce按字典排序
            String[] paramArr = new String[] {SignUtil.token, weChatSign.gettimestamp(), weChatSign.getNonce()};
            Arrays.sort(paramArr);
            
            String content = "";
            for (String target : paramArr)
            {
                //排序后的结果拼成字符串
                content += target;
            }
            
            String cipherText = null;
            try
            {
                MessageDigest md = MessageDigest.getInstance("SHA-1");
                //拼接后的字符串SHA-1加密
                byte[] digest = md.digest(content.toString().getBytes());
                cipherText = byteToStr(digest);
            }
            catch (NoSuchAlgorithmException ex)
            {
                ex.printStackTrace();
            }
            
            //将SHA-1加密后的字符串与signature进行对比
            return cipherText != null ? cipherText.equals(weChatSign.getsignature().toUpperCase()) : false;
        }

        
        
        /**
         * 将字节数组转换为十六进制字符串
         * @param byteArray
         * @return
         */
        private static String byteToStr(byte[] byteArray)
        {
            String strDigest = "";
            for (int i = 0; i < byteArray.length; i++) {
                strDigest += byteToHexStr(byteArray[i]);
            }
            return strDigest;

        }
        
         /**
          * 将字节转换为十六进制字符串.
         * @param mByte
         * @return
         */
        private static String byteToHexStr(byte mByte) {
            char[] Digit = { '0', '1' , '2', '3', '4' , '5', '6', '7' , '8', '9', 'A' , 'B', 'C', 'D' , 'E', 'F'};
            char[] tempArr = new char[2];
            tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
            tempArr[1] = Digit[mByte & 0X0F];

            String s = new String(tempArr);
            return s;
        }

    =============验证并返回信息给微信接口提示验证成功===============

        /**
         * 微信请求校验
         * @param weChatSign
         */
        @RequestMapping(value={"/wx"}, method= {RequestMethod.GET})
        public void checkToken(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
        {    
            //初始化
            WeChatSign weChatSign = new WeChatSign();
            weChatSign.setNonce(request.getParameter("nonce"));
            weChatSign.setsignature(request.getParameter("signature"));
            weChatSign.settimestamp(request.getParameter("timestamp"));
            
            PrintWriter out = response.getWriter();
            //随机字符串
            String echostr = request.getParameter("echostr");
            //若校验成功则返回echostr
            if (SignUtil.checkSignNature(weChatSign))
            {
                System.out.println( "===========请求校验成功========");
                out.print(echostr);
            }
            else
            {
                System.out.println("===========请求校验失败========");
            }
            
            out.close();
            out = null;
        }

    展开全文
  • 微信公众号开发测试平台地址: https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login.

    微信公众号开发测试平台地址: https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login.
    在这里插入图片描述
    微信公众平台接口调试工具:
    链接: https://mp.weixin.qq.com/debug/.
    在这里插入图片描述
    开发文档:
    链接: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432.
    在这里插入图片描述

    展开全文
  • 微信公众号开发过程中,由于用户体验和安全性方面的考虑,微信公众号的注册有一定门槛,某些高级接口的权限需要微信认证后才可以获取。 所以,为了帮助开发者快速了解和上手微信公众号开发,熟悉各个接口的调用,...

    在微信公众号开发过程中,由于用户体验和安全性方面的考虑,微信公众号的注册有一定门槛,某些高级接口的权限需要微信认证后才可以获取。

    所以,为了帮助开发者快速了解和上手微信公众号开发,熟悉各个接口的调用,我们推出了微信公众帐号测试号,通过手机微信扫描二维码即可获得测试号。

    微信公众号接口测试号申请链接:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421137522

    点击 进入微信公众帐号测试号申请系统:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

     

    点击登录扫码界面二维码进入微信公众号平台————测试号管理页面:

     

    其中接口配置信息中URL的配置为外网服务器,可以验证消息的对应demo.php,可参考接入指南(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319)中的

    PHP示例代码下载:下载

    将相关demo中的配置信息appID等相关信息修改成测试号管理中的信息。提交接口配置信息才能成功。

     

    URL  为 https:// 或者http://域名/文件夹/xxx.php

    token 随意值

    js接口安全域名: 外网能访问的域名。

     

    转载于:https://www.cnblogs.com/chxrs/p/11275513.html

    展开全文
  • 所以,为了帮助开发者快速了解和上手微信公众号开发,熟悉各个接口的调用,微信推出了微信公众帐号测试号,通过手机微信扫描二维码即可获得测试号。 进入微信公众帐号测试号申请系统 打开此页面,用自己的微信扫码...

    由于用户体验和安全性方面的考虑,微信公众号的注册有一定门槛,某些高级接口的权限需要微信认证后才可以获取。

    所以,为了帮助开发者快速了解和上手微信公众号开发,熟悉各个接口的调用,微信推出了微信公众帐号测试号,通过手机微信扫描二维码即可获得测试号。

    进入微信公众帐号测试号申请系统


    打开此页面,用自己的微信扫码登录,即可注册个人测试公众号。

    每个微信号可申请一个测试公众号。

    在这里插入图片描述

    展开全文
  • 接口测试帐号申请 1.测试号申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,申请页面如下图: 2.点击登录按钮出现如下二维码界面,使用手机微信进行扫描登录。 3.扫描后手机微信...

    接口测试帐号申请

    1.测试号申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,申请页面如下图:
    这里写图片描述
    2.点击登录按钮出现如下二维码界面,使用手机微信进行扫描登录。
    这里写图片描述
    3.扫描后手机微信上回提示确认登录,点击确认后PC端页面就会跳转至测试号管理页面如下:
    这里写图片描述
    4.URL填写:http://外网IP:端口号(或者直接写域名)/xxx/xxx 。外网IP或者域名可以在腾讯云,花生壳等购买。(注意:此处配置的URL必须是可以访问的公网地址)
    Token:自主设置,这个token只用于验证开发者服务器。

    5.此时填写好的URL和Token点击提交会提示配置失败

    6.创建一个servlet用于接收并返回微信服务器发送的随机字符串。注意WebServlet中的path就是你将要绑定的URL的servlet path。

    参数描述
    signature:微信加密签名 
    timestamp:时间戳 
    nonce:随机数 
    echostr:随机字符串 
    
    @WebServlet("/wx")
    
    public class ServerPortal extends HttpServlet {
    
        private static final long serialVersionUID = 1L;
    
        //此处的token就是url下面自定义填写用于验证服务器的token
        private static final String token = "4WX";
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
            String echostr = request.getParameter("echostr");
            PrintWriter pw = response.getWriter();
            //将微信服务器发送过来的随机字符串返回给微信服务器
            pw.append(echostr);
            pw.flush();
            pw.close();
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }

    7.完成上述配置后,此时点击提交就会提示配置成功了。

    8.接下来为自己的测试号推送菜单,菜单的详细规则见微信开发者文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013

    本文推送菜单示例未对异常做处理直接抛出,实际生产过程是不允许的。

    
    public class CreateMenu {
    
        public static void main(String[] args) throws Exception {
    
             //微信菜单推送地址
    
             String custmMenuUrl = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=";
             //获取access_token
             String accessToken = getAccessToken();
             custmMenuUrl = custmMenuUrl + accessToken;
             URL url = new URL(custmMenuUrl);
             //建立连接
             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
             connection.setRequestMethod("POST");
             connection.setDoOutput(true);
             connection.setDoInput(true);
             connection.connect();
             //发送菜单字符流
             OutputStream outputStream = connection.getOutputStream();
             outputStream.write(getMenuStr().getBytes("UTF-8"));
             outputStream.flush();
             outputStream.close();
             //接收返回信息
             InputStream inputStream = connection.getInputStream();
             int size =inputStream.available();
             byte[] bs =new byte[size];
             inputStream.read(bs);
             String message=new String(bs,"UTF-8");
             System.out.println(message);
     }
    
        public static String getMenuStr() throws JSONException, Exception{
    
            JSONObject menu = new JSONObject();//一级菜单对象
            JSONArray list = new JSONArray();//一级菜单列表
            //一级菜单内容(一级菜单最多允许3)
            JSONObject subButton = new JSONObject();
            JSONObject subButton2 = new JSONObject();
            JSONObject subButton3 = new JSONObject();
    
            //一级菜单内容2的二级菜单列表
            JSONArray subList = new JSONArray();
            JSONArray subList2 = new JSONArray();
            JSONArray subList3 = new JSONArray();
    
            //一级菜单内容2的二级菜单内容2
            JSONObject jsonObject = new JSONObject();
            JSONObject jsonObject2 = new JSONObject();
            JSONObject jsonObject3 = new JSONObject();
    
            jsonObject.put("type", "view");
            jsonObject.put("name", "百度");
            jsonObject.put("url", "http://www.baidu.com/");
            subList.put(jsonObject);
    
            jsonObject2.put("type", "view");
            jsonObject2.put("name", "内涵段子");
            jsonObject2.put("url", "http://www.budejie.com/");
            subList2.put(jsonObject2);
    
            jsonObject3.put("type", "view");
            jsonObject3.put("name", "新闻纵览");
            jsonObject3.put("url", "http://news.baidu.com/");
            subList3.put(jsonObject3);
    
            subButton.put("name", "度娘");
            subButton.put("sub_button", subList);
    
            subButton2.put("name", "未完待续");
            subButton2.put("sub_button", subList2);
    
            subButton3.put("name", "敬请期待");
            subButton3.put("sub_button", subList3);
    
            list.put(subButton);
            list.put(subButton2);
            list.put(subButton3);
    
            menu.put("button", list);
            return menu.toString();
        }
    
    public static String getAccessToken() throws Exception{
    
    //获取accss_token的地址
    String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appId&secret=你的appsecret";
    
            URL url = new URL(accessTokenUrl);
    
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    
            connection.setRequestMethod("GET");
    
            connection.setDoOutput(true);
    
            connection.setDoInput(true);
    
            connection.connect();
            //获取返回的字符
            InputStream inputStream = connection.getInputStream();
    
            int size =inputStream.available();
    
            byte[] bs =new byte[size];
    
            inputStream.read(bs);
    
            String message=new String(bs,"UTF-8");
    
            //获取access_token
    
            JSONObject jsonObject = new JSONObject(message);
    
            return jsonObject.getString("access_token");
    
        }
    

    至此微信测试号申请成功并完成菜单推送,有任何问题请留言。

    展开全文
  • 扫描关注后登录 ...填写JS接口安全域名 ,设置JS接口安全域后,通过关注该测试号,开发者即可在该域名下调用微信开放的JS接口,请阅读微信JSSDK开发文档。 注意:不知道啥原因,用自己的帐号申请测试
  • 综合笔者多年的微信公众号以及微信产品开发经验,本篇内容把微信公众号测试账户的接口配置过程分享给广大开发者朋友,开发语言是Java,采用目前流行的springmvc框架开发开发前必读以及准备工作: 1、微信公众...
  • 接入微信公众平台开发接口测试账号的配置以及使用花生壳进行外网映射操作 首先使用新花生壳软件将本地计算机进行动态域名绑定 http://hsk.oray.com/download/ 进入微信公众平台测试账号管理,可通过微信扫码...
  • 所以为了先整体上探究下微信开发接口的调用方式,所以我们可以通过学习下本文来先简单了解下,之后根据官方标准和实际需求实现自己需要的接口即可。 上一篇中我们简单介绍下微信开发如何入门以及可能用到的资源和...
  • 微信测试接口配置

    2020-02-24 11:17:17
    微信小程序或者微信公众号开发的时候,这个接口配置永远的是微信后台开发的第一步。 1、用你自己的微信公众号或者使用微信测试号,这里我用的是微信测试号,进去后扫描登录即可,测试号拥有正常公众号的大部分...
  • 由于微信公众号开发需要一个公众号来帮助我们进行测试,而注册公众号有太过麻烦,且功能过于简单,还好微信提供了供开发人员使用的测试号。 微信测试号登陆连接  用微信扫一扫即可登陆 登陆后页面为 URL就是你的...
  • 微信公众平台为公众号开发者提供了网页版的接口调试工具,开发者可以直接在网页中调用对应的接口,比如获取access_token接口,创建菜单接口,发送消息接口 等等。   先看一下界面,访问: ... ...
  • 微信支付接口的调用

    2018-04-13 10:53:16
    在上周的博客中我讲了调用支付宝的接口实现支付,这周我们继续来讲一讲如何调用微信的支付接口。 在讲之前依然先给出微信的官方接口说明。官方的场景介绍图如下: 其实pc端的支付场景都差不多,用户点击按钮,...
  • 最近微信发布了微信小程序内侧,各位程序员们是不是...本系列实战文章为大家介绍微信开发的相关知识,包括公众号申请、接口开发等。并为程序员们提供微信开发开源代码。后期也会出一些教学视频,和大家一起交流学习。
  • 微信公众平台为公众号开发者提供了网页版的接口调试工具,开发者可以直接在网页中调用对应的接口,比如获取access_token接口,创建菜单接口,发送消息接口 等等。 先看一下界面,访问: ...一、接口类型:因为...
  • 想要学习微信开发功能,又苦于没有认证公众号的伙伴们,可以通过注册一个微信公众号,然后申请一个接口测试账号的方式,来学习微信接口开发。【为了可以使用全部的常用接口,需要有一个域名和服务器空间】 下面简单...
  • 微信公众平台为开发者提供了接口测试号,无需公众账号即可体验和测试公众平台所有高级接口。 微信公众平台接口测试账号申请地址: http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 点击登录按钮...
  • 文章结构 ...1、怎么调用微信高级接口微信高级接口微信普通接口的区别后台服务器可以调用微信接口微信用户进行讯息的通信,这样的行为就是在调用微信接口,这些接口是基础接口,你不需要任
  • 要么借助第三方信息传递token信息到你们自己的服务,服务会再去微信服务器认证token真实性。要么就是纯碎微信发给微信服务器 转给自己的服务。总之测试对象还是自己。。 转载于:...
1 2 3 4 5 ... 20
收藏数 47,563
精华内容 19,025