PATH:
home
/
lab2454c
/
omvstudio.com
/
app
/
Listeners
<?php namespace App\Listeners; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Laravel\Cashier\Events\WebhookReceived; use App\Models\User; use Illuminate\Support\Facades\Response; use Stripe\Stripe; use App\Models\ReferralPayment; class StripeEventListener { /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param object $event * @return void */ public function handle(WebhookReceived $event) { if ($event->payload['type'] === 'customer.subscription.updated') { // Handle the incoming event... $stripeId = $event->payload['data']['object']['customer']; $user = User::where('stripe_id', $stripeId)->first(); $referby = $user->referBy; if(isset($referby)) { Stripe::setApiKey(env('STRIPE_SECRET')); $commission_price = env('PAYMENT_PRICE_ONE_MONTH') * (env('COMMISSION_PERCENTAGE') / 100); \Stripe\Transfer::create([ 'amount' => round($commission_price*100), 'currency' => 'usd', 'destination' => env('STRIPE_CONNECTED_ACCOUNT'), 'transfer_group' => 'ORDER_80', ]); $connectedAccountBankToken = \Stripe\Token::create([ 'bank_account' => [ 'country' => 'US', 'currency' => 'usd', 'account_holder_type' => 'individual', 'account_holder_name' => $referby->bankDetail->account_holder_name ?? '', 'routing_number' => $referby->bankDetail->route_no ?? '', 'account_number' => $referby->bankDetail->account_no ?? '', ], ]); //dd($connectedAccountBankToken); $connectedAccountBankAdd = \Stripe\Account::createExternalAccount( env('STRIPE_CONNECTED_ACCOUNT'), ['external_account' => $connectedAccountBankToken->id] ); $connectedAccountCreateUpdate = \Stripe\Account::update( env('STRIPE_CONNECTED_ACCOUNT') ); //dd($connectedAccountBankAdd); $payoutObj = \Stripe\Payout::create([ 'amount' => round($commission_price*100), 'currency' => 'usd', 'destination' => $connectedAccountBankAdd, 'method' => 'standard', 'description' => 'Commission to ' .$referby->first_name .' for referral of '.$user->first_name.' from ' .env('APP_NAME'), ], ["stripe_account" => $connectedAccountBankAdd->account]); //dd($payoutObj); if (isset($payoutObj)) { $referralPayment = new ReferralPayment(); $referralPayment->commission_price = $commission_price; $referralPayment->commission_percentage = env('COMMISSION_PERCENTAGE'); $referralPayment->payout_id = $payoutObj->id; $referralPayment->transaction_id = $payoutObj->balance_transaction; $referralPayment->referralPaymentsReceiver()->associate($user->referby); $referralPayment->referralPaymentsGiver()->associate($user); $referralPayment->save(); } return new Response('Webhook Handled', 200); } } if ($event->payload['type'] === 'customer.subscription.deleted') { $stripeId = $event->payload['data']['object']['customer']; $user = User::where('stripe_id', $stripeId)->first(); $user->is_one_time = 1; $user->save(); return new Response('Subscription Cancel Webhook Handled', 200); } if ($event->payload['type'] === 'subscription_schedule.expiring') { $stripeId = $event->payload['data']['object']['customer']; $user = User::where('stripe_id', $stripeId)->first(); try { Mail::to($user->email)->queue(new \App\Mail\SubscriptionUpdateNotification($user)); } catch (\Exception $e) { $e->getMessage(); } return new Response('Subscription Update Notify Webhook Handled', 200); } } }
[-] StripeEventListener.php
[edit]
[+]
..