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跳转)
在这里插入图片描述

最后

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

在这里插入图片描述
✨✨欢迎订阅本专栏或者关注我,大家一起努力每天一题算法题✨✨

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>