The following PHP and C# code examples were shared during a webinar on the Pressero API on February 28, 2019. To view the webinar video, go to https://www.aleyant.com/page/webinarstraining and follow the links to download webinar recordings.
Please note the credentials shown in the code examples below (UserName, Password, SubscriberID, and ConsumerID) are not valid for use.
- Create a new PHP file
touch pressero.php
- [PHP] Add the connect function
function pressero_request($path, $method = 'GET', $payload = null, $token = null) {
$headers = array('Content-Type: application/json');
if($token != null) {
array_push($headers, 'Authorization: token '. $token);
}
$jsonData = null;
if($payload != null) {
$jsonData = json_encode($payload);
array_push($headers, 'Content-Length: ' . strlen($jsonData));
}
$request = curl_init();
curl_setopt($request, CURLOPT_URL, 'https://admin.chi.v6.pressero.com/api' . $path);
curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
curl_setopt($request, CURLOPT_HEADER, true);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
switch(strtoupper($method)) {
case 'GET':
curl_setopt($request, CURLOPT_HTTPGET, true);
break;
default:
curl_setopt($request, CURLOPT_CUSTOMREQUEST, strtoupper($method));
break;
}
if(strtoupper($method) != 'GET' && $jsonData != null) {
curl_setopt($request, CURLOPT_POSTFIELDS, $jsonData);
}
$rawResponse = curl_exec($request);
$httpCode = curl_getinfo($request, CURLINFO_HTTP_CODE);
$jsonResponse = null;
if(200 <= $httpCode && $httpCode < 300)
{
$header_size = curl_getinfo($request, CURLINFO_HEADER_SIZE);
$responseHeader = substr($rawResponse, 0, $header_size);
$responseBody = substr($rawResponse, $header_size);
$jsonResponse = json_decode($responseBody, true);
} else {
$jsonResponse = false;
}
curl_close($request);
return $jsonResponse;
}
- Acquire a token
http://admin.chi.v6.pressero.com/docs/api/#api-Authentication-NewToken
echo "1. Obtaining Token\n";
$credentials = array(
'UserName' => 'webinar2019',
'Password' => 'W3b1n@r2019',
'SubscriberID' => 'bce9064a-378a-47ce-925d-6a0a1a3d5064',
'ConsumerID' => '9BC3D6A0-D4E3-4D50-A5DD-153E775209C2'
);
$authResponse = pressero_request('/v2/authentication', 'POST', $credentials);
$token = $authResponse["Token"];
echo "Token: ".$token."\n";
- Create dotnet project
dotnet new console -n pressero_dotnet
cd pressero_dotnet
- Add Newtonsoft.Json
dotnet add package Newtonsoft.Json
- Add connect function
static dynamic PresseroRequest(string path, string method = "GET", object payload = null, string token = null)
{
var client = new System.Net.WebClient();
client.Headers.Add(System.Net.HttpRequestHeader.ContentType, "application/json");
if (!string.IsNullOrEmpty(token))
client.Headers.Add(System.Net.HttpRequestHeader.Authorization, $"token {token}");
byte[] responseBytes = null;
try
{
var url = $"https://admin.chi.v6.pressero.com/api/{path.TrimStart('/')}";
if (!"GET".Equals(method, StringComparison.InvariantCultureIgnoreCase))
{
byte[] payloadBytes = null;
if (payload != null)
{
var payloadJson = Newtonsoft.Json.JsonConvert.SerializeObject(payload);
payloadBytes = System.Text.Encoding.UTF8.GetBytes(payloadJson);
}
responseBytes = client.UploadData(url, method, payloadBytes);
}
else
{
responseBytes = client.DownloadData(url);
}
}
catch (System.Net.WebException ex)
{
var status = (ex.Response as System.Net.HttpWebResponse)?.StatusCode;
if (status.HasValue)
System.Diagnostics.Debug.WriteLine($"Response code from request to {path}: {status}");
}
if (responseBytes == null)
{
return null;
}
var responseJson = System.Text.Encoding.UTF8.GetString(responseBytes);
return Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(responseJson);
}
- Acquire a token
Console.WriteLine("1. Obtaining Token");
var credentials = new
{
UserName = "webinar2019",
Password = "W3b1n@r2019",
SubscriberID = Guid.Parse("bce9064a-378a-47ce-925d-6a0a1a3d5064"),
ConsumerID = Guid.Parse("9BC3D6A0-D4E3-4D50-A5DD-153E775209C2")
};
var authResponse = PresseroRequest("/v2/authentication", "POST", credentials);
string token = authResponse.Token;
Console.WriteLine($"Token: {token}");
- [PHP] Fetching Orders
http://admin.chi.v6.pressero.com/docs/api/#api-OrdersV2-GetOrderList
echo "2. Fetch Orders\n";
$searchOrderFilter = array(
'StartDate' => '2019-01-01 00:00:00Z',
'EndDate' => '2019-03-01 00:00:00Z'
);
$orders = pressero_request('/v2/orders/search?pageNumber=0&pageSize=10', 'POST', $searchOrderFilter, $token);
for($i = 0; $i < $orders['TotalItems']; $i++) {
$order = $orders['Items'][$i];
echo $order['OrderNumber'].'-'.$order['OrderItemNumber']."\n";
}
- [DOTNET] Fetching Orders
http://admin.chi.v6.pressero.com/docs/api/#api-OrdersV2-GetOrderList
Console.WriteLine("2. Fetch Orders");
var searchOrderFilter = new
{
StartDate = new DateTime(2019, 01, 01).ToString("u"),
EndDate = new DateTime(2019, 03, 01).ToString("u")
};
var orders = PresseroRequest("/v2/orders/search?pageNumber=0&pageSize=10", "POST", searchOrderFilter, token);
for (int i = 0; i < (int)orders.TotalItems; i++)
{
var order = orders.Items[i];
Console.WriteLine($"{order.OrderNumber}-{order.OrderItemNumber}");
}
- [PHP] Read order item
http://admin.chi.v6.pressero.com/docs/api/#api-OrdersV2-GetOrderItemDetails
echo "3. Read Order Item\n";
$orderNumber = 1;
$orderItemSeq = 2;
$orderItem = pressero_request("/v2/orders/$orderNumber/Item/$orderItemSeq/Details", "GET", null, $token);
echo "Price for Order Item $orderNumber-$orderItemSeq: $" . $orderItem["Price"];
- [DOTNET] Read order item
http://admin.chi.v6.pressero.com/docs/api/#api-OrdersV2-GetOrderItemDetails
Console.WriteLine("3. Read Order Item");
var orderNumber = 1;
var orderItemSeq = 2;
var orderItem = PresseroRequest($"/v2/orders/{orderNumber}/Item/{orderItemSeq}/Details", "GET", null, token);
Console.WriteLine($"Price for Order Item {orderNumber}-{orderItemSeq}: ${orderItem.Price}");
- [PHP] Read Users
http://admin.chi.v6.pressero.com/docs/api/#api-Admin_Users-GetAdminUserPage
echo "4. List Users\n";
$users = pressero_request('/users', 'GET', null, $token);
for($i = 0; $i < $users['TotalItems']; $i++) {
$user = $users['Items'][$i];
echo "[".$user["UserId"]."] ".$user['FullName']." (".$user['Email'].")\n";
}
- [DOTNET] Read Users
http://admin.chi.v6.pressero.com/docs/api/#api-Admin_Users-GetAdminUserPage
Console.WriteLine("4. List Users");
var users = PresseroRequest($"/users", "GET", null, token);
for (int i = 0; i < (int)users.TotalItems; i++)
{
var user = users.Items[i];
Console.WriteLine($"[{user.UserId}] {user.FullName} ({user.Email})");
}
- [PHP] Updating Users
http://admin.chi.v6.pressero.com/docs/api/#api-Admin_Users-UpdateAdminUser
echo "5. Update User\n";
$userId = "858f2d2a-83e5-49ed-9234-b792c5eb193d";
$updatedUserData = array(
'LastName' => '2019 - php'
);
pressero_request("/users/$userId", "PUT", $updatedUserData, $token);
$updatedUser = pressero_request("/users/$userId", "GET", null, $token);
echo "[".$updatedUser["UserId"]."] ".$updatedUser['FullName']." (".$updatedUser['Email'].")\n";
- [DOTNET] Updating Users
http://admin.chi.v6.pressero.com/docs/api/#api-Admin_Users-UpdateAdminUser
Console.WriteLine("5. Update User");
var userId = Guid.Parse("858f2d2a-83e5-49ed-9234-b792c5eb193d");
var updatedUserData = new
{
LastName = "2019 - dotnet"
};
PresseroRequest($"/users/{userId}", "PUT", updatedUserData, token);
var updatedUser = PresseroRequest($"/users/{userId}", "GET", null, token);
Console.WriteLine($"[{updatedUser.UserId}] {updatedUser.FullName} ({updatedUser.Email})");