| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | <?phpnamespace Modules\Callback\Services;use Exception;use GuzzleHttp\Client;/** * 抖音数据回调---新版---使用事件管理模式 * ios加桌和普通抖音事件管理是一个回传逻辑 * 开发文档:https://event-manager.oceanengine.com/docs/8650/h5_api_docs/ */class TiktokEventReportService{    /**     * 充值用户事件类型     */    protected $charge_event_type = 'active_pay';    /**     * 注册用户事件类型     */    protected $register_event_type = 'active_register';    /**     * 激活事件类型     */    protected $active_event_type = 'active';    /**     * 次留事件类型     */    protected $rentention_event_type = 'next_day_open';    /**     * 付费ROI事件类型     */    protected $purchase_roi_event_type = 'purchase_roi';    /**     * 充值用户数据上报地址     */    protected $report_url = 'https://analytics.oceanengine.com/api/v2/conversion';    private $user;    public function __construct()    {    }    /**     * 付费上报     */    public function reportCharge($user, $amount=0)    {        return $this->report($this->report_url, [            'event_type' => $this->charge_event_type,            'context' => [                'ad' => [                    'callback' => $user->callback                ]            ],            'timestamp' => time()        ]);    }    /**     * 注册上报     */    public function reportRegister(DouyinUser $user)    {        return $this->report($this->report_url, [            'event_type' => $this->register_event_type,            'context' => [                'ad' => [                    'callback' => $user->callback                ]            ],            'timestamp' => time()        ]);    }    /**     * 次日留存上报     */    public function reportRentention()    {        return $this->report($this->report_url, [            'event_type' => $this->rentention_event_type,            'context' => [                'ad' => [                    'callback' => $this->user->callback                ]            ],            'timestamp' => time()        ]);    }    public function reportAddDesktop()    {        return [];    }    /**     * 激活上报     */    public function reportActive($user)    {        return $this->report($this->report_url, [            'event_type' => $this->active_event_type,            'context' => [                'ad' => [                    'callback' => $user->callback                ]            ],            'timestamp' => time()        ]);    }    /**     * 数据上报     */    public function report(string $url, array $query_params)    {        $result = false;        $content = '';        try {            myLog('tiktok_event_report')->info('report_param_event_tiktok:' . json_encode($query_params));            $client = new Client(['timeout' => 4]);            $response = $client->request('post', $url, ['json' => $query_params]);            $content = $response->getBody()->getContents();            myLog('tiktok_event_report')->info('report_result_event_tiktok:' . json_encode($content, true));            $status_code = $response->getStatusCode();            if ($status_code == 200) {                $result = true;            } else {                $result = false;            }        } catch (Exception $e) {            myLog('tiktok_event_report')->error('event_tiktok_ept:' . json_encode($query_params) . ' ept:' . $e->getMessage());        } finally {            $query_params['report_url'] = $url;            return [                'result' => $result,                'content' => $content,                'query_params' => $query_params,            ];        }    }}
 |