Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
WIKIPEDIA
/
imaliapi
/
app
/
Classes
:
PushNotification.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace App\Classes; use Google\Client as GoogleClient; use Illuminate\Support\Facades\Log; class PushNotification { private $icon; private $image; private $title; private $shortMsg; private $userFirebaseToken; private $clickAction; public function __construct( $title, $shortMsg, $userFirebaseToken, $clickAction = 'com.imali.payapp.payment_NOTICIA', $image = '', $icon = 'ic_imali_logo_verde_01', ) { $this->title = $title; $this->shortMsg = $shortMsg; $this->userFirebaseToken = $userFirebaseToken; $this->clickAction = $clickAction; $this->icon = $icon; } //? Send Push notification public function sendPush($data = array('sms' => '', 'route' => 'NOTICIA', 'terminal' => 'firebase')) { if (!$this->userFirebaseToken) { Log::info('[ERROR_SEND_PUSH_PAYMENT_PUSH]', ['error' => 'Firebase Token Vazio']); return false; } $notification = array( 'title' => $this->title, 'body' => $this->shortMsg, 'icon' => $this->icon, 'image' => $this->image, 'click_action' => $this->clickAction, 'color' => '#ffffff' ); $pushResp = $this->pushNotifification($this->userFirebaseToken, $notification, $data); if (isset($pushResp['name'])) { Log::info('[SUCCESS_SEND_PUSH_PAYMENT_PUSH]', ['data' => $pushResp]); return true; } else { Log::info('[ERROR_SEND_PUSH_PAYMENT_PUSH]', ['error' => $pushResp]); return false; } } private function getAccessToken() { $client = new GoogleClient(); // $client->setAuthConfig(storage_path('app/imaliapp-5155e-firebase-adminsdk-gv3wp-2713d42c5b.json')); // Caminho do arquivo JSON da conta de serviço $client->setAuthConfig($this->getFirebaseAuthConf()); // Caminho do arquivo JSON da conta de serviço $client->addScope($_ENV['FIREBASE_MESSAGE_SCOPE']); $client->setAccessType('offline'); $token = $client->fetchAccessTokenWithAssertion(); return $token['access_token']; } private function getFirebaseAuthConf() { return [ "type" => $_ENV['TYPE'], "project_id" => $_ENV['PROJECT_ID'], "private_key_id" => $_ENV['PRIVATE_KEY_ID'], "private_key" => $_ENV['PRIVATE_KEY'], "client_email" => $_ENV['CLIENT_EMAIL'], "client_id" => $_ENV['CLIENT_ID'], "auth_uri" => $_ENV['AUTH_URI'], "token_uri" => $_ENV['TOKEN_URI'], "auth_provider_x509_cert_url" => $_ENV['AUTH_PROVIDER_X509_CERT_URL'], "client_x509_cert_url" => $_ENV['CLIENT_X509_CERT_URL'], "universe_domain" => $_ENV['UNIVERSE_DOMAIN'] ]; } public function pushNotifification($token, $notification = array(), $data = array()) { $fields = [ 'message' => [ 'token' => $token, 'android' => [ 'notification' => $notification ], "apns" => [ "payload" => [ "aps" => [ "category" => "NEW_MESSAGE_CATEGORY" ] ] ], 'data' => $this->convert_array_values_to_string($data) ?? [], ] ]; $headers = array('Authorization: Bearer ' . $this->getAccessToken(), 'Content-Type: application/json'); $url = $_ENV['FIREBASE_NEW_URL']; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($fields)); $result = curl_exec($curl); curl_close($curl); return json_decode($result, true); } public function setShortMsg($shortMsg) { $this->shortMsg = $shortMsg; } public function setClickAction($clickAction) { $this->clickAction = $clickAction; } public function setTitle($title) { $this->title = $title; } public function setFirebaseToken($userFirebaseToken) { $this->userFirebaseToken = $userFirebaseToken; } private function convert_array_values_to_string($array) { return array_map(function ($value) { return (string) $value; // Convert each value to a string }, array_combine(array_map('strval', array_keys($array)), $array)); } }