/** * 扫描二维码处理 */ public function scanTableQrcode() { if (isset($this->request['ticket'])) { $qrcode = M("wx_qrcode")->where(['ticket' => $this->request['ticket']])->find(); //判断是否是扫描的桌号 if ($qrcode['groups'] == 'table') { $table = M("shop_table")->where(['qrcode_id' => $qrcode['id']])->find(); $mid = UserModel::instance()->getUserId($this->fromUsername); $material = M("wx_material")->where(['key' => 'table'])->find(); if ($table && $material) { // $url = "http://{$table['shop_id']}.qulianchn.com/index?mid={$mid}&time=".time()."&table={$table['id']}"; // $data[] = ResponseInitiative::newsItem('你已进入'.$table['name'].'桌', '请点击图片开始点餐', 'http://www.qulianchn.com/Public/Wx/img/diancan.jpg', $url); // $result =ResponseInitiative::news($this->fromUsername, $data); $material['content'] = unserialize($material['content']); foreach ($material['content'] as &$val) { $val['title'] = str_replace('__桌号__', $table['name'] . "桌", $val['title']); $val['url'] = str_replace("__shop_id__", $table['shop_id'], $val['url']); $val['url'] = str_replace("__mid__", $mid, $val['url']); $val['url'] = str_replace("__table_id__", $table['id'], $val['url']); $val['url'] = str_replace("__time__", time(), $val['url']); } $relult = ResponseInitiative::news($this->fromUsername, $material['content']); } } else { //TODO ResponseInitiative::text($this->fromUsername, "感谢你的关注"); } } }
/** * jsapi支付 * @param string $user_id 用户id * @param int $order_id * @param string $order_sn 订单号 * @param int $total_fee 费用 * @param string $body 商品或支付单简要描述 * @param string $goods_tag 商品标记 * @param string $attach 自定义数据 * @return array */ public function JsApiPay($user_id, $order_id, $order_sn, $total_fee, $body = '', $goods_tag = '', $attach = '') { if (empty($user_id) || empty($total_fee)) { return ['status' => -1, 'message' => '数据错误']; } $tools = new JsApiPay(); $openId = UserModel::instance()->getOpenId($user_id); if (empty($openId)) { $openId = $tools->GetOpenid(); // return ['status'=> -2 , 'message'=>'user_id错误']; } $input = new \WxPayUnifiedOrder(); $input->SetBody($body); $input->SetAttach($attach); $input->SetOut_trade_no($order_sn); //\WxPayConfig::MCHID.date("YmdHis") $input->SetTotal_fee($total_fee); $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag($goods_tag); $input->SetTrade_type("JSAPI"); $input->SetOpenid($openId); $order = \WxPayApi::unifiedOrder($input); if ($order['return_code'] != 'SUCCESS') { return ['status' => -10, 'message' => $order['return_msg']]; } $jsApiParameters = $tools->GetJsApiParameters($order); $this->addPayLog($openId, $order_id, $input); return ['status' => 1, 'message' => $jsApiParameters]; }
/** * @descrpition 分发请求 * @param $request * @return array|string */ public static function switchType(&$request) { $data = ""; $send = \Wx\Event\SendMessageEvent::instance($request); switch ($request['msgtype']) { //事件 case 'event': $request['event'] = strtolower($request['event']); switch ($request['event']) { //关注 case 'subscribe': //二维码关注 if (isset($request['eventkey']) && isset($request['ticket'])) { \Wx\Model\UserModel::instance()->subscribe($request['fromusername']); $send->scanTableQrcode(); // $data = self::eventQrsceneSubscribe($request); //普通关注 } else { \Wx\Model\UserModel::instance()->subscribe($request['fromusername']); $data = self::eventSubscribe($request); } break; //扫描二维码 //扫描二维码 case 'scan': $send->scanTableQrcode(); //$data = self::eventScan($request); break; //地理位置 //地理位置 case 'location': //$data = self::eventLocation($request); break; //自定义菜单 - 点击菜单拉取消息时的事件推送 //自定义菜单 - 点击菜单拉取消息时的事件推送 case 'click': $send->clickMenu(); // $data = self::eventClick($request); break; //自定义菜单 - 点击菜单跳转链接时的事件推送 //自定义菜单 - 点击菜单跳转链接时的事件推送 case 'view': $data = self::eventView($request); break; //自定义菜单 - 扫码推事件的事件推送 //自定义菜单 - 扫码推事件的事件推送 case 'scancode_push': $data = self::eventScancodePush($request); break; //自定义菜单 - 扫码推事件且弹出“消息接收中”提示框的事件推送 //自定义菜单 - 扫码推事件且弹出“消息接收中”提示框的事件推送 case 'scancode_waitmsg': $data = self::eventScancodeWaitMsg($request); break; //自定义菜单 - 弹出系统拍照发图的事件推送 //自定义菜单 - 弹出系统拍照发图的事件推送 case 'pic_sysphoto': $data = self::eventPicSysPhoto($request); break; //自定义菜单 - 弹出拍照或者相册发图的事件推送 //自定义菜单 - 弹出拍照或者相册发图的事件推送 case 'pic_photo_or_album': $data = self::eventPicPhotoOrAlbum($request); break; //自定义菜单 - 弹出微信相册发图器的事件推送 //自定义菜单 - 弹出微信相册发图器的事件推送 case 'pic_weixin': $data = self::eventPicWeixin($request); break; //自定义菜单 - 弹出地理位置选择器的事件推送 //自定义菜单 - 弹出地理位置选择器的事件推送 case 'location_select': $data = self::eventLocationSelect($request); break; //取消关注 //取消关注 case 'unsubscribe': \Wx\Model\UserModel::instance()->unsubscribe($request['fromusername']); $data = self::eventUnsubscribe($request); break; //群发接口完成后推送的结果 //群发接口完成后推送的结果 case 'masssendjobfinish': $data = self::eventMassSendJobFinish($request); break; //模板消息完成后推送的结果 //模板消息完成后推送的结果 case 'templatesendjobfinish': $data = self::eventTemplateSendJobFinish($request); break; default: return Msg::returnErrMsg(MsgConstant::ERROR_UNKNOW_TYPE, '收到了未知类型的消息', $request); break; } break; //文本 //文本 case 'text': $data = self::text($request); break; //图像 //图像 case 'image': $data = self::image($request); break; //语音 //语音 case 'voice': $data = self::voice($request); break; //视频 //视频 case 'video': $data = self::video($request); break; //小视频 //小视频 case 'shortvideo': $data = self::shortvideo($request); break; //位置 //位置 case 'location': $data = self::location($request); break; //链接 //链接 case 'link': $data = self::link($request); break; default: return ResponsePassive::text($request['fromusername'], $request['tousername'], '收到未知的消息,我不知道怎么处理'); break; } \Wx\Model\UserModel::instance()->updateInfo($request['fromusername']); echo $data; }