需求:用户点生成二维码,然后生成小程序二维码,然后下个用户扫一下成为被扫者的下级。
难点:图片文件流流的转换(新建文件,写入文件流,其实就是一堆乱码)

 // 获得小程序分享二维码
    public function shares(){
        $appId = 'wx0f1aa594555ac1b278f';
        $secret = 'ed495f43312b53eb69b844f391d2ff33a05';
        $code = input('code');

    <span class="hljs-variable">$weChat</span> = <span class="hljs-keyword">new</span> WeChat(<span class="hljs-variable">$appId</span>, <span class="hljs-variable">$secret</span>);
    <span class="hljs-comment">// 获得openid</span>
    <span class="hljs-variable">$openId</span> = <span class="hljs-variable">$weChat</span>-&gt;getOpenId(<span class="hljs-variable">$code</span>);
    <span class="hljs-variable">$openId</span> = <span class="hljs-keyword">isset</span>(<span class="hljs-variable">$openId</span>[<span class="hljs-string">'openid'</span>]) ? <span class="hljs-variable">$openId</span>[<span class="hljs-string">'openid'</span>] : <span class="hljs-string">''</span>;
    <span class="hljs-comment">// 如果code能换回openid</span>
    <span class="hljs-keyword">if</span> (<span class="hljs-variable">$openId</span>) {
    <span class="hljs-comment">// 查询该用户有没有点过生成小程序码</span>
        <span class="hljs-variable">$qrcode</span> = db(<span class="hljs-string">'user'</span>)
            -&gt;field(<span class="hljs-string">'qrcode'</span>)
            -&gt;where(<span class="hljs-string">'openid'</span>,<span class="hljs-variable">$openId</span>)
            -&gt;find();
        <span class="hljs-comment">// 如果没有生成过小程序码</span>
        <span class="hljs-keyword">if</span>(<span class="hljs-variable">$qrcode</span>[<span class="hljs-string">'qrcode'</span>]){
            <span class="hljs-keyword">return</span> jsonReturn(CommonModel::CODE_200,CommonModel::MSG_200,<span class="hljs-variable">$qrcode</span>);
        }<span class="hljs-keyword">else</span>{
            <span class="hljs-comment">// 获得access_key</span>
            <span class="hljs-variable">$accessTokenOpenid</span> = <span class="hljs-variable">$weChat</span>-&gt;getAccessToken(<span class="hljs-variable">$code</span>);
            <span class="hljs-variable">$accessToken</span> = <span class="hljs-variable">$accessTokenOpenid</span>[<span class="hljs-string">'access_token'</span>];
            <span class="hljs-comment">// 获得小程序吗,这个返回的是数组</span>
            <span class="hljs-variable">$info</span> = <span class="hljs-variable">$weChat</span>-&gt;getWxacode(<span class="hljs-variable">$accessToken</span>,<span class="hljs-string">'pages/index?query='</span>.<span class="hljs-variable">$openId</span>);
            <span class="hljs-variable">$info</span> = <span class="hljs-variable">$info</span>[<span class="hljs-number">1</span>];
            <span class="hljs-comment">//保存地址</span>
            <span class="hljs-variable">$imgDir</span> = <span class="hljs-string">'img/qrcode/'</span>;
            <span class="hljs-comment">//要生成的新图片名字</span>
            <span class="hljs-variable">$filename</span> = md5(time().mt_rand(<span class="hljs-number">10</span>, <span class="hljs-number">99</span>)).<span class="hljs-string">".png"</span>;
            <span class="hljs-comment">// 组成路径加名称</span>
            <span class="hljs-variable">$newFilePath</span> = <span class="hljs-variable">$imgDir</span>.<span class="hljs-variable">$filename</span>;
            <span class="hljs-variable">$res</span> = file_put_contents(<span class="hljs-variable">$newFilePath</span>,<span class="hljs-variable">$info</span>);
            <span class="hljs-variable">$qiniuUrl</span> = CommonModel::upload(<span class="hljs-variable">$newFilePath</span>);
            <span class="hljs-keyword">if</span>(<span class="hljs-variable">$res</span>){
                db(<span class="hljs-string">'user'</span>)
                    -&gt;where(<span class="hljs-string">'openid'</span>,<span class="hljs-variable">$openId</span>)
                    -&gt;update([<span class="hljs-string">'qrcode'</span>=&gt;<span class="hljs-variable">$qiniuUrl</span>]);
            }
            <span class="hljs-keyword">return</span> jsonReturn(CommonModel::CODE_200,CommonModel::MSG_200,<span class="hljs-variable">$qiniuUrl</span>);
        }
    }<span class="hljs-keyword">else</span>{
        <span class="hljs-keyword">return</span> jsonReturn(CommonModel::CODE_404, CommonModel::MSG_404);
    }
}