// Save account data locally which will create an account id and/or update local values Cart66Common::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Account data validated and saved for account id: " . $account->id); try { $spreedlyCard = new SpreedlyCreditCard(); $spreedlyCard->hydrateFromCheckout(); $subscriptionId = Cart66Session::get('Cart66Cart')->getSpreedlySubscriptionId(); $productId = Cart66Session::get('Cart66Cart')->getSpreedlyProductId(); Cart66Common::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] About to create a new spreedly account subscription: Account ID: {$account->id} | Subscription ID: {$subscriptionId}"); $accountSubscription = new Cart66AccountSubscription(); $accountSubscription->createSpreedlySubscription($account->id, $subscriptionId, $productId, $spreedlyCard); } catch (SpreedlyException $e) { Cart66Common::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Failed to checkout: " . $e->getCode() . ' ' . $e->getMessage()); $errors['spreedly failed'] = $e->getMessage(); $accountSubscription->refresh(); if (empty($accountSubscription->subscriberToken)) { Cart66Common::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] About to delete local account after spreedly failure: " . print_r($account->getData(), true)); $account->deleteMe(); } else { // Set the subscriber token in the session for repeat attempts to create the subscription Cart66Session::set('Cart66SubscriberToken', $account->subscriberToken); } if (count($errors)) { try { Cart66Common::log('[' . basename(__FILE__) . ' - line ' . __LINE__ . "] Unable to process order: " . print_r($errors, true)); throw new Cart66Exception(__('Your order could not be processed for the following reasons:', 'cart66'), 66500); } catch (Cart66Exception $e) { $exception = Cart66Exception::exceptionMessages($e->getCode(), $e->getMessage(), $errors); echo Cart66Common::getView('views/error-messages.php', $exception); } } }