URL scheme实现携带数据打开小程序

简介: URL scheme实现携带数据打开小程序

官方文档:

链接地址

前言:由于接到了一个需求,客户提出的需求如下

我这里做一个快速的整理思路:

1、鉴权调用接口凭证(access_token)

2、

HTTPS 调用

POST 请求地址:

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

请求参数:

{
    "jump_wxa":
    {
        "path": "/pages/index/index",
        "query": "id=23"
    },
"expire_type":1,
    "expire_interval":2
}

php文件

<?php
header('Content-type: text/html; charset=utf-8');
//引用加密文件
jump();
/**
 * 跳转小程序
 */
function jump()
{
    // $access_token = '58_q01a3N7-VZBHL5rQJPHISBJNbCmr0NNgl1EBCjDTseV6T20oY1ZA7H6pP2TCgAHdR7QjFD6-vnkQ9dgLJUETQ2u0rqGfenLJg-7j1AxyHc5i5IVpcIlF_BB9vrppfZ9PNZ67sELVhhyL4gD9KYXiAFANBA';
     $access_token = getAccessToken();
    $url = 'https://api.weixin.qq.com/wxa/generatescheme?access_token=' . $access_token . '';
    $token = $_GET['token'];
    $jump_wxa = [
        'path'          => 'pages/receive/receive',
        'query'         => 'data=' . trim($token) . '',
        'env_version'   => 'trial'
    ];
    $params = [
        'jump_wxa'      => (object)$jump_wxa,
        'expire_type'   => 0,
        'expire_time'   => time() + 1000
    ];
    $res = curl_post($url, $params);
    $res = json_decode($res);
    //  var_dump($res);
    if ($res->errcode == 0) {
        echo json_encode(['url' => $res->openlink, 'code' => 1]);
    }
}
function curl_get($url){
   $header = array(
       'Accept: application/json',
       'isOpenSecret: 1'
    );
    $curl = curl_init();
    //设置抓取的url
    curl_setopt($curl, CURLOPT_URL, $url);
    //设置头文件的信息作为数据流输出
    curl_setopt($curl, CURLOPT_HEADER, 0);
    // 超时设置,以秒为单位
    curl_setopt($curl, CURLOPT_TIMEOUT, 1);
    // 超时设置,以毫秒为单位
    // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);
    // 设置请求头
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    //设置获取的信息以文件流的形式返回,而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    //执行命令
    $data = curl_exec($curl);
    // 显示错误信息
    if (curl_error($curl)) {
        print "Error: " . curl_error($curl);
    } else {
        // 打印返回的内容
        // print_r($data);
        return $data;
        curl_close($curl);
    }
}
/**
 * 获取accessToken
 */
function getAccessToken()
{
    //20220709
    $appid = 'wxht';
    $sign = '97d003f59c98d41d1c7887c8c44f0a56';
    $url = 'https://gsgy.yunzhi.co/api/cloud2.member.api/outer/getAccessToken?app_id='.$appid.'&sign='.$sign.'';
   $res=curl_get("$url");
    $sm4_access_token = json_decode($res, true)['data'];
    //echo $sm4_access_token;
    //echo $sm4_access_token;
    //解密
   $key = "gsgy8C5wA3wlMfs2";
$sm4 = new Sm4Helper();
$data = $sm4_access_token;
$decdata = $sm4->decrypt($key, $data);
//echo $decdata;
return $decdata;
}
/**
 * @param string $url post请求地址
 * @param array $params
 * @return mixed
 */
function curl_post($url, array $params = array())
{
    $data_string = json_encode($params);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt(
        $ch,
        CURLOPT_HTTPHEADER,
        array(
            'Content-Type: application/json'
        )
    );
    $data = curl_exec($ch);
    curl_close($ch);
    return ($data);
}

上面的代码流程是对的,可以正常使用,接口由于第三方给的所以与原文档有点出入,自己改一下,通过php请求后返回一个链接🔗(该链接不能在微信打开,可以使用h5跳转)

最后

❤️❤️❤️❤️❤️❤️

🥳🥳🥳 茫茫人海千千万万,感谢这一刻你看到了我的文章,欢迎加入人工智能交流群(看我的动态),更多周边福利等你🥳🥳🥳

✨✨欢迎订阅本专栏或者关注我,大家一起努力每天一题算法题✨✨

❤️❤️❤️ 最后,希望我的这篇文章能对你的有所帮助!

愿自己还有你在未来的日子,保持学习,保持进步,保持热爱,奔赴山海! ❤️❤️❤️

相关文章
|
2月前
|
存储 安全 小程序
在微信小程序中使用 Vant 时如何确保数据的安全?
在微信小程序中使用 Vant 时如何确保数据的安全?
31 1
|
20天前
|
小程序 JavaScript 开发工具
|
4月前
|
小程序 API 数据库
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
【微信小程序-原生开发】实用教程09 - 可滚动选项,动态列表-步骤条(含事件传参),动态详情(含微信云查询单条数据 doc)
77 0
|
24天前
|
缓存 小程序 UED
如何利用小程序的生命周期函数实现数据的加载和更新?
如何利用小程序的生命周期函数实现数据的加载和更新?
50 4
|
24天前
|
移动开发 小程序 数据可视化
微信小程序可视化开发工具之动态数据
微信小程序可视化开发工具之动态数据
34 3
|
23天前
|
消息中间件 数据采集 数据库
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
16 1
|
3月前
|
缓存 小程序 数据库
小程序页面之间(传值)传递数据的方法
小程序页面之间(传值)传递数据的方法
178 63
|
2月前
|
小程序 开发者
微信小程序之网络数据请求 wx:request的简单使用
这篇文章介绍了微信小程序中如何使用wx.request进行网络数据请求,包括请求的配置、请求的格式以及如何在开发阶段关闭请求的合法检验。
微信小程序之网络数据请求 wx:request的简单使用
|
2月前
|
小程序 JavaScript 开发工具
微信小程序——全局数据共享
微信小程序——全局数据共享
|
3月前
|
小程序 JavaScript 前端开发
微信小程序开发时数据是否是双向数据绑定的
微信小程序开发时数据是否是双向数据绑定的