利用URL Scheme接口无感跳转微信小程序教程

PHP和VUE实战开发

项目提要

你司开发了微信小程序,现在需要通过短信等方式向自己的潜在客户进行营销。

通过服务端接口可以获取打开小程序任意页面的 URL Scheme。适用于从短信、邮件、微信外网页等场景打开小程序。

微信开发文档

作为PHP和VUE的初学者,我解决的问题基本上靠百度和QQ群里的热心网友,还有一些专业书籍,在接下来的教程内容中,您将会深刻的体会到这一点。

自知力弱,不堪大作。唯码可用,助君一力。

项目要求技术选型文档限制

阅读相关文档后,我知道了有以下限制

编程思路

阅读文档后,找到自己的编程思路。

图片[1]-利用URL Scheme接口无感跳转微信小程序教程-JieYingAI捷鹰AI

我们在PHP服务器中,新建一个文件夹“wxtc”,用来存储我们编写的代码。

获取AccessToken

一、:构造链接

获取Token需要小程序的AppID和AppSecret,您可以在小程序的「微信公众平台- 开发 - 开发管理 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态)。

现在,我们根据要求,通过get方法,通过组合的链接获取到含有AccessToken的数组即可。

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

将链接中的APPID和APPSECRET替换成您自己获取的数据(公司数据,不便泄露)

二、:调试链接

为了方便接口的调试,我使用了ApiPost的服务,

图片[2]-利用URL Scheme接口无感跳转微信小程序教程-JieYingAI捷鹰AI

在接口地址中填入我们构造好的链接,点击右侧蓝色发送按钮,在下方的“实时响应”一栏中,即可看到我们需要的数据。

图片[3]-利用URL Scheme接口无感跳转微信小程序教程-JieYingAI捷鹰AI

其中的access_token的值,就是我们需要的AccessToken。

三:撰写代码

点击标签栏中的“生成代码”,选择“php(curl)”,接口拿到外面需要的代码

图片[4]-利用URL Scheme接口无感跳转微信小程序教程-JieYingAI捷鹰AI

生成代码

图片[5]-利用URL Scheme接口无感跳转微信小程序教程-JieYingAI捷鹰AI

获取代码

 "我们构造的链接",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

四:调用access_token

我们完善下代码,让我们能拿到外面需要的access_token的值,

创建文件wx_token.php,填入以下代码


 "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=Npcink&secret=1355471563",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "POST",
    ]);
    
    
    // 抓取URL并把它传递给浏览器
    $response = curl_exec($curl);
    //$err = curl_error($curl);
    
    // 关闭cURL资源,并且释放系统资源
    curl_close($curl);
    
    //返回函数生成的内容
    //获取token文件
    //将数组变为变量
    $json_token=json_decode($response,true);
    //将token的值保存在变量$wx_token中
    $token =  $json_token['access_token'];
    return $token;
};
    //执行函数拿token
    $wx_token = wx_json_token();
    //echo '您的token是:
'.$wx_token; ?>

注意:这里获取的方式为“POST”,我们最好按照官方文档要求来,但是这个代码是可用的,我就先不改了。(如果代码是可用的,那我就不会再去动它)

这样,通过wx_token.php文件,我们就能拿到我们需要的access_token文件了。

获取URL Scheme

根据文档“获取 scheme 码”,我们需要通过上面获取的access_token来构造链接,获取URL scheme

https://api.weixin.qq.com/wxa/generatescheme?access_token=我们获取的ACCESS_TOKEN 

同样的,我们根据“获取AccessToken”一样的方法,验证构造链接有效性,获取代码,编写代码。

新建文件wx_url.php,输入以下代码。

 $wx_url_gz,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "POST",
    ]);
    
    $response = curl_exec($curl);
    $err = curl_error($curl);
    
    curl_close($curl);
    
    if ($err) {
      echo "cURL Error #:" . $err;
    } else {
      //echo $response;
    }
    
    
    //拿到小程序链接
    $json_url=json_decode($response,true);
    
    //将URL Scheme链接的值保存在变量$wx_url中
    $wx_url =  $json_url['openlink'];
    
    //echo '您本次的URL Scheme链接是:
'.$wx_url."
"; ?>

通过wx_url.php文件,我们就能拿到我们需要的URL Scheme链接了。

前端展示URL Scheme

链接已经准备好了,接下来,就是前端调用展示了。

我们新建PHP文件xcx_url.php,输入以下代码,方便我们前端调用

array( "url"=>$wx_url,)
    );
    
    //打印数组,供前端调用
    echo json_encode($xcx_url,true);
?>

这个代码会输出以下内容:

{"url_scheme":{"url":"weixin://dl/business/?t=10P2Q3P7wZf"}}

文件已备好,我们前端来调用,新建index.html文件,输入以下代码




    
    展示微信URL Scheme链接
    
    


    

展示微信URL Scheme链接

  1. 微信链接
  2. {{sites.url}}
const App = Vue.createApp({ data() { return { //空数组,准备接收 info: [], } }, methods: { openWeapp() { //拿到数组的值,传 location.href = this.info.url_scheme.url; } }, mounted() { //定时执行,自动打开按钮 setTimeout(this.openWeapp, 1000); axios .get('存放xcx_url.php文件的位置') .then(response => { console.log(response); this.info = response.data; }) .catch(function (error) { alert(error) }) } }) App.mount("#app")

注意,代码中存放xcx_url.php文件的位置,一般长这样

https://www.npc.ink/wx/xcx_url.php

这个代码会输出以下内容,截图如下:

图片[6]-利用URL Scheme接口无感跳转微信小程序教程-JieYingAI捷鹰AI

跳转指定页面或文章

先看代码,我们在上一步已经拿到了token

 array(
         "path" => 'pages/single/post',
        "query" => 'id=300485',
        //"env_version"=>''
    ),
    
);
$data = json_encode($params);
$curl = curl_init();
curl_setopt_array($curl, [
  CURLOPT_URL => $xcx_url,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => $data,
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
  echo "cURL Error #:" . $err;
} else {
  //echo $response;
}
//拿到小程序链接
$json_url=json_decode($response,true);
//将token的值保存在变量$wx_token中
$wx_url =  $json_url['openlink'];
//echo '您的scheme 码链接'.$xcx_url."
"; // echo $wx_url; //print_r($json_url); 在这里,我们给请求添加了一些参数,参数的格式如下 访问页面 页面路径:pages/circle/index.html 参考代码

$params = array(
    "jump_wxa" => array(
         "path" => 'pages/circle',
        "query" => '',
        //"env_version"=>''
    ),
    
);

访问指定文章

页面路径:pages/single/post.html?id=300485

参考代码

$params = array(
    "jump_wxa" => array(
         "path" => 'pages/single/post',
        "query" => 'id=300485',
        //"env_version"=>''
    ),
    
);

技术细节使用注意相关参考

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享