任意App/H5的web页面直接打开微信小程序的实现

最近公司运营报来一个需求:推广的web页面大多是在百度App/手机原生浏览器被打开,而我们推广的一款产品是基于微信小程序,用户在百度App/手机原生浏览器看到推广页,只能下载小程序码到手机,然后用微信扫码打开小程序,体验太繁琐。需求是要能在百度App(包括其他App)、手机原生浏览器直接打开微信小程序。

接到这个需求,最开始是聚焦在微信的静态网站H5跳转小程序静态网站 H5 跳小程序 | 微信开放文档

这要求必须将静态页面上传到小程序云开发中心,比较麻烦。

后来又聚焦到微信网页开发的开放标签

 目录 | 微信开放文档 

发现只有在微信内打开页面,才支持web页直接打开小程序。

最后联想到web网页唤起原生地图App的scheme功能,找到了微信开放平台的获取小程序scheme码和获取小程序Url Link:

urlscheme.generate | 微信开放文档

这是专门为外部浏览器、App拉起微信小程序开发的。

下面附上PHP生成微信小程序scheme url的代码:

<?php
    getUrlScheme();

    /**
     * 获取url scheme 接口
     */
    function  getUrlScheme()
    {
        $access_token = get_accept_access_token();
        echo "access_token:".$access_token."\n";
        $url = "https://api.weixin.qq.com/wxa/generatescheme?access_token=" . $access_token;
        $path = 'pages/index/index';

        //query 是指 传的参数
        $scene = 'scene=123';
        $post_data = [
            'jump_wxa' => [
                'path' => $path,
                'query' => $scene
            ],
            'is_expire' => false,
        ];
        $post_data = json_encode($post_data);
        //die($post_data);
        $result = api_notice_increment($url, $post_data);
        $data = json_decode($result);
        var_dump($data);
        if($data->errcode==0){
            echo '<a target="_blank" href="'.$data->openlink.'">小程序scheme链接:'.$data->openlink.'</a>';
        }
    }

    //获取接单小程序access token
    function get_accept_access_token()
    {
        $appid = '';  //小程序的appid
        $secret = ''; //小程序的appsecret
        $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;
        $data = file_get_contents($url);
        //var_dump($data);exit;
        $dats = json_decode($data, true);
        return $dats['access_token'];
    }

    function api_notice_increment($url, $data)
    {
        $ch = curl_init();
        $header = [
            "Accept-Charset" => "utf-8"
        ];
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $tmpInfo = curl_exec($ch);
        //     var_dump($tmpInfo);
        //    exit;
        if (curl_errno($ch)) {
            return false;
        } else {
            // var_dump($tmpInfo);
            return $tmpInfo;
        }
    }

?>

猜你喜欢

转载自blog.csdn.net/eclothy/article/details/121445091