PHP获取微信小程序和小程序商店外链地址

8 篇文章 0 订阅

官方文档

这里需要注意的是 文档上说的 path 参数要填 __plugin__ 到 ? 之间的路径地址
我的是微信小商店 填这个路径会报错 40165    参数 path 填写错误
实际填写 ? 之前的路径地址是正确的 不知道是不是微信小程序和小程序商店有这个区别
query 填写 ? 之后的地址

我是获取直播间外链地址

// 获取 access_token
$getUrl = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的小程序或者小程序商店的appid&secret=你的小程序或者小程序商店的secret';
$access_token_arr = curl($getUrl);
$access_token = $access_token_arr['access_token'];
// 外链生产请求地址
$postUrl = 'https://api.weixin.qq.com/wxa/generate_urllink?access_token=' . $access_token;
// 外链请求参数
$data = array(
    "path" => "小程序路径 ? 之前的",
    "query" => "小程序路径 ? 之后的",
    "expire_type" => 1,
    "expire_interval" => 1,
    "env_version" => "release",
);

echo '<pre>';
var_dump(curl($postUrl, json_encode($data), 1));
die;


/**
 * $url     请求地址
 * $params  GET请求为 false POST请求为数据参数
 * $ispost  GET请求为 0 POST请求为 1
 */
function curl($url, $params = false, $ispost = 0)
{
    $httpInfo = array();
    //初始化
    $ch = curl_init();
    /*CURL_HTTP_VERSION_NONE (默认值,让 cURL 自己判断使用哪个版本),CURL_HTTP_VERSION_1_0 (强制使用 HTTP/1.0)或CURL_HTTP_VERSION_1_1 (强制使用 HTTP/1.1)。
    */
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    // 判断php版本 如果5.6+ 则含有CURLFILE 这个类 ,如果5.6-则设置如下,为解决php不同版本的问题
    if (class_exists('\CURLFile')) {
        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
    } else {
        if (defined('CURLOPT_SAFE_UPLOAD')) {
            curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
        }
    }
    //在HTTP请求中包含一个"User-Agent: "头的字符串。
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36');
    //尝试连接等待的时间,以毫秒为单位。设置为0,则无限等待。 如果 libcurl 编译时使用系统标准的名称解析器( standard system name resolver),那部分的连接仍旧使用以秒计的超时解决方案,最小超时时间还是一秒钟。
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
    // 允许 cURL 函数执行的最长秒数。
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    //TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出。
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    //TRUE 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。(注意:这是递归的,"Location: " 发送几次就重定向几次,除非设置了 CURLOPT_MAXREDIRS,限制最大重定向次数。)。
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    //FALSE 禁止 cURL 验证对等证书(peer's certificate)。
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    //设置为 1 是检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。 设置成 2,会检查公用名是否存在,并且是否与提供的主机名匹配。 0 为不检查名称。 在生产环境中,这个值应该是 2(默认值)。
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    //设置编码格式,为空表示支持所有格式的编码
    curl_setopt($ch, CURLOPT_ENCODING, '');
    if ($ispost) {
        // TRUE 时会发送 POST 请求,类型为:application/x-www-form-urlencoded,是 HTML 表单提交时最常见的一种。
        curl_setopt($ch, CURLOPT_POST, true);
        //全部数据使用HTTP协议中的 "POST" 操作来发送
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        //需要获取的 URL 地址,也可以在curl_init() 初始化会话的时候。
        curl_setopt($ch, CURLOPT_URL, $url);
    } else {
        if ($params) {
            curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
        } else {
            curl_setopt($ch, CURLOPT_URL, $url);
        }
    }
    $response = curl_exec($ch);
    if ($response === FALSE) {
        //echo "cURL Error: " . curl_error($ch);
        return false;
    }
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
    curl_close($ch);
    return json_decode($response, true);
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

withoutfear

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值