From 3c30d2343ec573ca18e2496c4c558a4bbeccde16 Mon Sep 17 00:00:00 2001 From: Bobby Kostadinov Date: Sat, 6 Jul 2013 00:42:58 +0100 Subject: [PATCH] Add ChargifyStatement implementation The API integration for Chartify Statement was missing and is now added. Current implemented method: List Statements for a Subscription Documentation: http://docs.chargify.com/api-statements --- lib/Chargify.php | 1 + lib/ChargifyConnector.php | 25 ++++++++++++++++ lib/ChargifyStatement.php | 60 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 lib/ChargifyStatement.php diff --git a/lib/Chargify.php b/lib/Chargify.php index 54a20ca..32844a5 100644 --- a/lib/Chargify.php +++ b/lib/Chargify.php @@ -13,5 +13,6 @@ require_once('ChargifyQuantityBasedComponent.php'); require_once('ChargifySubscription.php'); require_once('ChargifyTransaction.php'); +require_once('ChargifyStatement.php'); require_once('ChargifyUsage.php'); ?> \ No newline at end of file diff --git a/lib/ChargifyConnector.php b/lib/ChargifyConnector.php index 32f1314..cfa1eae 100644 --- a/lib/ChargifyConnector.php +++ b/lib/ChargifyConnector.php @@ -787,5 +787,30 @@ public function getTransactionsBySubscriptionID($subscription_id, $options = arr } return $result; } + + public function retrieveStatementsBySubcsriptionID($subscription_id, $format='XML') { + $extension = strtoupper($format) == 'XML' ? '.xml' : '.json'; + $base_url = "/subscriptions/{$subscription_id}/statements" . $extension; + + $xml = $this->sendRequest($base_url, $format, 'GET'); + if ($xml->code == 200) { + return $xml->response; + } else { + $errors = new SimpleXMLElement((string)$xml->response); + throw new ChargifyValidationException($xml->code, $errors); + } + } + + public function getAllStatementsBySubscriptionID($subscription_id) + { + $xml = $this->retrieveStatementsBySubcsriptionID($subscription_id); + $result = array(); + $transactions = new SimpleXMLElement($xml); + foreach($transactions as $key => $element) + { + $result[] = new ChargifyStatement($element, $this->test_mode); + } + return $result; + } } ?> \ No newline at end of file diff --git a/lib/ChargifyStatement.php b/lib/ChargifyStatement.php new file mode 100644 index 0000000..c8114b4 --- /dev/null +++ b/lib/ChargifyStatement.php @@ -0,0 +1,60 @@ +connector = new ChargifyConnector($test_mode); + if ($cc_xml_node) { + //Load object dynamically and convert SimpleXMLElements into strings + foreach($cc_xml_node as $key => $element) { $this->{str_ireplace("-","_",$key)} = (string)$element; } + } + } + + + public function getAllBySubscriptionId($subscription_id = null) { + if ($subscription_id == null) { + $subscription_id = $this->subscription_id; + } + return $this->connector->getAllStatementsBySubscriptionId($subscription_id); + } + +} \ No newline at end of file