<?php
class apiHandler {
// Private Global Variables
private $accessToken;
private $refreshToken;
private $beneficiaryCode;
private $isTest;
private $baseUrl;
public function __construct(bool $isTest, string $accessToken, string $refreshToken, string $beneficiaryCode)
{
$this->accessToken = $accessToken;
$this->refreshToken = $refreshToken;
$this->beneficiaryCode = $beneficiaryCode;
$this->isTest = $isTest;
$this->baseUrl = https://travelpay.co.za/api/;
}
private function getResponse($endpoint, $postFields)
{
// Create the endpoint
$endpointUrl = $this->baseUrl . $endpoint . ".php";
// Initiate CURL
$curl = curl_init();
// Set CURL Options
curl_setopt_array($curl, [
CURLOPT_PORT => "443",
CURLOPT_URL => $endpointUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 5,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $postFields,
CURLOPT_HTTPHEADER => [
"Accept: application/json"
]
]);
// Do the request
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
// Return
if ($err) {
return $err;
} else {
return $response;
}
}
public function requestApiToken()
{
$endpoint = "request_access_token";
$postFields = [
"beneficiaryCode" => $this->beneficiaryCode
];
$response = $this->getResponse($endpoint, $postFields);
return json_decode($response, true);
}
public function refreshApiToken()
{
$endpoint = "refresh_token";
$postFields = [
"beneficiaryCode" => $this->beneficiaryCode,
"refreshToken" => $this->refreshToken
];
$response = $this->getResponse($endpoint, $postFields);
return json_decode($response, true);
}
public function getPaymentLink($getGenericLink, $currencyCode, $amount, $ref, $allowPayerEdit = false, $payerDetails = null, $responseUrl = null, $expireInHours = null, $readOnlyFields = null, $showFormOnly = false)
{
$endpoint = "generate_payment_link";
$postFields = [
"isLive" => $this->isLive,
"getGenericLink" => $getGenericLink,
"beneficiaryCode" => $this->beneficiaryCode,
"currency" => $currencyCode,
"amount" => $amount,
"ref" => $ref,
"allowPayerEdit" => $allowPayerEdit,
"responseUrl" => $responseUrl,
"redirect" => false,
"expireInHours" => $expireInHours,
"readOnlyFields" => $readOnlyFields,
"showFormOnly" => $showFormOnly
];
if (isset($payerDetails)) {
$postFields["payerName"] = $payerDetails["payerName"];
$postFields["payerSurname"] = $payerDetails["payerSurname"];
$postFields["payerPhone"] = $payerDetails["payerPhone"];
$postFields["payerEmail"] = $payerDetails["payerEmail"];
$postFields["payerCompanyName"] = $payerDetails["payerCompanyName"];
}
$response = $this->getResponse($endpoint, $postFields);
return json_decode($response, true);
}
public function getAccountDetails()
{
$endpoint = "merchant_account";
$postFields = [
"accessToken" => $this->accessToken,
"beneficiaryCode" => $this->beneficiaryCode
];
$response = $this->getResponse($endpoint, $postFields);
return json_decode($response, true);
}
public function getTransactionHistory($traceId = NULL, $typeId = NULL, $statusIds = NULL, $includePaid = true, $includeReceived = true, $pageNumber = null, $pageSize = null, $newestFirst = true)
{
$endpoint = "transaction_history";
$postFields = [
"accessToken" => $this->accessToken,
"beneficiaryCode" => $this->beneficiaryCode,
"traceId" => $traceId,
"typeId" => $typeId,
"statusIds" => $statusIds, // "3" - Completed Only
"includePaid" => $includePaid,
"includeReceived" => $includeReceived,
"pageNumber" => $pageNumber,
"pageSize" => $pageSize,
"newestFirst" => $newestFirst
];
$response = $this->getResponse($endpoint, $postFields);
return json_decode($response, true);
}
}
?>