Viewing File: /home/ubuntu/vedadeals-backend-base/app/Jobs/SendPayinCallbackJob.php

<?php

namespace App\Jobs;

use Exception;
use Illuminate\Bus\Queueable;
use Illuminate\Support\Facades\Http;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Contracts\Queue\ShouldBeUnique;

class SendPayinCallbackJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public $payload;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($payload)
    {
        $this->payload = $payload;

        $this->onQueue('payin_callback');
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        try {

            $ref_id = $this->payload['clientRefId'] ?? 'NO-REF-ID-FOUND';
            $logs[] = __('messages.sending_payin_callback', ['ref_id' => $ref_id, 'time' => current_time()]);
        
            throw_if(! $api_url = config('app.mobileware.api_url'), new Exception(__('messages.payin_callback_url_not_configured')));
        
            $response = Http::post($api_url, $this->payload);
            $status_code = $response->status();
            $response_body = $response->json();
        
            throw_if(
                ! $response->successful() || ! ($response_body['success'] ?? false),
                new Exception(__('messages.send_payin_callback_failed', [
                    'status' => $status_code,
                    'message' => $response_body['message'] ?? ($response_body['error'] ?? __('messages.na'))
                ]))
            );

            $logs[] = __('messages.send_payin_callback_success', ['time' => current_time()]);
        } catch (Exception $e) {
            $logs[] = __('messages.send_payin_callback_error', ['message' => $e->getMessage(), 'time' => current_time()]);
        }

        info($logs);

        return true;
    }
}
Back to Directory File Manager