实施和设置

为旅客提供积分或里程以外的价值

通过白标模板,您的旅客可以赚取会员奖励(无论您的计划如何定义),然后通过旅行消费兑换奖励。本文档概述了可用的会员计划操作,并介绍了在测试和生产环境中实施服务的流程。

您将提供带有 JSON 有效负载的标准 RESTFul 服务。我们建议对所有 API 请求使用访问令牌和 JSON web 令牌。调用 API 时还会涉及额外的安全步骤,请求和响应有效负载中的所有敏感数据元素都将被加密。

在设置模板网站时,您可以选择允许客户兑换他们通过所选业务线赚取的会员奖励。

此外,他们还可以联系 Expedia 品牌网站的客服来使用这些积分。我们的内部客服会使用帐户信息 API 来验证旅客信息。通过验证后,他们会利用积分银行 API 获取旅客的帐户余额并协助预订。

您的 Expedia 项目上线经理将与您合作,获取包括 SSO 设置在内的所有必要详细信息,例如:您的品牌或计划名称、计划中的所有会员等级或积分段、会员奖励名称以及兑换比例(例如,消费 $1 = 100 积分)。

我们还需要您提供:

  • 访问令牌 API
  • ClientId 和密钥
  • 会员积分兑换端点
  • 您与客户沟通的服务级别协议 (SLA)

对于在您终端的设置,我们将提供:

  • OpenAPI 规范
  • 如果使用 Authorization2 参数,则提供 JSON web 密钥 (JWK) 端点

调用 API

Expedia 使用访问令牌调用 API。访问令牌将作为 Bearer 令牌在授权 HTTP 标头中提供。系统将生成所需的请求签名令牌,并在 Authorization2 HTTP 标头中提供。

授权端点

要获取用于 API 调用的访问令牌,首先需要用 ClientId 和密钥设置授权服务器。然后使用 POST : https://<your-oauth-endpoint> 调用来提出请求。

请求

字段说明示例值字段类型是否必填?
content-type表示请求格式application/x-www-form-urlencoded字符串
grant_type针对请求的授权方式,如客户端凭据client-credentials&client_id=<client_id>&client_secret=<client_secret>字符串
client_id已注册的应用程序标识符a17c21ed& 
client_secretclient_id 对应的密钥  

响应

字段说明示例值字段类型是否必填?
content-type表示响应正文格式application/json字符串
token_type令牌的受众;表示提供的访问类型Bearer 
access_token引用 client_id 的访问令牌  
expires_in访问令牌的过期时间,以秒为单位86400 

错误

字段说明示例值字段类型是否必填?
error发生错误,如参数无效invalid_request
invalid_client
invalid_grant
字符串
errorMessage用于协助日志记录和问题调查的自定义错误消息 字符串

JWK 端点响应

我们将与您共享一个 URL,您可以从中获取 JWK 用于验证。例如:GET : https:// <WLT_Domain>/keys/public-keys --header Authorization : Bearer - Partner_client_api_key

字段说明
alg签名算法
kty加密密钥类型
kid密钥标识符
use密钥的用途:用于签名 (sig) 或加密 (enc)
x5tX.509 证书指纹
x5cX.509 证书链
expires_on证书到期日期

请求签名

我们建议使用 JSON web 令牌 (JWT) 为所有 API 请求签名。请求签名的步骤如下:

  1. 我们会设置 2048 位 CA 签名的 RSA 私钥。
  2. 我们会通过 JWK URL 发布公钥证书(如上所述)。
  3. 然后,我们会创建一个包含签发者、主题、受众和过期声明的 JWT 令牌,并使用私钥为令牌签名。
  4. Expedia JWT 令牌将包含密钥标识符 kid 和 x5t,其中包含公钥证书的指纹。
  5. 执行 API 调用时,您将从授权标头中提取 JWT,并使用 Expedia 的公钥验证 JWT 签名。您会使用 kid 标头来识别密钥(如果 Expedia 的 JWK URL 中存在多个密钥)。
  6. 接下来,您会安排一次对 Expedia 的 JWK 端点的 API 调用,以获取公钥证书。
  7. 如果签名验证失败,还可以使用重试逻辑获取新证书。
您觉得这个页面有用吗?
我们该如何改进这些内容?
感谢您帮助我们改进!