/affiliates-spark

An affiliates package for Laravel Spark that allows you to track referrals from affiliates and pay commission

Primary LanguagePHPMIT LicenseMIT

AffiliatesSpark

An affiliates package for Laravel Spark that allows you to track referrals from affiliates and pay commission.

Installation

Cashier 10+ / Laravel 6+ is supported in the 1.* releases. To use older versions, use one of the 0.* releases.

To get the latest version, simply require the project using Composer:

$ composer require keithbrink/affiliates-spark

Configuration

  1. In your User model, add the Affiliate trait:
use KeithBrink\AffiliatesSpark\Traits\Affiliate as AffiliateTrait;

class User extends SparkUser {
    use AffiliateTrait;
    ...
}
  1. In your SparkServiceProvider, add the following functions to handle adding affiliate IDs to the database:
Spark::createUsersWith('KeithBrink\AffiliatesSpark\Interactions\SaveAffiliateOnRegistration@createUser');
Spark::createTeamsWith('KeithBrink\AffiliatesSpark\Interactions\SaveAffiliateOnRegistration@createTeam');

or, if you want to add extra data to your user registration, use the interaction directly:

use KeithBrink\AffiliatesSpark\Interactions\SaveAffiliateOnRegistration;
...
Spark::createUsersWith(function ($request) {
    $extra_data = [
        ...
    ];

    $interaction = new SaveAffiliateOnRegistration;
    return $interaction->createUser($request, $extra_data);
});
  1. Add a link for affiliates in the menu dropdown. Edit \resources\views\vendor\spark\nav\user.blade.php, and under the Developer menu item (line 65), add the following code:
@if (Auth::user()->isAffiliate())
    @include('affiliates-spark::nav.affiliate-menu-item')
@endif
  1. Add a link for managing affiliates in the Kiosk menu. Edit your \resources\views\vendor\spark\kiosk.blade.php, and under the Metrics Link item (line 30), add the following code:
<!-- Affiliates Link -->
@include('affiliates-spark::nav.affiliate-menu-item-kiosk')

and in the same file under Tab Cards, add the following code:

<!-- Affiliates Tab -->
@include('affiliates-spark::nav.affiliate-tab-item-kiosk')
  1. Publish the package javascript with the command: php artisan vendor:publish --provider="KeithBrink\AffiliatesSpark\AffiliatesSparkServiceProvider" --tag=javascript. Then, in your /resources/js/app.js, require the package javascript:
require('./affiliates-spark/bootstrap');

Remember to compile the assets with npm run dev.

  1. Publish the package views with the command: php artisan vendor:publish --provider="KeithBrink\AffiliatesSpark\AffiliatesSparkServiceProvider" --tag=views. You should enter instructions for your affiliates in /resources/views/vendor/affiliates-spark/affiliates/instructions.blade.php.

  2. Run the package migrations with the command: php artisan migrate --package "keithbrink/affiliates-spark.

Optional Configuration

  1. If you would like your customers to see the discount they are receiving from an affiliate on the subcription page, in your resources/views/vendor/spark/settings/subscription/subscription-notice.blade.php file, after the @else statement (line 9), add:
@include('affiliates-spark::subscription.affiliate-discount')

Usage

  1. On any page that you would like to credit affiliates for sending people to, add the script: <script async="" src="/a-s/aff.js"></script>. You can also add the script to a different subdomain of the same top-level domain by making the src URL absolute rather than relative.

License

SegmentSpark is licensed under The MIT License (MIT).