本来想把这工作扔给前端来做的,奈何小程序二维码接口返回的是二进制数据,前端无法解析;那就只能后台来做了。
开发步骤:

1、调用小程序接口
2、保存接口返回的二进制数据为图片
3、把图片路径存入数据库

下面的代码做了业务部分的删减,小程序生成二维码不受影响,可根据自己的业务需求进行更改。
public function shopimg($panterid)
{

//调用的Token方法,获取Token
$token = $this->access_token();

$url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={$token}";
$data1 = [
    'scene' => 'shopid=' . $panterid,
    'page' => 'pages/add_clerk/add_clerk',
    'width' => '430',
    'auto_color' => false,
    'line_color' => ['r' => '0', 'g' => '0', 'b' => '0'],
];
$result = https_request($url, $data1, 'json');
//生成图片
$imgDir = 'uploads/shop/';
$filename = "$panterid.jpg"; ///要生成的图片名字
$jpg = $result; //得到post过来的二进制原始数据
$file = fopen("./" . $imgDir . $filename, "w"); //打开文件准备写入
fwrite($file, $jpg); //写入
fclose($file); //关闭
$filePath = '/' . $imgDir . $filename;

}

/**

  • curl请求数据
    *
  • @param string $url 请求地址
  • @param array $param 请求参数
  • @param string $contentType 请求参数格式(json)
  • @return boolean|mixed
    */

function https_request($url = '', $param = [], $contentType = '')
{

$ch = curl_init();
// 请求地址
curl_setopt($ch, CURLOPT_URL, $url);
// 请求参数类型
$param = $contentType == 'json' ? json_encode($param) : $param;
// 关闭https验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// post提交
if ($param) {
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
}
// 返回的数据是否自动显示
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 执行并接收响应结果
$output = curl_exec($ch);
// 关闭curl
curl_close($ch);
return $output !== false ? $output : false;

}

标签: none

评论已关闭