dev-master
9999999-dev https://github.com/zipmark/zipmark-phpPHP Client for Zipmark API
MIT
The Requires
- php >=5.3.0
zipmark
Wallogit.com
2017 © Pedro Peláez
PHP Client for Zipmark API
The Zipmark PHP Client library is used to interact with Zipmark's API., (*1)
The easiest way to download and install the Zipmark PHP Client is with git:, (*2)
git clone git://github.com/zipmark/zipmark-php.git /path/to/zipmark/client
This library depends on PHP 5.3.6 (or higher) and libcurl compiled with OpenSSL support. phpinfo(); should show information like the following:, (*3)
curl cURL support => enabled cURL Information => 7.21.4 Age => 3 Features AsynchDNS => Yes Debug => No GSS-Negotiate => Yes IDN => No IPv6 => Yes Largefile => Yes NTLM => Yes SPNEGO => No SSL => Yes SSPI => No krb4 => No libz => Yes CharConv => No Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtsp, smtp, smtps, telnet, tftp Host => universal-apple-darwin11.0 SSL Version => OpenSSL/0.9.8r ZLib Version => 1.2.5 openssl OpenSSL support => enabled OpenSSL Library Version => OpenSSL 0.9.8r 8 Feb 2011 OpenSSL Header Version => OpenSSL 0.9.8r 8 Feb 2011
The Zipmark PHP Client supports both global and local client credentials. The client is loaded by requiring a single file:, (*4)
require_once('./lib/zipmark.php');
The Zipmark PHP client supports objects and lists of objects., (*5)
$client = new Zipmark_Client("Application Identifier", "Application Secret");
Application Identifier and Application Secret should be replaced with the vendor application identifier and secret provided by Zipmark., (*6)
The Zipmark PHP client will access Zipmark's sandbox environment by default. To direct traffic to Zipmark's production environment, enable production mode with the following:, (*7)
$client->setProduction(true);
$bill = $client->bills->get("Bill ID");
$resources = $client->resources();
Resources will contain an array of all available resources., (*8)
Create a bill object, set required attributes, send it to Zipmark, (*9)
$bill_data = array(
'identifier' => 'abc123', // Unique Bill Identifier
'amount_cents' => 100, // Bill amount in cents
'bill_template_id' => 'UUID', // UUID of Bill Template from Zipmark
'memo' => 'Memo to customer', // Text memo shown to customer
'date' => 'YYYY-MM-DD', // Date of Bill issuance
'content' => '{}', // JSON String with Bill content - rendered with template
);
$bill = $client->bills->create($bill_data);
As an alternative, it is possible to build an object first and then save it afterwards, (*10)
$bill_data = array(
'identifier' => 'abc123', // Unique Bill Identifier
'amount_cents' => 100, // Bill amount in cents
'bill_template_id' => 'UUID', // UUID of Bill Template from Zipmark
'memo' => 'Memo to customer', // Text memo shown to customer
'date' => 'YYYY-MM-DD', // Date of Bill issuance
'content' => '{}', // JSON String with Bill content - rendered with template
);
$bill = $client->bills->build($bill_data);
$bill->save();
Get the bill, make a change, send it back to Zipmark, (*11)
$bill = $client->bills->get("Bill ID");
$bill->memo = "Please pay with Zipmark";
$bill->save();
Retrieve a list of all bills., (*12)
$bills = $client->bills->getAll();
Get the number of objects available., (*13)
$bills->count();
The Zipmark_Iterator class understands Zipmark's pagination system. It loads one page of objects at a time and will retrieve more objects as necessary while iterating through the objects., (*14)
$bills = $client->bills->getAll(); $iterator = new Zipmark_Iterator($bills);
Get the current object (returns null if the iterator has passed either end of the list), (*15)
$bill = $iterator->current();
Get the next/previous object (returns null if the next/previous object would pass either end of the list), (*16)
$bill = $iterator->next(); $bill = $iterator->prev();
The Zipmark_Iterator can be used to iterate through all objects of a given resource type., (*17)
$iterator = new Zipmark_Iterator($client->bills->getAll());
foreach ($iterator as $bill) {
print "Bill " . $iterator->key() . " is ID ";
print $bill->id . " for " . $bill->amount_cents . " cents.\n";
}
Which would result in output similar to:, (*18)
Bill 0 is ID 3cf1290adc08b28899dd7c7e263cca4dc9a2 for 1234 cents Bill 1 is ID 3cf1b7bc6cfbaeb6b8b2a6001037d284c918 for 100 cents Bill 2 is ID 3cea3cab019984233228c2eaff0edcbbb733 for 3456 cents Bill 3 is ID 3ceaf09259f883159622aa4401ab7d06d45a for 2345 cents Bill 4 is ID 3cea079b288120ffb129dfb62ae18de3dfee for 1234 cents Bill 5 is ID 3ce95db62b1069e59e122c515eb191c70987 for 12345 cents Bill 6 is ID 3ce627f7559478bee1129dae3203e373f0df for 1030 cents Bill 7 is ID 3ce69e91d68417d1e9892ca903eba8c66a2e for 1030 cents Bill 8 is ID 3ce6eb4a5b433f3e9b073d15a5ff725dec46 for 1020 cents Bill 9 is ID 3ce66b0e9a510f90fb26906dd0da04df6de0 for 101 cents
The client is able to process, verify and extract data from callbacks received from the Zipmark service., (*19)
A Zipmark_Callback object must be initialized with a Zipmark_Client object and the HTTP callback content (headers and body), (*20)
The array of HTTP headers sent in the callback POST should be contained in the $_SERVER variable. The body of the callback POST should be accessible through the call file_get_contents('php://input');, (*21)
$callback = new Zipmark_Callback($client, $httpHeaders, $httpBody);
$callbackValid = $callback->isValid();
$callbackValid will contain a true or false value., (*22)
Valid callbacks contain events, object types and objects. The below functions will return their respective values/objects, or null if the callback is invalid., (*23)
$callbackEvent = $callback->event(); $callbackObjectType = $callback->objectType(); $callbackObject = $callback->object();
Please see the Zipmark API or contact Zipmark Support via email or chat for more information., (*24)
The Zipmark PHP Client library includes unit tests to verify all implemented functionality. The unit tests are built with SimpleTest and can be run from the command line as:, (*25)
$ /path/to/zipmark/php/client/test/all_tests.php
PHP Client for Zipmark API
MIT
zipmark