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 static function getSubscription($accountCode) { $uri = RecurlyClient::PATH_ACCOUNTS . urlencode($accountCode) . RecurlyClient::PATH_ACCOUNT_SUBSCRIPTION; $result = RecurlyClient::__sendRequest($uri, 'GET'); if (preg_match("/^2..\$/", $result->code)) { return RecurlyClient::__parse_xml($result->response, 'subscription'); } else { if ($result->code == '404') { return null; } else { throw new RecurlyException("Could not get subscription for {$accountCode}: {$result->response} -- ({$result->code})"); } } }
public function update() { $uri = RecurlyClient::PATH_ACCOUNTS . urlencode($this->account_code) . RecurlyClient::PATH_BILLING_INFO; $data = $this->getXml(); $result = RecurlyClient::__sendRequest($uri, 'PUT', $data); if (preg_match("/^2..\$/", $result->code)) { return RecurlyClient::__parse_xml($result->response, 'billing_info'); } else { if (strpos($result->response, '<errors>') > 0 && $result->code == 422) { throw new RecurlyValidationException($result->code, $result->response); } else { throw new RecurlyException("Could not update the billing information for {$this->account_code}: {$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 create() { $uri = RecurlyClient::PATH_TRANSACTIONS; $data = $this->getXml(); $result = RecurlyClient::__sendRequest($uri, 'POST', $data); if (preg_match("/^2..\$/", $result->code)) { return RecurlyClient::__parse_xml($result->response, 'transaction'); } else { if (strpos($result->response, '<errors>') > 0 && $result->code == 422) { throw new RecurlyValidationException($result->code, $result->response); } else { throw new RecurlyException("Could not create a transaction for {$this->account->account_code}: {$result->response} -- ({$result->code})"); } } }
public function RecurlyValidationException($http_code, $xml, $model = null) { $errors = RecurlyClient::__parse_xml($xml, 'error', true); $this->errors = is_array($errors) ? $errors : array($errors); $this->xml = $xml; $this->model = $model; $messages = array(); foreach ($this->errors as $err) { if ($err != null) { $msg = $err->message[strlen($err->message) - 1] != '.' ? $err->message : substr($err->message, 0, strlen($err->message) - 1); if ($err->field != null) { $msg = $err->field . ' ' . $msg; } $messages[] = $msg; } } $message = implode('. ', $messages) . '.'; parent::__construct($message, intval($http_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 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})"); } } }