public static function getPlan($planCode) { $uri = RecurlyClient::PATH_PLANS . urlencode($planCode); $result = RecurlyClient::__sendRequest($uri, 'GET'); if (preg_match("/^2..\$/", $result->code)) { return RecurlyClient::__parse_xml($result->response, 'plan'); } else { if ($result->code == '404') { return null; } else { throw new RecurlyException("Could not get subscription plan {$planCode}: {$result->response} -- ({$result->code})"); } } }
public function clear() { $uri = RecurlyClient::PATH_ACCOUNTS . urlencode($this->account_code) . RecurlyClient::PATH_BILLING_INFO; $result = RecurlyClient::__sendRequest($uri, 'DELETE'); 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 clear the billing info for {$this->accountCode}: {$result->response} ({$result->code})"); } } }
public static function createInvoice($accountCode) { $uri = RecurlyClient::PATH_ACCOUNTS . urlencode($accountCode) . RecurlyClient::PATH_INVOICES; $result = RecurlyClient::__sendRequest($uri, 'POST'); if (preg_match("/^2..\$/", $result->code)) { return RecurlyClient::__parse_xml($result->response, 'invoice'); } else { if ($result->code == 422) { return null; // No charges or credits to invoice. } else { throw new RecurlyException("Could not create a charge for {$account_code}: {$result->response} ({$result->code})"); } } }
public function void() { $uri = RecurlyClient::PATH_TRANSACTIONS . urlencode($this->id); $uri .= '?action=void'; print $uri; $result = RecurlyClient::__sendRequest($uri, 'DELETE'); 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 void the transaction: {$result->response} ({$result->code})"); } } }
public function refund($amount_in_cents = null) { $uri = RecurlyClient::PATH_TRANSACTIONS . urlencode($this->id); if (!is_null($amount_in_cents)) { $uri .= '?amount_in_cents=' . $amount_in_cents; } $result = RecurlyClient::__sendRequest($uri, 'DELETE'); 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 refund the transaction: {$result->response} ({$result->code})"); } } }
public static function getResults() { $model_type = $_GET['type']; self::_validateQueryString($_GET['confirm'], $model_type, $_GET['status'], $_GET['result']); $uri = RecurlyClient::PATH_TRANSPARENT . RecurlyClient::PATH_TRANSPARENT_RESULTS . $_GET['result']; $result = RecurlyClient::__sendRequest($uri); if (preg_match("/^2..\$/", $result->code)) { $model = RecurlyClient::__parse_xml($result->response, $model_type, true); return $model; } else { if (strpos($result->response, '<errors>') > 0 && $result->code == 422) { $model = RecurlyClient::__parse_xml($result->response, $model_type, true); throw new RecurlyValidationException($result->code, $result->response, $model); } else { if (strpos($result->response, '<errors>') > 0 && $result->code == 404) { $model = RecurlyClient::__parse_xml($result->response, 'error', true); throw new RecurlyValidationException($result->code, $result->response, $model); } else { throw new RecurlyException("Could not retrieve results with result key: {$_GET['result']} (Status: {$_GET['status']})"); } } } }
private function _RecurlyRequest($type) { // because recurly doesn't expose through their api some of the functions // that we would like to utilize…like pending charges, we have simple wrapper here // to help us get that data out of securely. $user_id = $this->account->id; switch ($type) { case "transactions": $path = Recurly_Client::PATH_TRANSACTIONS; $object = 'transaction'; $exception = "Could not list transactions for account {$user_id}:"; break; case "pendingcharges": $path = RecurlyClient::PATH_ACCOUNT_CHARGES . "?show=pending"; $object = 'charge'; $exception = "Could not list charges for account {$user_id}:"; break; case "invoices": $path = RecurlyClient::PATH_ACCOUNT_INVOICES; $object = 'invoice'; $exception = "Could not list invoices for account {$user_id}:"; break; case "charges": $path = RecurlyClient::PATH_ACCOUNT_CHARGES; $object = 'charge'; $exception = "Could not list charges for account {$user_id}:"; break; case "credits": $path = RecurlyClient::PATH_ACCOUNT_CREDITS; $object = 'credit'; $exception = "Could not list charges for account {$user_id}:"; break; } $uri = RecurlyClient::PATH_ACCOUNTS . urlencode($this->account->account_code) . $path; $result = RecurlyClient::__sendRequest($uri); if (preg_match("/^2..\$/", $result->code) || RECURLY_ENVIRONMENT == 'sandbox') { $results = RecurlyClient::__parse_xml($result->response, $object); return $results != null && !is_array($results) ? array($results) : $results; } else { if (strpos($result->response, '<errors>') > 0 && $result->code == 422) { throw new RecurlyValidationException($result->code, $result->response); } else { throw new RecurlyException($exception . " {$result->response} ({$result->code})"); } } }
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})"); } } }
public function listInvoices() { $uri = RecurlyClient::PATH_ACCOUNTS . urlencode($this->account_code) . RecurlyClient::PATH_ACCOUNT_INVOICES; $result = RecurlyClient::__sendRequest($uri); if (preg_match("/^2..\$/", $result->code)) { $invoices = RecurlyClient::__parse_xml($result->response, 'invoice'); return $invoices != null && !is_array($invoices) ? array($invoices) : $invoices; } else { if (strpos($result->response, '<errors>') > 0 && $result->code == 422) { throw new RecurlyValidationException($result->code, $result->response); } else { throw new RecurlyException("Could not list invoices for account {$this->account_code}: {$result->response} ({$result->code})"); } } }