public static function changeSubscription($accountCode, $timeframe = 'now', $newPlanCode = null, $newQuantity = null, $newUnitAmount = null, $addOns = null) { error_log('<br>quant:' . $newQuantity); if (!($timeframe == 'now' || $timeframe == 'renewal')) { throw new RecurlyException("The timeframe must be 'now' or 'renewal'."); } $uri = RecurlyClient::PATH_ACCOUNTS . urlencode($accountCode) . RecurlyClient::PATH_ACCOUNT_SUBSCRIPTION; $data = RecurlySubscription::getChangeSubscriptionXml($timeframe, $newPlanCode, $newQuantity, $newUnitAmount, $addOns); $result = RecurlyClient::__sendRequest($uri, 'PUT', $data); if (preg_match("/^2..\$/", $result->code)) { return true; } else { if (strpos($result->response, '<errors>') > 0 && $result->code == 422) { throw new RecurlyValidationException($result->code, $result->response); } else { throw new RecurlyException("Could not change the subscription for {$accountCode}: {$result->response} ({$result->code})"); } } }