由于坑人的小程序官方目前对生成的scheme码限制了只能1个用户访问,访问后其他人将不可访问。

第一种方法是在用户调用跳转页面的时候,后端请求小程序api后,得到scheme后,过程略过

因为第一种方法,同样的数据,在wx社区使用调试器都成功,放在代码中,使用json等 各种测试都出错。

于是就使用第二种,提前将scheme码得到后放入redis,然后在用户每次访问的时候弹出一个键值,并删除该值。

将收集的scheme码地址txt 写入redis。

//添加页

<?php
$sign = $_GET[“sign”];
if ($sign == ‘sha1/md5等等’) {
// code…
header(“Content-Type: text/html;charset=utf-8”); //编码
/*读取txt文件中wx_link地址,每行一个*/
$file_link = ‘link.txt’; //txt文本文件 小程序scheme码
$file_array = file($file_link,FILE_IGNORE_NEW_LINES);
$redis = new Redis();
$redis->connect(‘127.0.0.1’, ‘6379’);
//$redis->auth(‘******’);
$redis->select(1);
//$redis->rpush(“list-link”,’shop’.rand(1, 1000)); //设置key,无则新建,有责从末尾插入
//$redis->pipeline();//开启管道 $pipe = $redis->multi(Redis::PIPELINE);
//假设变量$data数组有10w条数据,批量添加到list类型中
//$data = array(1,2,3,…,100000);
$key = ‘list-link’;
foreach($file_array as $value){
$redis->rpush($key,$value);
}
echo ‘(‘.count($file_array).’) is over’;
die();
}
echo ‘goodby’;
?>

//用户跳转页

<?
$redis = new Redis();
$redis->connect(‘127.0.0.1′,’6379’);
$redis->select(1); //指定数据库
$key = ‘list-link’;
$str = $redis->blpop($key,1); //移除列表的第一个元素同时返回
if (empty($str)) {
$url =’weixin://dl/business/?t=********’; //不存在redis记录,使用旧的wx链接小程序
}else{
$url = $str[1]; //存在数据,提取redis记录,并删除记录.
}
?>
<html>
<head>
<meta charset=”utf-8″>
<meta http-equiv=”refresh” content =”1.5; url = <?php echo $url;?> “> //content 等待时间 秒