public function handleWebHook($input)
 {
     $accountGateway = $this->accountGateway;
     $accountId = $accountGateway->account_id;
     foreach (array_keys($input) as $key) {
         if ('_id' == substr($key, -3)) {
             $objectType = substr($key, 0, -3);
             $objectId = $input[$key];
             break;
         }
     }
     if (!isset($objectType)) {
         throw new Exception('Could not find object id parameter');
     }
     if ($objectType == 'credit_card') {
         $paymentMethod = PaymentMethod::scope(false, $accountId)->where('source_reference', '=', $objectId)->first();
         if (!$paymentMethod) {
             throw new Exception('Unknown payment method');
         }
         $wepay = Utils::setupWePay($accountGateway);
         $source = $wepay->request('credit_card', ['client_id' => WEPAY_CLIENT_ID, 'client_secret' => WEPAY_CLIENT_SECRET, 'credit_card_id' => intval($objectId)]);
         if ($source->state == 'deleted') {
             $paymentMethod->delete();
         } else {
             //$this->paymentService->convertPaymentMethodFromWePay($source, null, $paymentMethod)->save();
         }
         return 'Processed successfully';
     } elseif ($objectType == 'account') {
         $config = $accountGateway->getConfig();
         if ($config->accountId != $objectId) {
             throw new Exception('Unknown account');
         }
         $wepay = Utils::setupWePay($accountGateway);
         $wepayAccount = $wepay->request('account', ['account_id' => intval($objectId)]);
         if ($wepayAccount->state == 'deleted') {
             $accountGateway->delete();
         } else {
             $config->state = $wepayAccount->state;
             $accountGateway->setConfig($config);
             $accountGateway->save();
         }
         return ['message' => 'Processed successfully'];
     } elseif ($objectType == 'checkout') {
         $payment = Payment::scope(false, $accountId)->where('transaction_reference', '=', $objectId)->first();
         if (!$payment) {
             throw new Exception('Unknown payment');
         }
         $wepay = Utils::setupWePay($accountGateway);
         $checkout = $wepay->request('checkout', ['checkout_id' => intval($objectId)]);
         if ($checkout->state == 'refunded') {
             $payment->recordRefund();
         } elseif (!empty($checkout->refund) && !empty($checkout->refund->amount_refunded) && $checkout->refund->amount_refunded - $payment->refunded > 0) {
             $payment->recordRefund($checkout->refund->amount_refunded - $payment->refunded);
         }
         if ($checkout->state == 'captured') {
             $payment->markComplete();
         } elseif ($checkout->state == 'cancelled') {
             $payment->markCancelled();
         } elseif ($checkout->state == 'failed') {
             $payment->markFailed();
         }
         return 'Processed successfully';
     } else {
         return 'Ignoring event';
     }
 }