V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yyyyadmin
V2EX  ›  浏览器

告诉你怎样手机浏览器网页中点击链接跳转到微信浏览器并打开指定的页面

  •  
  •   yyyyadmin · 2018-06-20 18:33:47 +08:00 · 8399 次点击
    这是一个创建于 2346 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:前段时间,公司有个需求,需要从手机浏览器唤醒微信,并打开指定的网页,经过测试发现,微信没有直接提供这块的功能。

    经过我们一帮人没日没夜的加班测试,终于搞定了生成生成跳转微信跳转链接的方法。

    有些做技术的,总藏着掖着,一点分享精神都没有,下面将把我研究出来的解决方案。分享给大家,希望对大家有所帮助。

    跳转原理分析:

    从手机浏览器等非微信环境,跳转到微信,都是利用 weixin://dl/business/?ticket=ta42491d55a5fae0e143599655f2efe6e 这种形式的微信 scheme。微信为了让京东,美团大的合作商家能直接跳转到微信,都给了他们 生成跳转微信接口。跳转的原理,就是利用微信提供给这些商家的接口,把我们的链接转换成对应的 ticket 链接。

    在哪儿可以找到微信跳转的接口呢?我们分析跳转链接后,发现了接口的出处。

    接口地址: http://uxuuu.cn

    到网站上可以申请到微信跳转接口,然后直接调用他们提供的接口,就可以把我们的链接转换成对应的微信跳转链接了。

    微信跳转这块有什么问题,可以加我 QQ:179126172,一起沟通交流微信跳转技术。

    4 条回复    2018-09-27 17:59:23 +08:00
    jieke
        1
    jieke  
       2018-09-27 17:53:57 +08:00
    这个很简单的啦,我这边都分享源码给很多需要这个功能的朋友了。
    jieke
        2
    jieke  
       2018-09-27 17:56:51 +08:00
    <?php

    include("data/config.php");

    $id = $_GET['id'];
    $sql = "select * from wx_list where id='".$id."'";
    $rs = mysql_fetch_array(mysql_query($sql));

    $s_time = strtotime (date('Y-m-d'));
    $e_time = strtotime ($rs['e_time']);
    $r_time = ceil(($e_time - $s_time));
    if($r_time <= 0){
    echo '
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="format-detection" content="telephone=no">
    <title>跳转失败</title>
    </head>
    <body>
    <div style="text-align: center;font-size: 18px;margin: 100px 0 30px 0;"></div>
    </body>
    </html>
    ';
    exit;
    }

    $count = $rs['count'] + 1;
    mysql_query($sql = "update wx_list set count='".$count."' where id='".$id."'");

    function get_ticket($code){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $contents = curl_exec($ch);
    preg_match('/ticket=(.*?)\"/',$contents,$result);
    $content = $result[1];
    return $content;
    }

    if(time() - $rs['uptime'] >= 1800) {
    $www_url = get_ticket($rs['www_url']);
    mysql_query($sql = "update wx_list set ticket='".$www_url."',uptime='".time()."' where id='".$id."'");
    } else {
    $www_url = $rs['ticket'];
    }
    ?>

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="format-detection" content="telephone=no">
    <title>正在跳转中</title>
    </head>
    <body>
    <div style="text-align: center;font-size: 18px;margin: 100px 0 30px 0;"></div>
    <a href="weixin://dl/business/?ticket=<?php echo $www_url ?>" style="width: 90%;background: #1AAD19;text-align: center;color: #fff;margin: 0 auto;box-sizing: border-box;font-size: 18px;line-height: 2.55555556;border-radius: 5px;display: block;text-decoration: none;">再次跳转</a>
    <script>window.location.href="weixin://dl/business/?ticket=<?php echo $www_url ?>";</script>
    <!--一起交流了学习,需要整套源码的再联系扣扣:三二二零一久二一八三-->
    </body>
    </html>
    jieke
        3
    jieke  
       2018-09-27 17:57:56 +08:00
    这个的话,数据库自己可以用 mysql 写一个,然后用这个去访问数据库就可以了
    jieke
        4
    jieke  
       2018-09-27 17:59:23 +08:00
    玩过公众号的也可以去尝试,我之前用公众号实现过相同的功能,现在没用公众号弄了,对我不实用,有兴趣的朋友可以去看下呗。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   990 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:15 · PVG 05:15 · LAX 13:15 · JFK 16:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.