Esempio n. 1
0
 public function sendText($weid, $openid, $msg)
 {
     yload()->classs('quick_center', 'wechatapi');
     $_wechatapi = new WechatAPI();
     $ret = $_wechatapi->sendText($openid, $msg);
     $this->addCustomMsg($weid, $openid, $msg);
     return $ret;
 }
Esempio n. 2
0
 public function respondText($from_user)
 {
     /* 用户请求传单算法
      * 1. 获得用户uid
      * 2. 立即通知用户正在生成二维码
      * 3. 查询qr表,如果
      *   3.1 uid在qr表中不存在,则立即创建二维码,并插入qr表,然后返回信息
      *   3.2 uid在qr表中存在,则直接返回信息(第二期需要判断二维码有效时间,如果超过3天,则需要重新上传,更新media_id到qr表
      * 4. 将qr信息推送给用户
      * 5. 同步回复一个空字符串,结束本次请求
      */
     global $_W;
     WeUtility::logging('step1', '');
     $weapi = new WechatAPI();
     //$content = $this->message['content'];
     // 1. 获取uid
     // $from_user = $this->message['from'];
     // 3. 查询qr表
     $qr_mgr = new UserManager($from_user);
     $ch = $qr_mgr->getActiveChannel();
     // 当前只允许一个channel,后继版本扩充,2014-12-7
     $ch = WechatUtil::decode_channel_param($ch, $ch['bgparam']);
     $channel = $ch['channel'];
     $qr = $qr_mgr->getQR($channel, $from_user);
     // 没有缓存, 或者缓存过期
     WeUtility::logging('step3', $qr['createtime'] . '<' . $ch['createtime']);
     if (empty($qr) or $qr['createtime'] < $ch['createtime']) {
         // 2. 立即通知用户
         WeUtility::logging('step3.0', $from_user);
         if (!empty($ch['genqr_info1'])) {
             $ret = $weapi->sendText($from_user, $ch['genqr_info1']);
         }
         WeUtility::logging('step3.1', '');
         // 3.1 uid在qr表中不存在,则立即创建二维码,并插入qr表,然后返回信息
         $scene_id = $qr_mgr->getNextAvaliableSceneID();
         list($media_id, $target_file_url) = $this->genImage($weapi, $scene_id, $channel, $from_user);
         if (!empty($media_id) and !empty($ch['genqr_info2'])) {
             $ret = $weapi->sendText($from_user, $ch['genqr_info2']);
         }
         if (!empty($scene_id)) {
             WeUtility::logging('begin setQR', '');
             // 老的QR不删除,因为二维码已经生成并且发布流传,删除后其他人关注后无法发放积分
             $qr_mgr->newQR($scene_id, $target_file_url, $media_id, $channel);
             WeUtility::logging('end setQR', '');
         } else {
             $ret = $weapi->sendText($from_user, '海报已经发完,活动暂停。下一期活动即将开始,会通知给大家。谢谢!');
             exit(0);
         }
     } else {
         if (!empty($ch['genqr_info3'])) {
             $ret = $weapi->sendText($from_user, $ch['genqr_info3']);
         }
         WeUtility::logging('step3.2', '');
         // 3.2 uid在qr表中存在,则直接返回信息
         $media_id = $qr['media_id'];
         $target_file_url = $qr['qr_url'];
     }
     // 4. 将qr信息推送给用户
     WeUtility::logging('step4', $media_id);
     if (!empty($media_id)) {
         $ret = $weapi->sendImage($from_user, $media_id);
     } else {
         $ret = $weapi->sendText($from_user, "您的专属海报已生成成功,打开后长按图片保存到手机后转发到朋友圈或微信群就能赚积分换话费啦!之前保存的专属海报依然有效,直接转发即可!");
         $ret = $weapi->sendText($from_user, "<a href='{$target_file_url}'>【点击这里查看您的专属海报】</a>");
     }
     // 5. 同步回复一个空字符串,结束本次请求
     WeUtility::logging('step5', '');
     exit(0);
 }