webhookCall->payload; // We have received a payment for an invoice and user should be upgraded to a paid plan based on order if ($payload['type'] === 'InvoiceReceivedPayment') { preg_match('/(?P\w+(\+\+)?)[ ](?P\d+)/i', $payload['metadata']['itemDesc'], $matches); $user = User::query()->where('email', '=', $payload['metadata']['buyerEmail'])->first(); if ($user) { User::updateUserRole($user->id, $matches['role']); User::updateUserRoleChangeDate($user->id, null, $matches['addYears']); Log::info('User upgraded to '.$matches['role'].' for BTCPay webhook: '.$payload['metadata']['buyerEmail']); } else { Log::error('User not found for BTCPay webhook: '.$payload['metadata']['buyerEmail']); } } } }