Java实现从第三方页面唤醒小程序并跳转小程序界面

这篇具有很好参考价值的文章主要介绍了Java实现从第三方页面唤醒小程序并跳转小程序界面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        最近开发中碰到需要从第三方H5唤醒并跳转小程序界面的需求,在微信官方社区找了一番后发现有相关的资料,于是便整理了两个接口并进行了实现,微信提供了三个接口生成小程序跳转链接,如下:

(1)、获取 URL Scheme

(2)、获取 URL Link

(3)、获取 Short Link

        以上三种生成跳转链接的方式和相关说明在这里就不做阐述了。具体可参考官方资料,直接上链接:获取 URL Scheme | 微信开放文档

        下面说说我所采用的方式,我采用的是获取 URL Scheme,通过调用相应接口获取生成的小程序跳转链接。

        首先根据官方资料整理出接口调用相关信息,

        (1)、接口地址:

POST https://api.weixin.qq.com/wxa/generatescheme?access_token=ACCESS_TOKEN

        (2)、参数:

请求参数

属性 类型 必填 说明
access_token string 接口调用凭证,该参数为 URL 参数,非 Body 参数。使用getAccessToken 或者 authorizer_access_token
jump_wxa object 跳转到的目标小程序信息。
属性 类型 必填 说明
path string 通过 scheme 码进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带 query。path 为空时会跳转小程序主页。
query string 通过 scheme 码进入小程序时的 query,最大1024个字符,只支持数字,大小写英文以及部分特殊字符:`!#$&'()*+,/:;=?@-._~%``
env_version string 默认值"release"。要打开的小程序版本。正式版为"release",体验版为"trial",开发版为"develop",仅在微信外打开时生效。
is_expire boolean 默认值false。生成的 scheme 码类型,到期失效:true,30天有效:false。
expire_time number 到期失效的 scheme 码的失效时间,为 Unix 时间戳。生成的到期失效 scheme 码在该时间前有效。最长有效期为30天。is_expire 为 true 且 expire_type 为 0 时必填
expire_type number 默认值0,到期失效的 scheme 码失效类型,失效时间:0,失效间隔天数:1
expire_interval number 到期失效的 scheme 码的失效间隔天数。生成的到期失效 scheme 码在该间隔时间到达前有效。最长间隔天数为30天。is_expire 为 true 且 expire_type 为 1 时必填

返回参数

属性 类型 说明
errcode number 错误码
errmsg string 错误信息
openlink string 生成的小程序 scheme 码

        附:其中有一个参数是access_token,即接口调用凭证,需要调用凭证获取接口才能获取到,且有时效性,因此在生成小程序跳转链接前还需进行access_token的获取,调用方式参考官方资料,上链接:获取接口调用凭据 | 微信开放文档

下面就贴出实现代码:

//凭证调用
public static String getAccessToken(){
        //小程序APPID
        String appid="";//自行获取
        //小程序secret
        String secret="";//自己去公众号后台获取
        String httpUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
        HttpAsk httpObj=new HttpAsk();
        String res="";
        httpUrl= httpUrl+"&appid="+appid+"&secret="+secret;
        //调用接口 接收返回结果
        String AccessTokenJson=httpObj.GetForHtml(httpUrl);
        return AccessTokenJson;
}


//生成小程序跳转链接
public static Map<String,Object> getAppletUrl(){
        Map<String,Object> map=new HashMap<String,Object>();
        //接口地址
        String httpUrl="https://api.weixin.qq.com/wxa/generatescheme?access_token=";
        //需要跳转的小程序路径
        String path= "pages/login/login";
        //获取AccessToken
        String AccessTokenJson=WeChatInterfaceUtil.getAccessToken();
        //格式化返回数据
        JSONObject resultObject = JSONObject.parseObject(AccessTokenJson);
        String AccessToken=resultObject.getString("access_token");
        if(AccessToken==null){
            AccessToken =resultObject.getString("errmsg");
            map.put("code",-1);//错误码
            map.put("msg",AccessToken);//错误信息
        }else{
            map.put("code",0);
            try {
                String content="";
                JSONObject jsonParam = new JSONObject();
                JSONObject jump_wxa = new JSONObject();
                jump_wxa.put("path",path);
                jump_wxa.put("query", "");
                jsonParam.put("jump_wxa",jump_wxa);
                jsonParam.put("expire_type", 1);
                jsonParam.put("expire_interval", 2);
                String params=jsonParam.toString();
                CloseableHttpClient httpClient = HttpClients.createDefault();
                RequestConfig requestConfig = RequestConfig.custom()
                        .setSocketTimeout(300 * 1000)
                        .setConnectTimeout(300 * 1000)
                        .build();
                HttpPost post = new HttpPost(httpUrl+AccessToken);
                post.setConfig(requestConfig);
                post.setHeader("Content-Type", "application/json;charset=utf-8");
                //URLEncoder.encode(name)
                StringEntity postingString = new StringEntity(params, "utf-8");
                post.setEntity(postingString);
                CloseableHttpResponse response = httpClient.execute(post);
                content=EntityUtils.toString(response.getEntity());
                JSONObject resultUrl = JSONObject.parseObject(content);
                String newUrl=resultUrl.getString("openlink");
                map.put("url",newUrl);
                System.out.println("WeChatInterfaceUtil.getWeixinUrl--"+newUrl);
            } catch (SocketTimeoutException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return map;
}

通过调用getAppletUrl 就可以获取小程序跳转接口文章来源地址https://www.toymoban.com/news/detail-714720.html

到了这里,关于Java实现从第三方页面唤醒小程序并跳转小程序界面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包