PHP SDK
Installation
You can install the package via composer:
composer require tmrw-life/ntak-guru-php-sdk
Usage: Accommodation
Accommodation
$gateway = \TmrwLife\NtakGuru\Services\Accommodation::setup([
'accessToken' => '<your-access-token>',
'isProduction' => false, // default: false
]);
$accommodationId = '00000000-0000-0000-0000-0000000'; // Provided by NTAK.guru
// Retrieve accommodation
$response = $gateway->show($accommodationId);
// Update accommodation
$provider = (new \TmrwLife\NtakGuru\Entities\AccommodationProvider())
->setProviderName('Awesome provider Ltd')
->setProviderTaxNumber('12345678-1-41');
$response = $gateway->updateProvider($accommodationId, $provider);
$urls = (new \TmrwLife\NtakGuru\Entities\AccommodationUrl())
->setDailyCloseUrl('https://api.your-pms.com/v1/ntakguru/daily-close')
->setCallbackUrl('https://api.your-pms.com/v1/ntakguru/callback');
$response = $gateway->updateUrl($accommodationId, $urls);
// Activate accommodation
$response = $gateway->activate($accommodationId);
// Deactivate accommodation
$response = $gateway->deactivate($accommodationId);
Certificates
use TmrwLife\NtakGuru\Services\Certificate;
$accommodationId = '00000000-0000-0000-0000-0000000'; // Provided by NTAK.guru
$gateway = Certificate::setup([
'accessToken' => '<your-access-token>',
'isProduction' => false, // default: false
]);
// Generate certificate (private key)
$gateway->generate($accommodationId);
// Download certificate (certificate request)
$gateway->download($accommodationId);
// Upload certificate (certificate)
$gateway->upload($accommodationId, '<content-of-certificate>');
// Delete certificate (private key and certificate request)
$gateway->destroy($accommodationId);
Usage: NTAK
Entity builders
You can use the entity builders to create the entities.
We covered the 5 main report type with the entity builders.
Name | Builder |
---|---|
Check-in | \TmrwLife\NtakGuru\Entities\Ntak\CheckIn |
Check-out | \TmrwLife\NtakGuru\Entities\Ntak\CheckOut |
Reservation | \TmrwLife\NtakGuru\Entities\Ntak\Reservation |
Room change | \TmrwLife\NtakGuru\Entities\Ntak\RoomChange |
Daily close | \TmrwLife\NtakGuru\Entities\Ntak\DailyClose |
And a few more for properties.
Name | Builder |
---|---|
Guest | \TmrwLife\NtakGuru\Entities\Ntak\Guest |
Residential unit | \TmrwLife\NtakGuru\Entities\Ntak\ResidentialUnit |
Checkout Day Sale | \TmrwLife\NtakGuru\Entities\Ntak\CheckOutDaySale |
Expense | \TmrwLife\NtakGuru\Entities\Ntak\Expense |
Load | \TmrwLife\NtakGuru\Entities\Ntak\Load |
Residential unit night | \TmrwLife\NtakGuru\Entities\Ntak\ResidentialUnitNight |
We also have some enums to help you with the attributes.
Name | Enum |
---|---|
Charge item categories | \TmrwLife\NtakGuru\Enums\ChargeItemCategory |
Countries | \TmrwLife\NtakGuru\Enums\NtakCountry |
Document types | \TmrwLife\NtakGuru\Enums\DocumentType |
Genders | \TmrwLife\NtakGuru\Enums\Gender |
Market segments | \TmrwLife\NtakGuru\Enums\MarketSegment |
Payment options | \TmrwLife\NtakGuru\Enums\PaymentOption |
Payment option subtypes | \TmrwLife\NtakGuru\Enums\PaymentOptionSubtype |
Residential units | \TmrwLife\NtakGuru\Enums\ResidentialUnit |
Sales channels | \TmrwLife\NtakGuru\Enums\SalesChannel |
Tourist taxes | \TmrwLife\NtakGuru\Enums\TouristTax |
For example:
use TmrwLife\NtakGuru\Entities\Ntak\Reservation;
use TmrwLife\NtakGuru\Enums\MarketSegment;
use TmrwLife\NtakGuru\Enums\ResidentialUnitType;
use TmrwLife\NtakGuru\Enums\SalesChannel;
$reservation = (new Reservation())
->setReservationNumber(23597)
->setOccurredAt('2023-04-19 14:00:23')
->setReservedAt('2023-04-19 13:46:04')
->setCancelled(false)
->setNationality('hu')
->setArrival('2023-04-21')
->setDeparture('2023-04-23')
->setSalesChannel(SalesChannel::DIRECT_ONLINE)
->setMarketSegment(MarketSegment::BUSINESS_GROUP)
->setGrossAmount(98700)
->setGuestCount(2)
->addBookedResidentialUnits(type: ResidentialUnitType::APARTMENT, capacity: 2);
Sending report
use TmrwLife\NtakGuru\Entities\Ntak\CheckIn;
use TmrwLife\NtakGuru\Entities\Ntak\CheckOut;
use TmrwLife\NtakGuru\Entities\Ntak\Reservation;
use TmrwLife\NtakGuru\Entities\Ntak\RoomChange;
use TmrwLife\NtakGuru\Services\Reporting\Ntak;
$accommodationId = '00000000-0000-0000-0000-0000000'; // Provided by NTAK.guru
$reporting = Ntak::setup([
'accessToken' => '<your-access-token>',
'isProduction' => false, // default: false
]);
// Check-in report
$checkIn = (new CheckIn())->setAttribute('...');
$response = $reporting->checkIn($accommodationId, $checkIn);
// Check-out report
$checkOut = (new CheckOut())->setAttribute('...');
$response = $reporting->checkOut($accommodationId, $checkOut);
// Reservation report
$reservation = (new Reservation())->setAttribute('...');
$response = $reporting->reservation($accommodationId, $reservation);
// Room change report
$roomChange = (new RoomChange())->setAttribute('...');
$response = $reporting->roomChange($accommodationId, $roomChange);
Daily close response
In order to respond to the daily close request, you can use the DailyClose
entity builder class.
use TmrwLife\NtakGuru\Crypt;
use TmrwLife\NtakGuru\Entities\Ntak\CheckOutDaySale;
use TmrwLife\NtakGuru\Entities\Ntak\DailyClose;
use TmrwLife\NtakGuru\Entities\Ntak\Expense;
use TmrwLife\NtakGuru\Entities\Ntak\Load;
use TmrwLife\NtakGuru\Entities\Ntak\ResidentialUnit;
use TmrwLife\NtakGuru\Entities\Ntak\ResidentialUnitNight;
$dailyClose = (new DailyClose())
->setClosedDay('2023-04-20')
->setResidentialUnits(
all: 15,
ooo: 0,
oos: 2,
occupied: 10,
available: 3,
)
->addAfterStayExpense(new Expense())
->addAfterStayLoad(new Load())
->addCheckOutDaySale(new CheckOutDaySale())
->addOtherExpense(new Expense())
->addOtherLoad(new Load())
->addOutOfOrderResidentialUnit(new ResidentialUnit())
->addResidentialUnitNight(new ResidentialUnitNight());
return $data; // JSON response to NTAK.guru
Or if the accommodation is no operating
use TmrwLife\NtakGuru\Crypt;
use TmrwLife\NtakGuru\Entities\Ntak\DailyClose;
$dailyClose = (new DailyClose())
->setClosedDay('2023-04-20')
->setResidentialUnits(
all: $all = $this->faker->randomDigit(),
ooo: $ooo = $this->faker->randomDigit(),
oos: $oos = $this->faker->randomDigit(),
occupied: $occupied = $this->faker->randomDigit(),
available: $available = $this->faker->randomDigit(),
)
->accommodationNotOperating();
return $data; // JSON response to NTAK.guru
Usage: VIZA
Entity builders
You can use the entity builders to create the entities.
We covered the 2 main report type with the entity builders.
Name | Builder |
---|---|
Check-in | \TmrwLife\NtakGuru\Entities\Viza\CheckIn |
Check-out | \TmrwLife\NtakGuru\Entities\Viza\CheckOut |
And a few more for properties.
Name | Builder |
---|---|
Guest | \TmrwLife\NtakGuru\Entities\Viza\Guest |
Guest Document | \TmrwLife\NtakGuru\Entities\Viza\GuestDocument |
Sending report
use TmrwLife\NtakGuru\Entities\Ntak\CheckIn;
use TmrwLife\NtakGuru\Entities\Ntak\CheckOut;
use TmrwLife\NtakGuru\Services\Reporting\Viza;
$accommodationId = '00000000-0000-0000-0000-0000000'; // Provided by NTAK.guru
$reporting = Viza::setup([
'accessToken' => '<your-access-token>',
'isProduction' => false, // default: false
]);
// Check-in report
$checkIn = (new CheckIn())->setAttribute('...');
$response = $reporting->checkIn($accommodationId, $checkIn);
// Check-out report
$checkOut = (new CheckOut())->setAttribute('...');
$response = $reporting->checkOut($accommodationId, $checkOut);