美文网首页
Webman使用easywechat6的内容安全/媒体安全/异步

Webman使用easywechat6的内容安全/媒体安全/异步

作者: aleshaw | 来源:发表于2024-08-04 17:51 被阅读0次
//实例化
function wx()
{
    return new \EasyWeChat\MiniApp\Application([
        'app_id' => env('WX_APPID'),
        'secret' => env('WX_SECRET'),
        'token' => 'X7gH5tQ3vB9sK1mP2dF4eR6cT8wU0xJ',
        'aes_key' => 'GGCMzbtnlgXLcTfkWCqy4RI3vzqYYzYOICetP8P8RIf',
        'response_type' => 'array',
        'http' => [
            'throw' => false
        ],
    ]);
}
//文本安全内容检测
 $res = wx()->getClient()->postJson('wxa/msg_sec_check', [
                'openid' => $openId,
                'content' => $data['content'],
                'version' => 2,
                'scene' => 3,
 ]);
if($res->isFailed()){
        return error('出错了', 0, $res->toArray());
}
if ($res['errmsg'] != "ok" || $res['result']['suggest'] != "pass") {
      return error('内容存在违规', 0, $res->toArray());
 }
//媒体内容,有几张图就循环几次
foreach ($data['imgs'] as $img) {
        $res = wx()->getClient()->postJson('wxa/media_check_async', [
                        'media_url' => $img,
                        'media_type' => 2,
                        'version' => 2,
                        'scene' => 3,
                        'openid' => $openId
                ]);
         if($res->isFailed()){
               return error('出错了', 0, $res->toArray());
          }
           if ($res['errcode'] == 0) {
                //记录下trace_id
               $trace_id[] = $res['trace_id'];
          }
}
$data['check_status'] = 1 + count($trace_id); //几张图片就是1+几 判断合规后-- 达到1为正常展示
$post = UserPostModel::create($data);
if (!empty($trace_id)) {
      foreach ($trace_id as $trace){
                // 异步检测结果在 30 分钟内会推送到你的消息接收服务器
                cache([$trace => $post->id], 1800); //图片对应的post_id, 如果消息推送有违规,进行删除
       }
       return success('审核后展示');
}

//异步消息通知是否合规
public function wechatMsg(Request $request)
    {
        $app = wx();
        $symfony_request = new SymfonyRequest($request->get(), $request->post(), [], $request->cookie(), [], [], $request->rawBody());
        $symfony_request->headers = new HeaderBag($request->header());
        $app->setRequestFromSymfonyRequest($symfony_request);
        $server = $app->getServer();
        try {
            $message = $server->getDecryptedMessage();
            if ($message->Event === 'wxa_media_check') {
                $trace_id = $message->trace_id;
                $result = $message->result;
                if($result['suggest'] == 'pass') {
                    $postId = cache($trace_id);
                    if (!empty($postId)) {
                        UserPostModel::where('id', $postId)->decrement('check_status'); //这里自减,合格一个减去1,减到1刚好合规展示
                    }
                } else {
                    //进行帖子投诉
                    $postId = cache($trace_id);
                    if (!empty($postId)) {
                        $post = UserPostModel::find($postId);
                        if (!empty($post)) {
                            //命中标签枚举值,100 正常;20001 时政;20002 色情;20006 违法犯罪;21000 其他
                            $label = [
                                '100' => '正常',
                                '20001' => '政治',
                                '20002' => '色情',
                                '20006' => '违法',
                                '21000' => '其他'
                            ];
                            UserPostComplaintModel::create([
                                'type' => 2,
                                'user_id' => 1,
                                'to_user_id' => $post->user_id,
                                'post_id' => $postId,
                                'reason' => '微信安全检测结果"' . ($label[$result['label']] ?? '检测异常')
                            ]);
                        }

                    }
                }
            }

        }catch (\Exception $e){

        }
        $response = $server->serve();
        return response($response->getBody()); //注意这里,用框架自己的response包一下,返回正常的响应

    }

相关文章

  • 县级融媒体中心信息安全等级保护应该做几级

    县级融媒体中心信息安全等级保护应该做几级?覆盖哪些内容? 网络安全等级保护是我国网络与信息安全的重要防线,也是中国...

  • 理解Linux文件权限

    主要内容: 理解Linux安全性 使用Linux组 解读文件权限 1. Linux安全性 Linux安全系统的核心...

  • 图解HTTP阅读笔记4 HTTPS

    由于 HTTP 的不安全性,而在 HTTP 的基础之上组装了安全协议从而实现加密 HTTP 通信内容,使用的安全协...

  • 多线程异步安全,安全锁的问题

    本篇文章主要介绍多线程在异步时候的内部代码调用。以及加锁时候代码的调用。比较明显的使用地点是数据库操作。资源竞争。...

  • 多线程异步安全,安全锁的问题

    本篇文章主要介绍多线程在异步时候的内部代码调用。以及加锁时候代码的调用。比较明显的使用地点是数据库操作。资源竞争。...

  • 大学生安全教育心得体会-李玉婷

    主题为安全,让大家了解宿舍安全,校园安全,交通安全,家用电器使用安全等。

  • 产品角度谈滴滴顺风车如何优化

    存在问题: 女性单独乘车安全隐患问题,从各大媒体报道的内容结合滴滴自身发表的声明,出现安全事故主要表现在以下几个方...

  • 内容安全接口

    内容检测接口文档 class Check{ public function curlImg($path, $Acc...

  • 2021年技术总结

    应用安全 逆向方面,以及安全工具,安全架构方面是待补充内容 应用安全 - 应用安全概览[https://www.j...

  • iOS-多线程2-线程安全、OSSpinLock

    一. 安全隐患 利用多线程异步可以同时做不同的事情,效率更高,但是这样也会有安全隐患。 造成安全隐患的原因:一块资...

网友评论

      本文标题:Webman使用easywechat6的内容安全/媒体安全/异步

      本文链接:https://www.haomeiwen.com/subject/crgtkjtx.html