MSS API 客户端,适用于 PHP 项目

v6.0.0 2024-07-30 09:57 UTC

README

Packagist Version (including pre-releases)

MSS API 客户端,适用于 PHP 项目。仅支持 MSS 2.0!

安装

PHP 版本要求:8.1 或更高。

MSS API 客户端并非与 Guzzle、Buzz 或其他发送 HTTP 信息的库紧密耦合。相反,它使用 PSR-18 客户端抽象。这将使您能够选择您想要的 PSR-7 实现和 HTTP 客户端

composer require bookingsuedtirol/mss-php kriswallsmith/buzz nyholm/psr7

可用方法

  • getHotelList
  • getSpecialList
  • getRoomList
  • getPriceList
  • getRoomAvailability
  • prepareBooking
  • getBooking
  • createInquiry
  • getUserSources
  • getLocationList
  • getMasterpackagesList
  • getThemeList
  • validateCoupon

示例

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

use Crutches\Bitmask;
use MssPhp\Client;
use MssPhp\Bitmask\HotelDetails;

$client = new Client([
  "user" => "username",
  "password" => "password",
  "source" => "source",
]);

$res = $client->request(function ($req) {
  $req->header->method = "getHotelList";
  $req->request->search->id = ["11230"];
  $req->request->options->hotel_details = (new Bitmask(
    HotelDetails::BASIC_INFO | HotelDetails::COORDINATES
  ))->getBitmask();
});

$hotel = $res["result"]["hotel"][0];
$hotel["name"]; // => string(18) "Hotel Lichtenstern"
$hotel["stars"]; // => float(3)
$hotel["geolocation"]["latitude"]; // => float(46.53063158978)

查看 examples 目录以获取更高级的用法。

异常处理

如果 MSS 返回错误响应,将抛出 MssException 异常。

<?php
use MssPhp\Exception;
// ...

try {
  $res = $client->request(function ($req) {
    // ...
  });
} catch (Exception\MssException $e) {
  $e->getMessage(); // => string(50) "Invalid value '2016-04-08' for parameter 'arrival'"
  $e->getCode(); // => int(32)
  $e->getResponse()->getStatusCode(); // => int(400)
}

开发

运行 docker compose run cli bash

如果您在此文件夹中遇到某些文件的权限问题,请更改 Dockerfile 中的 USER_IDGROUP_ID 值。

自动测试

在 Docker 容器内运行 composer test