commit($appid, $template_id); return $this->renderSuccess(['arr' => $arr]); } public function verifyTicket() { $xmlData = file_get_contents("php://input"); $obj = new \app\common\library\wxserver\Server(); $obj->getVerifyTicket($xmlData); echo 'success'; } /** * @notes:授权回调 * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException * @author: wanghousheng */ public function redirect() { $authorization_code = $this->request->get('auth_code'); if ($authorization_code) { $obj = new \app\common\library\wxserver\Server(); $obj->authorizationInfo($authorization_code, $this->request->domain(true)); } echo 'success'; } public function callback($appid) { $time = date('Y-m-d H:i:s'); Db::table('yoshop_wx_server')->insertGetId(['content' => '推送开始', 'created_at' => $time]); $obj = new \app\common\library\wxserver\Server(); $signature = $this->request->get('signature'); $timestamp = $this->request->get('timestamp'); $nonce = $this->request->get('nonce'); if ($signature && $timestamp && $nonce) { if ($obj->checkSignature($signature, $timestamp, $nonce)) { $xmlData = file_get_contents("php://input"); if ($xmlData) { Db::table('yoshop_wx_server')->insertGetId(['content' => $xmlData, 'created_at' => $time]); $data = $obj->decryptXml($xmlData); Db::table('yoshop_wx_server')->insertGetId(['content' => json_encode($data), 'created_at' => $time]); if (!empty($data['MsgType'])) { if ($data['MsgType'] == 'event' && !empty($data['Event'])) { $up = []; if ($data['Event'] == 'weapp_audit_success') { $up['audit_status'] = 2; } elseif ($data['Event'] == 'weapp_audit_fail') { $up['audit_status'] = 3; } elseif ($data['Event'] == 'weapp_audit_delay') { $up['audit_status'] = 4; } if (!empty($data['Reason'])) { $up['audit_reason'] = $data['Reason']; } if ($up && $appid) { $model = new WxserverAccount(); $model->update($up, ['appid' => $appid]); } echo 'success'; } elseif ($data['MsgType'] == 'text' && !empty($data['Content'])) { if ($data['Content'] == 'TESTCOMPONENT_MSG_TYPE_TEXT') { $data['Content'] = 'TESTCOMPONENT_MSG_TYPE_TEXT_callback'; echo $this->responseText($data); } elseif (strpos($data['Content'], 'QUERY_AUTH_CODE:') !== false) { $query_auth_code = trim(str_replace("QUERY_AUTH_CODE:", "", $data['Content'])); $obj->apiText($query_auth_code, $data['FromUserName']); } } } } } } } private function responseText($data): string { $template = " %s "; $fromUser = $data['ToUserName']; $toUser = $data['FromUserName']; $content = $data['Content']; $time = time(); $msgType = 'text'; return sprintf($template, $toUser, $fromUser, $time, $msgType, $content); } }