TABLE OF CONTENTS


概述

PC Integration API 会通过5个接口向 PMS 推送订单信息:

从德比向PMS发起的请求

  • Live check: 实时检查您PMS中所有可用的房型、价格。
  • Book: 向 PMS 推送新预订请求。
  • Cancel: 向 PMS 推送取消已存在的订单请求。
  • Modify: 向 PMS推送修改已经存在的订单请求


从PMS向德比发起的请求

  • Booking Status:PMS向德比推送订单状态


修改订单: 未开发修改订单接口时,所有修改请求均会以取消+预订的形式推送到PMS;

                当开发了修改订单接口时,部分支持修改的渠道如 Agoda, Booking.com 和Expedia, 会以修改的方式推送PMS,其他不支持修改的渠道,仍以取消+预订的形式推送到PMS。


多房间预订: 当渠道发起一起预订多间的请求时, 德比软件会将此订单拆分成多张预订1间房的订单,并给每个订单分配不同的德比软件订单号和渠道订单号。 

重要信息:
基于安全要求,Property Connector 只支持 HTTPS/SSL。


可定检查

此API用于实时检查所有可用房间和价格。

实时请求由渠道端发起,但不是所有渠道都支持
POST https://{your pms endpoint}/availability HTTP/1.1
Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8

请求

字段

类型

是否必填

描述

说明

hotelId

String

酒店代码

stayRange

Object[stayRange]

 

 

stayRange/checkin

Date:yyyy-MM-dd

入住日期

 

stayRange/checkout

Date:yyyy-MM-dd

离店日期

 

roomCriteria

Object[roomCriteria]

 

roomCriteria/roomCount

Integer

房间数量

 

roomCriteria/adultCount

Integer

成人数

 

roomCriteria/childCount

Integer

儿童数

 

roomCriteria/childAges

List[Integer]

儿童年龄

productCandidate

Object[productCandidate]

 

 

productCandidate/roomId

String

PMS中房型ID 

productCandidate/rateId

String

PMS中价格ID

iata

String

渠道的IATA

 

loyaltyAccount

Object[loyaltyAccount]

 

 

loyaltyAccount/programCode

String

PMS中的会员编号

loyaltyAccount/accountId

String

会员的账号

corpAccount

Object[corpAccount]

 

 

corpAccount/corpProgramCode

String

PMS中 的企业编号

corpAccount/corpId

String

企业的账号


示例:1.1 常规请求

{
  "header": {
    "echoToken": "dda577cc-20e0-4427-bd41-609a6608dc54",
    "timeStamp": "2018-01-01T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "stayRange": {
    "checkin": "2018-01-01",
    "checkout": "2018-01-04"
  },
  "roomCriteria": {
    "roomCount": 2,
    "adultCount": 2,
    "childCount": 2,
    "childAges": [
      4,
      8
    ]
  }
}

示例:1.2 请求指定房型、价格

{
  "header": {
    "echoToken": "dda577cc-20e0-4427-bd41-609a6608dc54",
    "timeStamp": "2018-01-01T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "stayRange": {
    "checkin": "2018-01-01",
    "checkout": "2018-01-04"
  },
  "roomCriteria": {
    "roomCount": 2,
    "adultCount": 2,
    "childCount": 2,
    "childAges": [
      4,
      8
    ]
  },
      "productCandidate": {
        "roomId": "King",
        "rateId": "BAR"
    }
}

示例:1.3 完整请求

{
  "header": {
    "echoToken": "dda577cc-20e0-4427-bd41-609a6608dc54",
    "timeStamp": "2018-01-01T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "stayRange": {
    "checkin": "2018-01-01",
    "checkout": "2018-01-04"
  },
  "roomCriteria": {
    "roomCount": 2,
    "adultCount": 2,
    "childCount": 2,
    "childAges": [
      4,
      8
    ]
  },
  "productCandidate": {
    "roomId": "King",
    "rateId": "BAR"
  },
  "iata": "string",
  "loyaltyAccount": {
    "programCode": "BW",
    "accountId": "1234567890123457"
  },
  "corpAccount": {
    "corpProgramCode": "CR",
    "corpId": "A-1232"
  }
}

响应

字段

类型

是否必填

描述

说明

hotelId

String

酒店代码

 

stayRange

Object[stayRange]

 

 

stayRange/checkin

Date:yyyy-MM-dd

入住日期

 

stayRange/checkout

Date:yyyy-MM-dd

离店日期

 

roomCriteria

Object[roomCriteria]

 

roomCriteria/roomCount

Integer

房间数量

 

roomCriteria/adultCount

Integer

成人数

 

roomCriteria/childCount

Integer

儿童数

 

roomCriteria/childAges

List[Integer]

儿童年龄

productCandidate

Object[productCandidate]

 

 

productCandidate/roomId

String

PMS中的房型ID

productCandidate/rateId

String

PMS中的价格ID

iata

String

渠道的IATA

 

roomRates

List[roomRates]

 

 

roomRates/inventory

Integer

可用房间数量

 

roomRates/roomId

String

PMS中的房型ID

roomRates/rateId

String

PMS中的价格ID

roomRates/currency

String

符合 ISO 4217 标准的货币

roomRates/amountBeforeTax

List[BigDecimal]

每日价(不含税)

2者至少有1个

roomRates/amountAfterTax

List[BigDecimal]

每日价(含税)

roomRates/mealPlan

String

餐食计划编码

请参考 附录-餐食计划

roomRates/paymentType

Enum

  • PayNow

  • PayLater

  • CreditPay

  • Other

现付\预付\信用住

  • PayNow: 预付

  • PayLater: 现付

  • CreditPay:信用住

roomRates/fees

List[fees]


 

fees/dateRange

Object[dateRange]

 

 

dateRange/startDate

Date:yyyy-MM-dd

起始日期

 

dateRange/endDate

Date:yyyy-MM-dd

截止日期

 

fees/fee

Object[fee]

 

 

fee/name

String

 

fee/type

Enum

  • Inclusive

  • Exclusive

价格中是否含税

  • Inclusive:含税

  • Excluxive:不含税

fee/amount

String

税费金额

 

fee/amountType

Enum

  • Fix

  • Percent

税费收取方式

  • Fix:固定值

  • Percent:百分比

fee/chargeType

Enum

  • PerRoomPerNight

  • PerPersonPerNight

  • PerRoomPerStay

  • PerPersonPerStay

税费类型

  • PerRoomPerNight:每间每晚

  • PerPersonPerNight:每人每晚

  • PerRoomPerStay:每间每次预订

  • PerPersonPerStay:每人每次预订

fee/paymentType

Enum

  • PayLater

  • PayNow

税费是否预付或现付

  • PayNow: 预付

  • PayLater: 现付

roomRates/cancelPolicy

Object[cancelPolicy]

 

 

cancelPolicy/code

String

取消政策编码

 清参考 附录-取消政策

cancelPolicy/description

String

取消政策描述

 


响应示例

成功响应

{
  "header": {
    "echoToken": "dda577cc-20e0-4427-bd41-609a6608dc54",
    "timeStamp": "2018-01-01T17:09:04.674Z",
    "version": "0.1"
  },
  "hotelId": "FSDH",
  "stayRange": {
    "checkin": "2018-01-01",
    "checkout": "2018-01-04"
  },
  "roomCriteria": {
    "roomCount": 2,
    "adultCount": 2,
    "childCount": 2,
    "childAges": [
      4,
      8
    ]
  },
  "productCandidate": {
    "roomId": "King",
    "rateId": "BAR"
  },
  "iata": "string",
  "roomRates": [
    {
      "inventory": 2,
      "roomId": "King",
      "rateId": "BAR",
      "currency": "USD",
      "amountBeforeTax": [
        100,
        100,
        120
      ],
      "amountAfterTax": [
        110,
        110,
        130
      ],
      "mealPlan": "RO",
      "paymentType": "PayNow",
      "fees": [
        {
          "dateRange": {
            "startDate": "2018-01-01",
            "endDate": "2018-01-04"
          },
          "fee": {
            "name": "Service Charge",
            "type": "Exclusive",
            "amount": 10,
            "amountType": "Percent",
            "chargeType": "PerRoomPerNight",
            "paymentType": "PayNow"
          }
        }
      ],
      "cancelPolicy": {
        "code": "AD100P_100P",
        "description": "Non Refundable"
      }
    }
  ]
}

失败响应

{
  "header": {
    "echoToken": "dda577cc-20e0-4427-bd41-609a6608dc54",
    "timeStamp": "2018-01-01T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}


预订

此 API 用于向 PMS 进行新的预订。

POST https://{your pms endpoint}/book HTTP/1.1
Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8


请求


字段 类型是否必填描述说明

reservationIds

Object[ReservationIds]

///

reservationIds/distributorResId

String

渠道订单号

/

reservationIds/derbyResId

String

德比软件订单号

/

distributorId

String

渠道分销商 ID

渠道ID 

iata

String

渠道的 IATA

/

hotelId

String

酒店代码

/

stayRange

Object[StayRange]

//

stayRange/checkin

Date: yyyy-MM-dd

入住日期/

stayRange/checkout

Date: yyyy-MM-dd

离店日期/

contactPerson

Object[ContactPerson]

//

contactPerson/firstName

String

联系人-名

这是渠道推送的原始名称,可能不包含拉丁字母 

contactPerson/lastName

String

联系人-姓氏

contactPerson/firstNameRoma

String

用拉丁字母表示的联系人的名

DerbySoft Property Connect会将联系人的姓名翻译成拉丁字母

contactPerson/lastNameRoma

String

用拉丁字母表示的联系人的姓

contactPerson/email

String

联系人电子邮件

/

contactPerson/phone

String

联系人电话

/

contactPerson/address

String

联系人地址

/

roomCriteria

Object[RoomCriteria]

//

roomCriteria/roomCount

Integer

房间数量

/

roomCriteria/adultCount

Integer

成人数/

roomCriteria/childCount

Integer

儿童数/

roomCriteria/childAges

List[Integer]

儿童年龄/

total

Object[Rate]

订单总金额/

total/amountBeforeTax

BigDecimal

订单总金额税前

两者必传一个,或全部传递

total/amountAfterTax

BigDecimal

订单总金额税后

payment

Object[Payment]

/

如果 PMS不符合 PCI-DSS,或者渠道不支持时,此选项为空

payment/cardCode

Enum:

  • VI: Visa
  • MC: Master Card
  • AX: American Express
  • BC: Bank Card
  • BL: Carte Bleu
  • CB: Carte Blanche
  • DN: Diners Club
  • DS: Discover Card
  • EC: Eurocard
  • JC: Japanese Credit Bureau Credit Card
  • TP: Universal Air Travel Card
  • CU: China Unionpay
  • MA: Maestro Card

//

payment/cardNumber

String

信用卡号

/

payment/cardHolderName

String

持卡人姓名

/

payment/expireDate

Date: MMYY

2位月份+2位年份

示例:0119表示19年1月

guests

List[Guest]

//

guests/firstName

String

客人-名

/

guests/lastName

String

客人-姓氏

/

guests/firstNameRoma

String

用拉丁字符表示的客人名

/

guests/lastNameRoma

String

用拉丁字符表示的客人姓氏

guests/email

String

客人电子邮件

/

guests/phone

String

否 

客人电话

/

guests/address

String

否 

客人地址

/

guests/age

Integer

否 

客人年龄

/

guests/type

Enum
- Adult
- Child
- Infant

客人类型:成人、儿童或婴儿

/
marketCodeString仅Synxis提供/

comments

List[String]

//

roomRate

Object[RoomRate]

//

roomRate/roomId

String

房型代码

/

roomRate/rateId

String

价格代码

/

roomRate/currency

String

标准的货币代码

/

roomRate/amountBeforeTax

List[BigDecimal]

每天税前房价

/

roomRate/amountAfterTax

List[BigDecimal]

每天税后房价

/
roomRate/mealPlanString/

参考附录 - 餐饮方案


roomRate/paymentType

Enum
- PayNow
- PayLater

- CreditPay

- Other

支付方式:现付、预付、信用住

/

roomRate/guarantee

Object[guarantee]



guarantee/guaranteeType

Enum

-CCG

-GTTA

-GTC

-GTP

-NG

CCG: 信用卡担保
GTTA: 旅行社担保
GTC: 公司担保
GTP: 酒店担保
NG: 无担保

fees

List[Fees]

税费清单

/

fees/dateRange

Object[DateRange]

//

dateRange /startDate

/

开始日期

/

dateRange /endDate

/

结束日期

包括结束日期

fees/fee

Object[Fee]

//

fee /name

String

税费名称

/

fee /type

Enum
- Inclusive
- Exclusive

税费是否已包含在价格内

/

fee /amount

String

税费的金额

/

fee /amountType

Enum
- Fix
- Percent

金额计算方式

固定值、比例

/

fee /chargeType

Enum
- PerRoomPerNight
- PerPersonPerNight
- PerRoomPerStay
- PerPersonPerStay

收取方式

/

fee /paymentType

Enum
- PayLater
- PayNow

费用预付给酒店(预付)或在酒店支付(后付)

/

cancelPolicy

Object[CancelPolicy]

取消政策定义了当客人在特定提前时间范围内取消预订时将收取什么罚款。应到未到的客人和不可取消的时间范围有关

/

cancelPolicy/code

String

取消政策编码

取消政策

cancelPolicy/description

String

取消政策描述

/
resProfiles

List[ResProfile]

档案信息


resProfiles/id

String

档案ID


resProfiles/nameString

档案名称


resProfiles/type

Enum

  • COMPANY
  • TRAVEL_AGENT

档案类型

  • 公司
  • 代理

resProfiles/contactObject[Contact]

联系人信息


contact/emailString电子邮件
corpAccountObject[CorpAccount]协议公司信息
corpAccount/corpProgramCodeString协议公司编号
corpAccount/corpIdString协议公司ID
memberAccountObject[MemberAccount]会员信息
memberAccount/programCodeString会员代码
memberAccount/memberLevelString会员层级
memberAccount/memberIdString会员ID

notify

Boolean

预订通知模式

  • true:预订通知模式。渠道分销商已经向客户确认了预订,无论可用性或价格是否有效,您的PMS都必须接受预订。
  • false:预订请求模式。渠道分销商就会根据你的PMS结果向客户确认预订。
/

extensions

Map<String:String>

扩展字段

/
threeDomainSecurityObject[ThreeDomainSecurity]

当3DS验证信用卡持有者有效shi
threeDomainSecurity/cavvString



threeDomainSecurity /eciString



threeDomainSecurity /xidString



threeDomainSecurity/threeDomainSecurityVersionString



threeDomainSecurity/merchantNameString




响应


字段类型是否必填描述说明

reservationIds/distributorResId

String

渠道订单号

/

reservationIds/derbyResId

String

德比软件订单号

/

reservationIds/supplierResId

String

PMS 订单号

/

extensions

Map<String:String>

扩展字段

/


示例


请求

普通预订

{
	"header": {
		"echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
		"timeStamp": "2018-06-27T17:09:04.674Z",
		"version": "0.1"
	},
	"reservationIds": {
		"distributorResId": "C2084DFL0",
		"derbyResId": "D15F893D34DF"
	},
	"distributorId": "CTRIP",
	"hotelId": "FSDH",
	"stayRange": {
		"checkin": "2021-01-01",
		"checkout": "2021-01-04"
	},
	"contactPerson": {
		"firstName": "小明",
		"lastName": "王",
		"firstNameRoma": "XIAOMING",
		"lastNameRoma": "WANG",
		"email": "007@james.com"
	},
	"roomCriteria": {
		"roomCount": 2,
		"adultCount": 1,
		"childCount": 2,
		"childAges": [
			4,
			8
		]
	},
	"total": {
		"amountBeforeTax": 640,
		"amountAfterTax": 704
	},
	"payment": {
		"cardCode": "VI",
		"cardNumber": "4111111111111111",
		"cardHolderName": "Sherlock Holmes",
		"expireDate": "0119"
	},
	"guests": [{
		"firstName": "小小",
		"lastName": "张",
		"firstNameRoma": "XIAOXIAO",
		"lastNameRoma": "ZHANG"
	}],
	"marketCode": "ASDDD",
	"comments": [
		"no smoking",
		"high floor"
	],
	"roomRate": {
		"roomId": "King",
		"rateId": "BAR",
		"currency": "USD",
		"amountBeforeTax": [
			100,
			100,
			120
		],
		"amountAfterTax": [
			110,
			110,
			132
		],
		"mealPlan": "RO",
		"guarantee": {
			"guaranteeType": "CCG"
		},
		"paymentType": "PayNow",
		"fees": [{
			"dateRange": {
				"startDate": "2018-01-01",
				"endDate": "2018-01-04"
			},
			"fee": {
				"name": "Service Charge",
				"type": "Exclusive",
				"amount": 10,
				"amountType": "Percent",
				"chargeType": "PerRoomPerNight",
				"paymentType": "PayNow"
			}
		}],
		"cancelPolicy": {
			"code": "AD100P_100P",
			"description": "Non Refundable"
		}
	},
	"threeDomainSecurity": {
		"cavv": "string",
		"eci": "string",
		"xid": "string",
		"threeDomainSecurityVersion": "string",
		"transactionId": "string",
		"merchantName": "string"
	},
	"notify": false
}

成功响应

{
  "header": {
    "echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "reservationIds": {
    "distributorResId": "C2084DFL0",
    "derbyResId": "D15F893D34DF",
    "supplierResId": "89389494"
  }
}

失败响应

{
  "header": {
    "echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}

带有公司信息的预订

{
  "header": {
    "echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "reservationIds": {
    "distributorResId": "C2084DFL0",
    "derbyResId": "D15F893D34DF"
  },
  "distributorId": "CTRIP",
  "hotelId": "FSDH",
  "stayRange": {
    "checkin": "2021-01-01",
    "checkout": "2021-01-04"
  },
  "contactPerson": {
    "firstName": "小明",
    "lastName": "王",
    "firstNameRoma": "XIAOMING",
    "lastNameRoma": "WANG",
    "email": "007@james.com"
  },
  "roomCriteria": {
    "roomCount": 2,
    "adultCount": 1,
    "childCount": 2,
    "childAges": [
      4,
      8
    ]
  },
  "total": {
    "amountBeforeTax": 640,
    "amountAfterTax": 704
  },
  "payment": {
    "cardCode": "VI",
    "cardNumber": "4111111111111111",
    "cardHolderName": "Sherlock Holmes",
    "expireDate": "0119"
  },
  "guests": [
    {
      "firstName": "小小",
      "lastName": "张",
      "firstNameRoma": "XIAOXIAO",
      "lastNameRoma": "ZHANG"
    }
  ],
  "marketCode": "ASDDD",
  "comments": [
    "no smoking",
    "high floor"
  ],
  "roomRate": {
    "roomId": "King",
    "rateId": "BAR",
    "currency": "USD",
    "amountBeforeTax": [
      100,
      100,
      120
    ],
    "amountAfterTax": [
      110,
      110,
      132
    ],
    "mealPlan": "RO",
    "guarantee": {
      "guaranteeType": "CCG"
    },
    "paymentType": "PayNow",
    "fees": [
      {
        "dateRange": {
          "startDate": "2018-01-01",
          "endDate": "2018-01-04"
        },
        "fee": {
          "name": "Service Charge",
          "type": "Exclusive",
          "amount": 10,
          "amountType": "Percent",
          "chargeType": "PerRoomPerNight",
          "paymentType": "PayNow"
        }
      }
    ],
    "cancelPolicy": {
      "code": "AD100P_100P",
      "description": "Non Refundable"
    }
  },
  "resProfiles": [
    {
      "id": "XX1",
      "name": "XXX1",
      "type": "COMPANY",
      "contact": {
        "email": "xxx@xx.com"
      }
    }
  ],
  "corpAccount": {
    "corpProgramCode": "CR",
    "corpId": "A-1232"
  },
  "threeDomainSecurity": {
    "cavv": "string",
    "eci": "string",
    "xid": "string",
    "threeDomainSecurityVersion": "string",
    "transactionId": "string",
    "merchantName": "string"
  },
  "notify": false
}

带有代理信息的预订

{
  "header": {
    "echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "reservationIds": {
    "distributorResId": "C2084DFL0",
    "derbyResId": "D15F893D34DF"
  },
  "distributorId": "CTRIP",
  "hotelId": "FSDH",
  "stayRange": {
    "checkin": "2021-01-01",
    "checkout": "2021-01-04"
  },
  "contactPerson": {
    "firstName": "小明",
    "lastName": "王",
    "firstNameRoma": "XIAOMING",
    "lastNameRoma": "WANG",
    "email": "007@james.com"
  },
  "roomCriteria": {
    "roomCount": 2,
    "adultCount": 1,
    "childCount": 2,
    "childAges": [
      4,
      8
    ]
  },
  "total": {
    "amountBeforeTax": 640,
    "amountAfterTax": 704
  },
  "payment": {
    "cardCode": "VI",
    "cardNumber": "4111111111111111",
    "cardHolderName": "Sherlock Holmes",
    "expireDate": "0119"
  },
  "guests": [
    {
      "firstName": "小小",
      "lastName": "张",
      "firstNameRoma": "XIAOXIAO",
      "lastNameRoma": "ZHANG"
    }
  ],
  "marketCode": "ASDDD",
  "comments": [
    "no smoking",
    "high floor"
  ],
  "roomRate": {
    "roomId": "King",
    "rateId": "BAR",
    "currency": "USD",
    "amountBeforeTax": [
      100,
      100,
      120
    ],
    "amountAfterTax": [
      110,
      110,
      132
    ],
    "mealPlan": "RO",
    "guarantee": {
      "guaranteeType": "CCG"
    },
    "paymentType": "PayNow",
    "fees": [
      {
        "dateRange": {
          "startDate": "2018-01-01",
          "endDate": "2018-01-04"
        },
        "fee": {
          "name": "Service Charge",
          "type": "Exclusive",
          "amount": 10,
          "amountType": "Percent",
          "chargeType": "PerRoomPerNight",
          "paymentType": "PayNow"
        }
      }
    ],
    "cancelPolicy": {
      "code": "AD100P_100P",
      "description": "Non Refundable"
    }
  },
  "resProfiles": [
    {
      "id": "XX2",
      "name": "XXX2",
      "type": "TRAVEL_AGENT",
      "contact": {
        "email": "xxx@xx.com"
      }
    }
  ],
  "threeDomainSecurity": {
    "cavv": "string",
    "eci": "string",
    "xid": "string",
    "threeDomainSecurityVersion": "string",
    "transactionId": "string",
    "merchantName": "string"
  },
  "notify": false
}

带有会员信息的预订

{
  "header": {
    "echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "reservationIds": {
    "distributorResId": "C2084DFL0",
    "derbyResId": "D15F893D34DF"
  },
  "distributorId": "CTRIP",
  "hotelId": "FSDH",
  "stayRange": {
    "checkin": "2021-01-01",
    "checkout": "2021-01-04"
  },
  "contactPerson": {
    "firstName": "小明",
    "lastName": "王",
    "firstNameRoma": "XIAOMING",
    "lastNameRoma": "WANG",
    "email": "007@james.com"
  },
  "roomCriteria": {
    "roomCount": 2,
    "adultCount": 1,
    "childCount": 2,
    "childAges": [
      4,
      8
    ]
  },
  "total": {
    "amountBeforeTax": 640,
    "amountAfterTax": 704
  },
  "payment": {
    "cardCode": "VI",
    "cardNumber": "4111111111111111",
    "cardHolderName": "Sherlock Holmes",
    "expireDate": "0119"
  },
  "guests": [
    {
      "firstName": "小小",
      "lastName": "张",
      "firstNameRoma": "XIAOXIAO",
      "lastNameRoma": "ZHANG"
    }
  ],
  "marketCode": "ASDDD",
  "comments": [
    "no smoking",
    "high floor"
  ],
  "roomRate": {
    "roomId": "King",
    "rateId": "BAR",
    "currency": "USD",
    "amountBeforeTax": [
      100,
      100,
      120
    ],
    "amountAfterTax": [
      110,
      110,
      132
    ],
    "mealPlan": "RO",
    "guarantee": {
      "guaranteeType": "CCG"
    },
    "paymentType": "PayNow",
    "fees": [
      {
        "dateRange": {
          "startDate": "2018-01-01",
          "endDate": "2018-01-04"
        },
        "fee": {
          "name": "Service Charge",
          "type": "Exclusive",
          "amount": 10,
          "amountType": "Percent",
          "chargeType": "PerRoomPerNight",
          "paymentType": "PayNow"
        }
      }
    ],
    "cancelPolicy": {
      "code": "AD100P_100P",
      "description": "Non Refundable"
    }
  },
  "memberAccount": {
    "programCode": "BW",
    "memberId": "1234567890123457"
  },
  "threeDomainSecurity": {
    "cavv": "string",
    "eci": "string",
    "xid": "string",
    "threeDomainSecurityVersion": "string",
    "transactionId": "string",
    "merchantName": "string"
  },
  "notify": false
}


取消

此 API 用于取消 PMS 的现有预订。

POST https://{your pms endpoint}/cancel HTTP/1.1
Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8


请求


字段类型是否必填描述说明

reservationIds

Object[ReservationIds]

///

ReservationIds/distributorResId

String

渠道订单号

/

ReservationIds/derbyResId

String

德比软件订单号

/

ReservationIds/supplierResId

String

PMS 订单号

/


响应


字段类型是否必填描述说明

reservationIds

Object[ReservationIds]

///

ReservationIds/distributorResId

String

渠道订单号

/

ReservationIds/derbyResId

String

德比软件订单号

/

ReservationIds/supplierResId

String

PMS 订单号

/

cancellationId

String

PMS 订单取消确认号

/


示例


请求

{
  "header": {
    "echoToken": "65510873-0037-464e-a7b6-d6e88336bfc0",
    "timeStamp": "2021-03-21T17:09:04.674Z",
    "version": "0.1"
  },
  "reservationIds": {
    "distributorResId": "C2084DFL0",
    "derbyResId": "D15F893D34DF",
    "supplierResId": "PMS5682587AEC"
  }
}

成功响应

{
  "header": {
    "echoToken": "65510873-0037-464e-a7b6-d6e88336bfc0",
    "timeStamp": "2021-03-21T17:09:05.674Z",
    "version": "0.1"
  },
  "reservationIds": {
    "distributorResId": "C2084DFL0",
    "derbyResId": "D15F893D34DF",
    "supplierResId": "PMS5682587AEC"
  },
  "cancellationId": "PMS5682587AES"
}

失败响应

{
  "header": {
    "echoToken": "65510873-0037-464e-a7b6-d6e88336bfc0",
    "timeStamp": "2021-03-21T17:09:05.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}



修改

此 API 用于修改 PMS 的现有预订。

请注意:通过修改接口推送的修改单,渠道订单号和德比订单号不会改变
POST https://{your pms endpoint}/modify HTTP/1.1
Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8

请求

字段

类型

是否必填

描述

说明

reservationIds

Object[reservationIds]

 /

 /

reservationIds/distributorResId

String

渠道订单号

 /

reservationIds/derbyResId

String

德比订单号

 /

reservationIds/supplierResId

String

PMS订单号

 /

distributorId

String

渠道分销商ID

渠道ID 

iata

String

渠道的IATA 

 /

hotelId

String

酒店代码

 /

stayRange

Object[stayRange]

 /

 /

stayRange/checkin

Date:yyyy-MM-dd

入住日期

 /

stayRange/checkout

Date:yyyy-MM-dd

离店日期

 /

contactPerson

Object[contactPerson]

 /

 /

contactPerson/firstName

String

联系人-名

这是渠道推送的原始名称,可能不包含拉丁字母

contactPerson/lastName

String

联系人-姓氏

contactPerson/firstNameRoma

String

用拉丁字母表示的联系人的名

DerbySoft Property Connect会将联系人的姓名翻译成拉丁字母

contactPerson/lastNameRoma

String

用拉丁字母表示的联系人的姓

contactPerson/email

String

联系人电子邮件

 /

contactPerson/phone

String

联系人电话

 /

contactPerson/address

String

联系人地址

 /

roomCriteria

Object[roomCriteria]

 /

 /

roomCriteria/roomCount

Integer

房间数量

/

roomCriteria/adultCount

Integer

成人数

 

roomCriteria/childCount

Integer

儿童数

 

roomCriteria/childAges

List[Integer]

儿童年龄

 

total

Object[total]

订单总金额

 

total/amountBeforeTax

BigDecimal

税前订单总金额

两者必传一个,或全部传递

total/amountAfterTax

BigDecimal

税后订单总金额

payment

Object[payment]

 /

如果 PMS不符合 PCI-DSS,或者渠道不支持时,此选项为空

payment/cardCode

Enum:

  • VI: Visa

  • MC: Master Card

  • AX: American Express

  • BC: Bank Card

  • BL: Carte Bleu

  • CB: Carte Blanche

  • DN: Diners Club

  • DS: Discover Card

  • EC: Eurocard

  • JC: Japanese Credit Bureau Credit Card

  • TP: Universal Air Travel Card

  • CU: China Unionpay

  • MA: Maestro Card

/

/

payment/cardNumber

String

信用卡号

 /

payment/cardHolderName

String

持卡人姓名

 /

payment/expireDate

Date: MMYY

2位月份+2位年份

示例:0119表示19年1月

guests

List[guests]

 /

 /

guests/firstName

String

客人-名

这是渠道推送的原始名称,可能不包含拉丁字母

guests/lastName

String

客人-姓氏

guests/firstNameRoma

String

用拉丁字符表示的客人名

DerbySoft Property Connect会将联系人的姓名翻译成拉丁字母

guests/lastNameRoma

String

用拉丁字母表示的联系人的姓

guests/email

String

客人电子邮件

 /

guests/phone

String

客人电话

 /

guests/address

String

客人地址

 /

guests/age

Integer

客人年龄

 /

guests/type

Enum

  • Adult

  • Child

  • Infant

客人类型:成人、儿童或婴儿


 /

marketCode

String

仅Synxis提供

 /

comments

List[String]

 /

 /

roomRate

Object[roomRate]

/

 

roomRate/roomId

String

房型代码

 

roomRate/rateId

String

价格代码

 

roomRate/currency

String

标准的货币代码

 

roomRate/amountBeforeTax

List[BigDecimal]

每天税前房价

 

roomRate/amountAfterTax

List[BigDecimal]

每天税后房价

 

roomRate/mealPlan

String

参考附录 - 餐饮方案

roomRate/paymentType

Enum

  • PayNow

  • PayLater

  • CreditPay

  • Other

支付方式:现付、预付、信用住

 /

roomRate/guarantee

Object[guarantee]

 /

 /

guarantee/guaranteeType

Enum

-CCG

-GTTA

-GTC

-GTP

-NG

 CCG: 信用卡担保

GTTA: 旅行社担保

GTC: 公司担保

GTP: 酒店担保

NG: 无担保

/

fees

List[fees]

税费清单

 /

fees/dateRange

Object[dateRange]

 /

 /

dateRange/startDate

Date:yyyy-MM-dd

开始日期

 /

dateRange/endDate

Date:yyyy-MM-dd

结束日期

包括结束日期

fees/fee

Object[fee]

 /

 /

fee/name

String

税费名称

 /

fee/type

Enum

  • Inclusive

  • Exclusive

税费是否已包含在价格内

 /

fee/amount

String

税费的金额

 /

fee/amountType

Enum

  • Fix

  • Percent

金额计算方式


固定值、比例

 /

fee/chargeType

Enum

  • PerRoomPerNight

  • PerPersonPerNight

  • PerRoomPerStay

  • PerPersonPerStay

 收取方式

 /

fee/paymentType

Enum

  • PayLater

  • PayNow

费用预付给酒店(预付)或在酒店支付(后付)

/

cancelPolicy

Object[cancelPolicy]

取消政策定义了当客人在特定提前时间范围内取消预订时将收取什么罚款。应到未到的客人和不可取消的时间范围有关

 

cancelPolicy/code

String

 取消政策编码

参考附录 - 取消政策

cancelPolicy/description

String

取消政策描述

 

resProfiles

List[ResProfile]

档案信息

 

resProfiles/id

String

档案ID

 

resProfiles/name

String

档案名称

 

resProfiles/type

Enum

  • COMPANY

  • TRAVEL_AGENT

档案类型

  • 公司
  • 代理

 

resProfiles/contact

Object[Contact]

联系人信息

 

contact/email

String

电子邮件

 

corpAccount

Object[CorpAccount]

 协议公司信息

 

corpAccount/corpProgramCode

String

协议公司编号

 

corpAccount/corpId

String

协议公司ID

 

memberAccount

Object[MemberAccount]

 会员信息

 

memberAccount/programCode

String

会员代码

 

memberAccount/memberLevel

String

会员层级

 

memberAccount/memberId

String

会员ID

 

notify

Boolean

预订通知模式


true:预订通知模式。渠道分销商已经向客户确认了预订,无论可用性或价格是否有效,您的PMS都必须接受预订。

false:预订请求模式。渠道分销商就会根据你的PMS结果向客户确认预订。

 

extensions

Map<String:String>

扩展字段

 

threeDomainSecurity

Object[ThreeDomainSecurity]

 当3DS验证信用卡持有者有效性

 

ThreeDomainSecurity/cavv

String

 

ThreeDomainSecurity/eci

String

 

ThreeDomainSecurity/xid

String

 

ThreeDomainSecurity/threeDomainSecurityVersion

String

 

ThreeDomainSecurity/merchantName

String

 


示例


请求:

{
  "header": {
    "echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "reservationIds": {
    "distributorResId": "C2084DFL0",
    "derbyResId": "D15F893D34DF",
    "supplierResId": "89389494"
  },
  "distributorId": "CTRIP",
  "hotelId": "FSDH",
  "stayRange": {
    "checkin": "2021-01-01",
    "checkout": "2021-01-04"
  },
  "contactPerson": {
    "firstName": "小明",
    "lastName": "王",
    "firstNameRoma": "XIAOMING",
    "lastNameRoma": "WANG",
    "email": "007@james.com"
  },
  "roomCriteria": {
    "roomCount": 2,
    "adultCount": 1,
    "childCount": 2,
    "childAges": [
      4,
      8
    ]
  },
  "total": {
    "amountBeforeTax": 640,
    "amountAfterTax": 704
  },
  "payment": {
    "cardCode": "VI",
    "cardNumber": "4111111111111111",
    "cardHolderName": "Sherlock Holmes",
    "expireDate": "0119"
  },
  "guests": [
    {
      "firstName": "小小",
      "lastName": "张",
      "firstNameRoma": "XIAOXIAO",
      "lastNameRoma": "ZHANG"
    }
  ],
  "marketCode": "ASDDD",
  "comments": [
    "no smoking",
    "high floor"
  ],
  "roomRate": {
    "roomId": "King",
    "rateId": "BAR",
    "currency": "USD",
    "amountBeforeTax": [
      100,
      100,
      120
    ],
    "amountAfterTax": [
      110,
      110,
      132
    ],
    "mealPlan": "RO",
    "guarantee": {
      "guaranteeType": "CCG"
    },
    "paymentType": "PayNow",
    "fees": [
      {
        "dateRange": {
          "startDate": "2018-01-01",
          "endDate": "2018-01-04"
        },
        "fee": {
          "name": "Service Charge",
          "type": "Exclusive",
          "amount": 10,
          "amountType": "Percent",
          "chargeType": "PerRoomPerNight",
          "paymentType": "PayNow"
        }
      }
    ],
    "cancelPolicy": {
      "code": "AD100P_100P",
      "description": "Non Refundable"
    }
  },
  "resProfiles": [
    {
      "id": "XX1",
      "name": "XXX1",
      "type": "COMPANY",
      "contact": {
        "email": "xxx@xx.xx"
      }
    },
    {
      "id": "XX2",
      "name": "XXX2",
      "type": "TRAVEL_AGENT"
    }
  ],
  "memberAccount": {
    "programCode": "BW",
    "memberId": "1234567890123457"
  },
  "corpAccount": {
    "corpProgramCode": "CR",
    "corpId": "A-1232"
  },
  "threeDomainSecurity": {
    "cavv": "string",
    "eci": "string",
    "xid": "string",
    "threeDomainSecurityVersion": "string",
    "transactionId": "string",
    "merchantName": "string"
  },
  "notify": false
}


成功响应

{
  "header": {
    "echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "reservationIds": {
    "distributorResId": "C2084DFL0",
    "derbyResId": "D15F893D34DF",
    "supplierResId": "89389494"
  }
}

失败响应

{
  "header": {
    "echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
    "timeStamp": "2018-06-27T17:09:04.674Z",
    "version": "0.1"
  },
  "errorCode": "InvalidField",
  "errorMessage": "Invalid token"
}



订单状态(异步回调)

此 API 用于将订单状态从 PMS 同步到 Property Connector,确保 Property Connector 中的状态正确。

POST /pcapigateway/tunnel/{accountId}/resStatus HTTP/1.1
Authorization: Bearer 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8


请求

字段

类型

是否必填

描述

备注

reservationIds

Object[ReservationIds]

 

 

ReservationIds/supplierResId

String

PMS订单ID

 

ReservationIds/cancellationId

String

如果是取消单,请输入取消单ID

 

hotelId

String

 

 

cancellationDate

Date: yyyy-MM-dd

 

 

roomNo

String

 

 

amountBeforeTax

BigDecimal

 

 

amountAfterTax

BigDecimal

 

 

currency

String

符合 ISO 4217 标准的货币

 

status

Enum

  • CheckedOut

  • Cancelled

  • NoShow

  • Inhouse

Inhouse, CheckedOut, Cancelled, NoShow

 


示例


请求:

{
	"header": {
		"echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
		"timeStamp": "2021-06-27T17:09:04.674Z",
		"version": "0.2"
	},
	"reservationIds": {
		"supplierResId": "C2084DFL0"
	},
	"hotelId": "FSDH",
	"roomNo": "1805",
	"amountBeforeTax": 200,
	"amountAfterTax": 218.88,
	"currency": "USD",
	"status": "CheckedOut"
}

成功响应

{
	"header": {
		"echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
		"timeStamp": "2021-06-27T17:09:04.674Z",
		"version": "0.2"
	}
}

失败响应

{
	"header": {
		"echoToken": "f67ade36-0b83-49cf-bfb1-b932c45b7d34",
		"timeStamp": "2021-06-27T17:09:04.674Z",
		"version": "0.2"
	}
	"errorCode": "InvalidField",
	"errorMessage": "Invalid token"
}