springboot 跳转微信小程序 生成URL Scheme URL Link

这篇具有很好参考价值的文章主要介绍了springboot 跳转微信小程序 生成URL Scheme URL Link。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现方案

        通过微信文档中的URL link或URL Scheme方式生成,更多事项细节见官方文档

话不多说,直接上代码

工具类

import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;

/**
 * @Author: Tenk
 */
@RequiredArgsConstructor
@Component
public class WxAppletNotifyUtils {

    private final WxAppletConfig wxAppletConfig;

    private static final String linkUrl="https://api.weixin.qq.com/wxa/generate_urllink?access_token=ACCESS_TOKEN";

    private static final String tokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";


    /**
     * 生成小程序跳转短链 code
     * @param path 小程序页面路径 null为首页
     * @param query 与前端商量,携带的参数
     * @return
     */
    public String jumpAppletShortUrl(String path,String query,Integer days){
        String accessToken = getAccessToken();
        String url=linkUrl.replace("ACCESS_TOKEN",accessToken);
        JSONObject body = JSONUtil.createObj();
        body.putOpt("path",path);
        body.putOpt("query",query);
        //链接过期类型:0时间戳 1间隔天数
        body.putOpt("expire_type",1);
        //指定失效天数,最多30
        days=(days==null||days>30)?30:days;
        body.putOpt("expire_interval",days);
        //小程序版本,正式版为 "release",体验版为"trial",开发版为"develop"
        body.putOpt("env_version","release");
        String post = HttpUtil.post(url, body.toJSONString(2));
        JSONObject jsonObject = JSONUtil.parseObj(post);
        return jsonObject.get("url_link", String.class, false);
    }

    /**
     * scheme 跳转微信小程序,需中转H5
     * @param path
     * @param query
     * @param days
     * @return
     */
    public String jumpAppletSchemeUrl(String path,String query,Integer days){
        String url = schemeUrl.replace("ACCESS_TOKEN", getAccessToken());
        JSONObject body = JSONUtil.createObj();
        JSONObject jumpWxa = JSONUtil.createObj();
        jumpWxa.putOpt("path",path);
        jumpWxa.putOpt("query",query);
        jumpWxa.putOpt("env_version","release");
        body.putOpt("jump_wxa",jumpWxa);
        //链接过期类型:0时间戳 1间隔天数
        body.putOpt("expire_type",1);
        body.putOpt("is_expire",true);
        //指定失效天数,最多30
        days=(days==null||days>30)?30:days;
        body.putOpt("expire_interval",days);
        String post = HttpUtil.post(url, body.toJSONString(2));
        JSONObject result = JSONUtil.parseObj(post);
        return result.toJSONString(2);
    }

    public String getAccessToken(){
        String token;
        //缓存存在token
        if(RedisUtils.hasKey(CacheConstants.APPLET_ACCESS_TOKEN)){
            //redis直接获取小程序token
            token = RedisUtils.getCacheObject(CacheConstants.APPLET_ACCESS_TOKEN);
        }else{
            //拼接url
            String url = tokenUrl.replace("APPID", wxAppletConfig.getAppId())
                .replace("APPSECRET", wxAppletConfig.getSecret());
            //get请求
            String result = HttpUtil.get(url);
            //解析结果
            JSONObject jsonObject = JSONUtil.parseObj(result);
            //get AccessToken
            token=jsonObject.get("access_token",String.class,true);
            //get 过期时间 单位秒
            Long expiresIn = jsonObject.get("expires_in", Long.class, true);
            //存入redis并减少60秒
            RedisUtils.setCacheObject(CacheConstants.APPLET_ACCESS_TOKEN,token, Duration.ofSeconds(expiresIn-60));
        }
        return token;
    }
}

配置类

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "wx.applet")
public class WxAppletConfig {

    //小程序登录获取openid的url
    private String sessionUrl;
    //小程序id
    private String appId ;
    //小程序密钥
    private String secret ;
}

yml配置

springboot 跳转微信小程序 生成URL Scheme URL Link,spring boot,https,微信小程序,微信公众平台文章来源地址https://www.toymoban.com/news/detail-719583.html

返回结果示例

URL Link / URL Scheme

{
 "errcode": 0,
 "errmsg": "ok",
 "url_link": "https://wxaurl.cn/xxxxxxxxx"
}
{
 "errcode": 0,
 "errmsg": "ok",
 "openlink": "weixin://dl/business/?t=xxxxxxxxx",
} 

 单元测试

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

/**
 * @Author: Tenk
 */
@SpringBootTest // 此注解只能在 springboot 主包下使用 需包含 main 方法与 yml 配置文件
@DisplayName("自定义测试")
public class CustomizeTest {

    @Autowired
    private WxAppletNotifyUtils appletUtils;

    @DisplayName("测试微信跳转链接")
    @Test
    public void urlLink(){
        String shortUrl = appletUtils.jumpAppletShortUrl("/pages/login",null, 30);
        System.out.println(shortUrl);

        String schemeUrl = appletUtils.jumpAppletSchemeUrl("/pages/login", null, 1);
        System.out.println(schemeUrl);
    }
}

到了这里,关于springboot 跳转微信小程序 生成URL Scheme URL Link的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 生成微信小程序码、URL Scheme和URL Link

    通用第一步,获取access_token,需要服务端去获取并缓存 (APPID和APPSECRET在微信小程序后台查看获取) 1.获取小程序码( 通过该接口生成的小程序码,永久有效,数量暂无限制 ) 2.获取URL Scheme( 通过该接口生成的Scheme ,只有30天有效期 )(iOS可以直接跳,安卓需要适配weixin://xxx这种协议头

    2024年02月12日
    浏览(49)
  • 微信扫码跳转微信小程序

    一:首先声明为什么需要这样做         项目中需要在后台管理页面进行扫码支付,其他人弄了微信小程序支付,所以就需要挑战小程序进行支付,在跳转的时候需要参数例如订单编号等 二:跳转小程序的方法有多种         接口调用凭证 | 微信开放文档          具体可

    2024年02月11日
    浏览(71)
  • 短信链接跳转微信小程序

    微信官方文档 通过服务端接口或在小程序管理后台生成 URL Scheme 后,自行开发中转H5页面。 将带有中转H5链接的短信内容通过开发者自有的短信发送能力或服务商的短信服务进行投放,实现短信打开小程序。 通过服务端接口生成 URL Link 。 直接将带有URL Link的短信内容通过开

    2024年01月23日
    浏览(69)
  • APP 跳转微信小程序和回调

    在同一开放平台账号下的移动应用及小程序无需关联即可完成跳转,非同一开放平台账号下的小程序需与移动应用(APP)成功关联后才支持跳转。 可在“管理中心-移动应用-应用详情-关联小程序信息”,为通过审核的移动应用发起关联小程序操作。 App打开下程序有两种方式

    2023年04月09日
    浏览(68)
  • H5页面跳转微信小程序

    微信浏览器中实现跳转 使用微信官方接口 wx-open-launch-weapp (该方法只开放给已认证的服务号或者小程序云开发的静态网站托管绑定的域名下的网页) 案例代码 相关文档 目录 | 微信开放文档 微信开发者平台文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.htm

    2023年04月17日
    浏览(77)
  • 微信小程序如何跳转微信公众号

    登录微信公众号,点击【小程序管理】: 点击【添加】: 点击【关联小程序】: 输入小程序进行关联: 登录微信小程序,点击【设置】: 打开 “引导关注公众号”,设置需要关注的公众号: 首页添加代码: 如果关联的公众号为已认证企业号,可以添加如下代码: url 为公

    2024年02月11日
    浏览(213)
  • 跳转微信小程序和支付宝小程序

    参考链接 获取微信小程序 URL Scheme 1.1 获取小程序连接 这里需要获取长期有效的 Scheme,方式如下: 联系小程序开发者 其他渠道 示例 小程序 Scheme : 测试地址,可以打开小程序,只是打开后显示已注销 weixin://dl/business/?ticket=l92578fd8404e0d4e3e975f910fa43f3a 1.2 跳转使用 苹果手机中

    2024年02月06日
    浏览(84)
  • 微信小程序跳转微信内置浏览器

    最近遇到一个需求,需要微信小程序跳转到微信内置浏览器,但是官网并没有给出相关文档。查阅了大量资料,发现有两种实现方式。 1、通过微信公众号文章实现 小程序可以使用web-view打开关联的公众号文章,公众号文章可以在阅读全文放任一链接,小程序打开此文章后点

    2023年04月11日
    浏览(65)
  • php版 短信跳转微信小程序

    实现这功能首先,小程序端添加业务域名  php代码 下面使用js的 location.href location.href = \\\'https://***.***.com\\\' 我前端用的是uniapp,vue的话要安装axios或者jq 短信内容放前端链接地址,这样就可以通过打开游览器跳转到小程序了 注意 1.必须是发布的小程序才会被唤醒 2.接口有上限,

    2024年02月09日
    浏览(60)
  • uniapp 应用APP跳转微信小程序

            最近APP项目开发完成,在评审会上老板提了一个需求,想在开发的APP上添加一个链接,可以跳转公司的小程序商城。                 原以为会很复杂,结果只有短短的几行代码。         plus.share.getServices(function(res){                var sweixin = null;  

    2024年02月09日
    浏览(61)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包