serkancelik17/hotel_content_api_sdk

Hotelbeds Hotel-API SDK for PHP

v1.0.0 2022-05-25 19:22 UTC

This package is auto-updated.

Last update: 2024-09-26 01:15:20 UTC


README

简介

Hotelbeds SDK for PHP 是一套工具集合,其主要目标是帮助开发使用 Hotelbeds API 的 PHP 应用程序。这是一个在 packagist.org 仓库上可用的 composer 库。

https://packagist.org.cn/packages/hotelbeds/hotel-api-sdk-php

许可证

此软件基于 LGPL v2.1 许可证。请参阅文件 LICENSE 获取具体细节以及更多许可证和版权信息。

安装

使用 Composer 工具从控制台安装

composer require hotelbeds/hotel-api-sdk-php

使用 PHPStorm 的 Composer 依赖管理器:http://blog.jetbrains.com/webide/2013/03/composer-support-in-phpstorm/

测试

在单元测试目录中可以找到可以运行于 phpunit 的不同测试。存在不同的测试集:可用性和预订。

.\vendor\bin\phpunit --testsuite availability

此测试套件执行:API 状态,在 PMI 目的地上创建可用性,选择一个房间并执行价格检查和预订。

使用 SDK

概述

HotelApiClient 类有各种方法,实现了各种 HotelAPI 调用

  • 可用性
  • 价格检查
  • 预订确认
  • 预订取消
  • 预订列表
  • 状态

每个方法都有一个 ApiHelper 类型的参数,有四种可能的类型

  • 可用性
  • 价格检查
  • 预订
  • 预订列表

每个调用的所有响应都可以使用 PHP 对象或数组进行迭代。内部将 JSON 响应结构转换为 PHP 关联数组。

使用 PSR-0 自动加载库

<?php
require __DIR__ .'/vendor/autoload.php';

use hotelbeds\hotel_api_sdk\HotelApiClient;
use hotelbeds\hotel_api_sdk\model\Destination;
use hotelbeds\hotel_api_sdk\model\Occupancy;
use hotelbeds\hotel_api_sdk\model\Pax;
use hotelbeds\hotel_api_sdk\model\Rate;
use hotelbeds\hotel_api_sdk\model\Stay;
use hotelbeds\hotel_api_sdk\types\ApiVersion;
use hotelbeds\hotel_api_sdk\types\ApiVersions;
use hotelbeds\hotel_api_sdk\messages\AvailabilityRS;

$reader = new Zend\Config\Reader\Ini();
$config   = $reader->fromFile(__DIR__.'/HotelApiClient.ini');
$cfgApi = $config["apiclient"];
        
$apiClient = new HotelApiClient($cfgApi["url"],
                                $cfgApi["apikey"],
                                $cfgApi["sharedsecret"],
                                new ApiVersion(ApiVersions::V1_0),
                                $cfgApi["timeout"]);

$rqData = new \hotelbeds\hotel_api_sdk\helpers\Availability();
$rqData->stay = new Stay(DateTime::createFromFormat("Y-m-d", "2016-02-01"),
                         DateTime::createFromFormat("Y-m-d", "2016-02-10"));

$rqData->destination = new Destination("PMI");
$occupancy = new Occupancy();
$occupancy->adults = 2;
$occupancy->children = 1;
$occupancy->rooms = 1;

$occupancy->paxes = [ new Pax(Pax::AD, 30, "Mike", "Doe"), new Pax(Pax::AD, 27, "Jane", "Doe"), new Pax(Pax::CH, 8, "Mack", "Doe") ];
$rqData->occupancies = [ $occupancy ];

$availRS = $apiClient->availability($rqData);

迭代可用性结果

在调用可用性方法后,可以使用迭代器迭代结果或以数组形式读取。

// Iterate all returned hotels with an Hotel object
foreach ($availRS->hotels->iterator() as $hotelCode => $hotelData)
{
        // Get all hotel data (from Hotel object $hotelData)
        
        // Iterate all rooms of each hotel
        foreach ($hotelData->iterator() as $roomCode => $roomData)
        {
                // Iterate all rate of each room
                foreach($roomData->rateIterator() as $rateKey => $rateData)
                {
                        
                }
        }
}