LOGO

API文档 v1.3

最后更新:2021年8月31日

如果您拥有其它渠道的预约系统(比如有赞商城,或独立网店),但是希望把这些渠道所收到的订单数据汇集到Darkroom「暗房」 进行统一管理,那么这个API接口正是您所需要的。「暗房」的API接口,目前仅限专业版 商家使用。使用API之前,您需要先联系DR客服生成一对API秘钥。对于中小型机构,我们更建议您直接使用「暗房」官方自带的在线预约模块

鉴权算法

本接口使用Basic Auth方式进行鉴权。首先你需要获得一对API KEYAPI SECRET;然后,在每一个请求发送之前,你需要使用HMAC-SHA256算法计算出一个签名,该签名基于API KEY,API SECRET、当前时间戳、以及发送的数据包的内容。

需要注意的是,发送的数据包里的所有值(包括数字),都必须转换为字符串格式再发送,比如 {"num":123} 必须转为 {"num":"123"}。以下是以PHP为例的签名计算方式:

<?php

//这是你需要传递的参数示例,请注意,所有数字都需要转为字符串格式:

$payload=array(

    'key1' => strval('value1'),

    'key2' => strval('value2')

);

//获得当前时间戳,并强制转为字符串格式:

$timestamp = strval(gmdate('U'));

//初始化发送给API的数据包:

$queries=array_merge($payload, array(

    'api_key' => 'API_KEY',

    'api_ts' => $timestamp,

));

//按照键的升序对数据包进行排序:

ksort($queries);

//把数据包转化为字符串:

$string = json_encode($queries);

//计算签名:

$queries['api_sig'] = hash_hmac('sha256', $string, 'API_SECRET');

// 假设 API_KEY = "ABC"
// 假设 API_SECRET = "XYZ"
// 假设 $timestamp = "1533435628"
// 那么上述例子中所计算出来的签名应该是:
// b750bb6b0c193d8fba94a2c701c9d662bcbd1b105fd33b7ca5370f04dc66648e

本接口的请求是无状态的,因此每一个请求的数据包里都必须包含鉴权所需的全部参数。通过CURL发送一次POST请求的示例:

curl -X POST -d '{"key1":"value1", "key2":"value2", "api_key":"ABC", "api_ts":"1533435628", "api_sig":"25f0b...209e9" }' -H "Content-Type: application/json" https://api.darkroom.net/v1.3