sparrow-living/laravel-mixpanel

为 Laravel 提供的 MixPanel 包装器。已分支以支持 Laravel 10。

1.0.0 2023-04-07 19:30 UTC

This package is not auto-updated.

Last update: 2024-09-22 01:01:59 UTC


README

Scrutinizer Coveralls GitHub (pre-)release Packagist GitHub license

Mixpanel for Laravel masthead image.

赞助商

我们感谢以下赞助商的慷慨赞助。请花点时间了解一下。

功能

  • 异步数据传输到 Mixpanel 服务,防止 Mixpanel 停机或响应缓慢时对应用程序造成延迟。
  • 直接安装和配置到您的 Laravel 应用中,开箱即用跟踪最常见的事件。
  • 简单的 Stripe 集成,允许您在用户级别跟踪收入。
  • 前端就绪的 Mixpanel JS 库,可用于 Laravel Elixir 包含或 Blade 模板。

要求和兼容性

  • PHP >= 7.2
  • Laravel >= 8.0

旧版本

安装

  1. 安装包
    composer require genealabs/laravel-mixpanel
  2. 将您的 Mixpanel API 令牌添加到 .env 文件中
    MIXPANEL_TOKEN=xxxxxxxxxxxxxxxxxxxxxx
  3. 仅当您需要更改默认的 MixPanel 主机时,请添加 MixPanel 主机域名
    MIXPANEL_TOKEN=xxxxxxxxxxxxxxxxxxxxxx

配置

默认值

  • services.mixpanel.host: 从您的 .env 文件中拉取 'MIXPANEL_HOST' 值。
  • services.mixpanel.token: 从您的 .env 文件中拉取 'MIXPANEL_TOKEN' 值。
  • services.mixpanel.enable-default-tracking: (默认: true) 启用或禁用 Laravel 用户事件跟踪。
  • services.mixpanel.consumer: (默认: socket) 设置您想使用的 Guzzle 适配器。
  • services.mixpanel.connect-timeout: (默认: 2) 设置在连接超时之前经过的秒数。
  • services.mixpanel.timeout: (默认: 2) 设置事件跟踪超时之前经过的秒数。
  • services.mixpanel.data_callback_class: (默认: null) 操作传递给 Mixpanel 的 track 事件的请求数据。

升级说明

版本 0.7.0 for Laravel 5.5

  • /config/app.php 中删除服务提供者。在 Laravel 5.5 中,服务提供者现在是自动发现的。

页面浏览量

  • 已删除页面浏览量跟踪,以支持 Mixpanel 内置的 Autotrack 功能,该功能跟踪所有页面浏览量。要启用它,请访问您的 Mixpanel 仪表板,点击 应用程序 > Autotrack > Web > 等。 并启用 Autotracking。

用法

MixPanel 已加载到 IoC 作为单例。这意味着您不需要手动调用 $mixPanel::getInstance(),如 MixPanel 文档中所述。这已经在 ServiceProvider 中为您完成了。

常见的用户事件自动记录

  • 用户注册
  • 用户删除
  • 用户登录
  • 用户登录失败
  • 用户登出
  • Cashier 订阅
  • Cashier 提交支付信息
  • Cashier 订阅计划更改
  • Cashier 取消订阅

要创建自定义事件,只需通过 DI 从 IoC 获取 MixPanel

use GeneaLabs\LaravelMixpanel\LaravelMixpanel;

class MyClass
{
    protected $mixPanel;

    public function __construct(LaravelMixPanel $mixPanel)
    {
        $this->mixPanel = $mixPanel;
    }
}

如果在某些情况下 DI 不切实际,您还可以手动从 IoC 中检索它

$mixPanel = app('mixpanel'); // using app helper
$mixPanel = Mixpanel::getFacadeRoot(); // using facade

然后您可以对 MixPanel API 进行常规调用

  • $mixPanel->identify($user->id);

  • $mixPanel->track('User just paid!');

  • $mixPanel->people->trackCharge($user->id, '9.99');

  • $mixPanel->people->set($user->id, [$data]);

    等等 ...

    Stripe Web-Hook

    如果您想利用 Stripe 网络钩子并跟踪每个用户的收入,您应该安装 Cashier: https://www.laravel.com/docs/5.5/billing

    完成此操作后,在 /app/Http/Middleware/VerifyCsrfToken.php 中排除网络钩子端点的 CSRF 验证

        protected $except = [
            'genealabs/laravel-mixpanel/stripe',
        ];

    剩下的唯一步骤是将网络钩子注册到 Stripe:登录您的 Stripe 账户:https://dashboard.stripe.com/dashboard,并打开您的账户设置的 webhook 标签页

    输入您的 MixPanel 网络钩子 URL,类似于以下内容:http://<your server.com>/genealabs/laravel-mixpanel/stripescreen shot 2015-05-31 at 1 35 01 pm

    如果您实际上正在运行实时(否则请设置为测试模式并在上线时更新),请务必选择“实时”。另外,选择“发送我所有事件”以确保 Laravel Mixpanel 可以充分利用 Stripe 数据。

    JavaScript 事件 & 自动跟踪

    Blade 模板(推荐)

    首先发布必要的资源

    php artisan mixpanel:publish --assets

    然后添加以下内容到布局模板的头部部分(它已经为您执行了初始化调用,使用 .env 文件中的令牌)

    @include('genealabs-laravel-mixpanel::partials.mixpanel')

    Laravel Elixir

    将以下行添加到您的 /resources/js/app.js(或等效),并记得用您的实际令牌替换 YOUR_MIXPANEL_TOKEN

    require('./../../../public/genealabs-laravel-mixpanel/js/mixpanel.js');
    mixpanel.init("YOUR_MIXPANEL_TOKEN");

Laravel 集成

默认情况下,它将记录任何人都会想要跟踪的常见事件。另外,如果使用 Laravel 伴随的默认 $user->name 字段,它将拆分名称,将最后一个单词用作姓氏,其余的用作名字。否则,它将在用户表中查找 first_namelast_name 字段。

  • 用户注册

    Track:
      User:
        - Status: Registered
    People:
      - $first_name: <user's first name>
      - $last_name: <user's last name>
      - $email: <user's email address>
      - $created: <date user registered>
    
  • 用户更新

    People:
      - $first_name: <user's first name>
      - $last_name: <user's last name>
      - $email: <user's email address>
      - $created: <date user registered>
    
  • 用户删除

    Track:
      User:
        - Status: Deactivated
    
  • 用户恢复(从软删除)

    Track:
      User:
        - Status: Reactivated
    
  • 用户登录

    Track:
      Session:
        - Status: Logged In
    People:
      - $first_name: <user's first name>
      - $last_name: <user's last name>
      - $email: <user's email address>
      - $created: <date user registered>
    
  • 用户登录失败

    Track:
      Session:
        - Status: Login Failed
    People:
      - $first_name: <user's first name>
      - $last_name: <user's last name>
      - $email: <user's email address>
      - $created: <date user registered>
    
  • 用户登出

    Track:
      Session:
        - Status: Logged Out
    

跟踪数据操作

如果您需要更改或添加正在跟踪的数据,创建一个实现 \GeneaLabs\LaravelMixpanel\Interfaces\DataCallback 的类

<?php

namespace App;

use GeneaLabs\LaravelMixpanel\Interfaces\DataCallback;

class MixpanelUserData implements DataCallback
{
    public function process(array $data = []) : array
    {
        $data["test"] = "value";

        return $data;
    }
}

然后在您的 services 配置中注册此类

    'mixpanel' => [
      // ...
        "data_callback_class" => \App\MixpanelUserData::class,
    ]

Stripe 集成

许多 L5 网站都在使用 Cashier 来管理他们的订阅。此包创建了一个 API webhook 端点,以在 MixPanel 中记录重要的支付分析,以帮助识别客户流失。

默认情况下,它将为您记录以下 Stripe 事件到 MixPanel

费用

  • 授权费用(当只授权支付未来收费日期的费用时)

    Track:
      Payment:
        - Status: Authorized
        - Amount: <amount authorized>
    
  • 捕获费用(当完成先前授权的费用时)

    Track:
      Payment:
        - Status: Captured
        - Amount: <amount of payment>
    People TrackCharge: <amount of intended payment>
    
  • 完成费用

    Track:
      Payment:
        - Status: Successful
        - Amount: <amount of payment>
    People TrackCharge: <amount of payment>
    
  • 退款费用

    Track:
      Payment:
        - Status: Refunded
        - Amount: <amount of refund>
    People TrackCharge: -<amount of refund>
    
  • 失败的费用

    Track:
      Payment:
        - Status: Failed
        - Amount: <amount of intended payment>
    

订阅

  • 客户订阅

    Track:
      Subscription:
        - Status: Created
    People:
      - Subscription: <plan name>
    
  • 客户退订

    Track:
      Subscription:
        - Status: Canceled
        - Upgraded: false
      Churn! :(
    People:
      - Subscription: None
      - Churned: <date canceled>
      - Plan When Churned: <subscribed plan when canceled>
      - Paid Lifetime: <number of days from subscription to cancelation> days
    
  • 客户开始试用

    Track:
      Subscription:
        - Status: Trial
    People:
      - Subscription: Trial
    
  • 客户升级计划

    Track:
      Subscription:
        - Upgraded: true
      Unchurn! :-)
    People:
      - Subscription: <new plan name>
    
  • 客户降级计划(根据与之前计划的美元价值比较)

    Track:
      Subscription:
        - Upgraded: false
      Churn! :-(
    People:
      - Subscription: <new plan name>
      - Churned: <date plan was downgraded>
      - Plan When Churned: <plan name prior to downgrading>
    

详细说明

对质量的承诺

在包开发期间,我尽可能采用良好的设计和开发实践,以确保这个包尽可能好。我的包开发清单包括

  • ✅ 使用单元测试尽可能达到接近 100% 的代码覆盖率。
  • ✅ 消除 SensioLabs Insight 和 Scrutinizer 识别的任何问题。
  • ✅ 完全符合 PSR1、PSR2 和 PSR4。
  • ✅ 在 README.md 中包含全面的文档。
  • ✅ 提供符合在 http://keepachangelog.com 中概述的格式的最新 CHANGELOG.md。
  • ✅ 在所有代码中没有任何 PHPMD 或 PHPCS 警告。

贡献

请遵守和尊重包含在内的所有行为准则的各个方面 https://github.com/GeneaLabs/laravel-model-caching/blob/master/CODE_OF_CONDUCT.md

报告问题

在报告问题时,请尽可能完整地填写所附的模板。信息不完整的问题可能会被忽略或关闭,如果包含的信息不足以采取行动。

提交Pull请求

请查看贡献指南 https://github.com/GeneaLabs/laravel-model-caching/blob/master/CONTRIBUTING.md。只有符合所有标准的Pull请求才会被接受。

❤️开源软件 - 给 ⭐️

我们已将出色的symfony/thanks composer包作为开发依赖项包含在内。通过为使用的包点赞来告知您的操作系统包维护者您对他们的感激之情。只需在安装此包后运行composer thanks即可。(不必担心,由于它是开发依赖项,它不会安装在您的生产环境中。)