2017-01-30 20:40:43 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Listeners;
|
2016-05-08 15:54:16 +02:00
|
|
|
|
|
|
|
use App\Events\PaymentWasCreated;
|
2017-01-30 20:40:43 +01:00
|
|
|
use Utils;
|
2016-05-08 15:54:16 +02:00
|
|
|
|
2016-07-03 18:11:58 +02:00
|
|
|
/**
|
2017-01-30 20:40:43 +01:00
|
|
|
* Class AnalyticsListener.
|
2016-07-03 18:11:58 +02:00
|
|
|
*/
|
2016-05-08 15:54:16 +02:00
|
|
|
class AnalyticsListener
|
|
|
|
{
|
2016-07-03 18:11:58 +02:00
|
|
|
/**
|
|
|
|
* @param PaymentWasCreated $event
|
|
|
|
*/
|
2016-05-08 15:54:16 +02:00
|
|
|
public function trackRevenue(PaymentWasCreated $event)
|
|
|
|
{
|
|
|
|
$payment = $event->payment;
|
|
|
|
$invoice = $payment->invoice;
|
|
|
|
$account = $payment->account;
|
2016-06-08 15:06:48 +02:00
|
|
|
|
2017-06-05 15:31:28 +02:00
|
|
|
$analyticsId = false;
|
|
|
|
|
|
|
|
if ($account->isNinjaAccount() || $account->account_key == NINJA_LICENSE_ACCOUNT_KEY) {
|
|
|
|
$analyticsId = env('ANALYTICS_KEY');
|
|
|
|
} else {
|
|
|
|
if (Utils::isNinja()) {
|
|
|
|
$analyticsId = $account->analytics_key;
|
|
|
|
} else {
|
|
|
|
$analyticsId = $account->analytics_key ?: env('ANALYTICS_KEY');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (! $analyticsId) {
|
2016-05-08 15:54:16 +02:00
|
|
|
return;
|
|
|
|
}
|
2016-06-08 15:06:48 +02:00
|
|
|
|
2016-05-08 15:54:16 +02:00
|
|
|
$client = $payment->client;
|
|
|
|
$amount = $payment->amount;
|
2016-07-28 11:10:57 +02:00
|
|
|
$item = $invoice->invoice_items->last()->product_key;
|
2017-10-14 20:08:33 +02:00
|
|
|
$currencyCode = $client->getCurrencyCode();
|
2016-06-08 15:06:48 +02:00
|
|
|
|
2017-11-28 09:44:46 +01:00
|
|
|
if ($account->isNinjaAccount() && \App::runningInConsole()) {
|
|
|
|
$item .= ' [R]';
|
|
|
|
}
|
|
|
|
|
2017-10-14 20:08:33 +02:00
|
|
|
$base = "v=1&tid={$analyticsId}&cid={$client->public_id}&cu={$currencyCode}&ti={$invoice->invoice_number}";
|
2016-06-08 15:06:48 +02:00
|
|
|
|
|
|
|
$url = $base . "&t=transaction&ta=ninja&tr={$amount}";
|
2016-05-08 15:54:16 +02:00
|
|
|
$this->sendAnalytics($url);
|
|
|
|
|
2016-07-28 11:10:57 +02:00
|
|
|
$url = $base . "&t=item&in={$item}&ip={$amount}&iq=1";
|
2016-05-08 15:54:16 +02:00
|
|
|
$this->sendAnalytics($url);
|
|
|
|
}
|
2016-06-08 15:06:48 +02:00
|
|
|
|
2016-07-03 18:11:58 +02:00
|
|
|
/**
|
|
|
|
* @param $data
|
|
|
|
*/
|
2016-05-08 15:54:16 +02:00
|
|
|
private function sendAnalytics($data)
|
|
|
|
{
|
2016-07-27 20:52:42 +02:00
|
|
|
$data = utf8_encode($data);
|
2016-05-08 15:54:16 +02:00
|
|
|
$curl = curl_init();
|
|
|
|
|
|
|
|
$opts = [
|
|
|
|
CURLOPT_URL => GOOGLE_ANALYITCS_URL,
|
|
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
|
|
CURLOPT_POST => 'POST',
|
|
|
|
CURLOPT_POSTFIELDS => $data,
|
|
|
|
];
|
|
|
|
|
|
|
|
curl_setopt_array($curl, $opts);
|
2016-07-27 15:31:52 +02:00
|
|
|
curl_exec($curl);
|
2016-05-08 15:54:16 +02:00
|
|
|
curl_close($curl);
|
|
|
|
}
|
2016-07-27 15:31:52 +02:00
|
|
|
}
|