Changelly API 接口使用指南
Changelly API 为开发者提供了一种程序化接入其加密货币兑换服务的方式。通过 API,开发者可以将 Changelly 的兑换功能集成到自己的平台、钱包、交易所或其他应用程序中,实现自动化加密货币兑换。以下是 Changelly API 的详细使用指南,涵盖主要功能、认证方式以及代码示例。
1. API 概览
Changelly API 采用 RESTful 架构,这意味着你可以使用标准的 HTTP 方法(如 GET、POST、PUT、DELETE 等)来与 API 进行交互。这种架构风格简化了客户端与服务器之间的通信,易于理解和使用。API 提供了广泛的功能集,允许开发者集成 Changelly 的加密货币兑换服务到各种应用中,具体功能包括:
- 获取汇率: 查询指定两种加密货币之间的实时汇率。该功能允许你获取精确的兑换比例,基于当前市场价格。API 会返回买入价和卖出价,并可能包括手续费和网络费用等详细信息,确保用户了解最终的兑换成本。
- 创建兑换交易: 发起一个加密货币兑换请求。你需要指定要兑换的加密货币种类、兑换数量和接收地址。API 会验证请求的有效性,并在成功后返回一个交易 ID,用于后续追踪。该接口支持固定汇率和浮动汇率两种模式,具体取决于你的需求。
- 查询交易状态: 追踪已发起的兑换交易的进度。通过提供交易 ID,你可以获取交易的当前状态,例如:等待付款、处理中、已完成或已取消。API 返回的状态信息可以帮助用户了解交易的执行情况,并及时处理可能出现的问题。
- 获取最小/最大兑换金额: 确定对于特定加密货币对,可以进行兑换的最小和最大金额。这些限制由 Changelly 动态设置,取决于市场流动性、网络费用和风险管理策略。API 允许开发者在提交交易前,验证兑换金额是否在允许范围内。
- 获取支持的加密货币: 列出 Changelly 支持的所有加密货币。API 返回一个加密货币列表,包括它们的名称、代币符号、精度以及其他相关信息。开发者可以使用该列表来构建用户界面,显示可供兑换的加密货币选项,并且可以动态更新支持的币种。
2. 认证
要使用 Changelly API,必须进行身份验证以确保安全通信。 Changelly 采用 API 密钥机制进行身份验证,从而保护用户数据并防止未经授权的访问。 您需要在 Changelly 合作伙伴平台上创建一个帐户。注册成功后,您可以生成唯一的 API 密钥,该密钥将用于所有后续 API 请求。
身份验证通过在每个 API 请求的头部中包含以下信息来实现:
-
X-API-Key
: 您的 API 密钥。该密钥是您身份的证明,请妥善保管。 -
X-Nonce
: 一个唯一的随机数,用于防止重放攻击。 重放攻击是指攻击者截获并重新发送有效的 API 请求。 为了抵御此类攻击,建议使用 Unix 时间戳(自 Unix 纪元以来的秒数)作为随机数。 每次请求都使用不同的时间戳,确保唯一性。 -
X-Sign
: 请求体的 HMAC-SHA512 签名,使用您的 API 密钥作为密钥。 此签名用于验证请求的完整性,确保请求在传输过程中未被篡改。 HMAC-SHA512 是一种加密哈希算法,可生成消息的唯一指纹。 通过使用 API 密钥对请求体进行签名,Changelly 可以验证请求是否来自授权来源。
更具体地说,
X-Sign
的生成过程如下:您需要使用您的 API 密钥作为密钥,对整个请求体(JSON 格式的字符串)进行 HMAC-SHA512 哈希运算。 生成的哈希值(通常是十六进制字符串)将作为
X-Sign
头部的值发送。 服务端会使用相同的算法和密钥重新计算签名,并与您提供的签名进行比较。 如果两个签名匹配,则请求被认为是有效的。
签名生成过程:
- 将请求体(JSON 格式)进行规范化字符串化,确保键值对的顺序一致,并移除不必要的空格或换行符。这一步至关重要,因为任何细微的差异都将导致签名验证失败。
- 使用你的 API 密钥作为密钥,并采用 HMAC-SHA512(Hash-based Message Authentication Code with SHA-512)算法对规范化后的字符串化的请求体进行签名。HMAC-SHA512 是一种广泛应用于消息认证的安全哈希算法,能够有效防止篡改和重放攻击。 确保API密钥的安全,避免泄露,因为密钥的泄露会导致安全风险。
- 将生成的签名转换为十六进制字符串,以便在 HTTP 请求头中进行传输。 十六进制编码是一种常用的表示二进制数据的方式,它将每个字节转换为两个十六进制字符。 请确保转换过程正确无误,避免引入错误。
3. 主要 API 端点和功能
3.1 获取汇率 (getExchangeAmount)
此端点用于查询两种指定加密货币之间的实时汇率,为用户提供即时兑换比例参考。
-
Endpoint:
/api/v1/exchangeAmount
- Method: POST
- Request Body:
-
from
: 要兑换的源加密货币代码,例如 "btc" 代表比特币。 -
to
: 要接收的目标加密货币代码,例如 "eth" 代表以太坊。 -
amount
: 要兑换的源加密货币数量,类型为字符串,应能解析为数值。 -
type
: 交易类型,决定了汇率计算的方向。direct
(直接)表示计算将from
兑换为to
的汇率,reverse
(反向)表示计算将to
兑换为from
的汇率。 - Response:
-
result
: 兑换后的目标加密货币数量,类型为字符串,精确到小数点后多位,具体精度取决于系统设置和市场波动。 -
currencyFrom
: 兑换的源加密货币代码,与请求体中的from
字段对应。 -
currencyTo
: 接收的目标加密货币代码,与请求体中的to
字段对应。
JSON格式的请求体,用于指定兑换的货币类型、数量和方向。
{
"from": "btc",
"to": "eth",
"amount": "1",
"type": "direct" // 'direct' 表示从 'from' 兑换到 'to', 'reverse' 表示从 'to' 兑换到 'from'
}
JSON格式的响应体,包含兑换结果和相关货币信息。
{
"result": "12.345",
"currencyFrom": "btc",
"currencyTo": "eth"
}
示例代码 (Python):
此示例代码演示了如何使用 Python 调用加密货币交易所的 API 接口,以获取不同加密货币之间的兑换汇率。它利用了
hashlib
,
hmac
,
,
time
和
requests
库。
import hashlib
import hmac
import
import time
import requests
为了安全地调用 API,您需要替换以下占位符,务必妥善保管您的 API 密钥和私钥。 API 密钥用于标识您的身份,私钥用于生成消息签名,防止数据篡改。 请注意,实际环境中应从安全的环境变量或配置文件中读取这些密钥,避免硬编码在代码中。
api_key = "YOUR_API_KEY"
secret_key = "YOUR_SECRET_KEY"
api_url = "https://api.changelly.com/api/v1/exchangeAmount"
generate_sign
函数用于生成 API 请求的数字签名。它使用 HMAC-SHA512 算法,将请求消息和您的私钥进行哈希运算。签名确保请求的完整性和真实性,防止中间人攻击。
def generate_sign(message, secret):
message = message.encode('utf-8')
secret = secret.encode('utf-8')
signature = hmac.new(secret, message, digestmod=hashlib.sha512).hexdigest()
return signature
get_exchange_amount
函数封装了 API 调用逻辑。它接收要兑换的币种、目标币种和数量作为参数,构建请求 payload,生成签名,并发送 POST 请求到 API 接口。返回结果为 JSON 格式的响应。
def get_exchange_amount(from_currency, to_currency, amount):
payload = {
"from": from_currency,
"to": to_currency,
"amount": str(amount),
"type": "direct"
}
nonce = str(int(time.time()))
message = .dumps(payload, separators=(',', ':'))
sign = generate_sign(message, secret_key)
headers = {
"X-API-Key": api_key,
"X-Nonce": nonce,
"X-Sign": sign,
"Content-Type": "application/"
}
response = requests.post(api_url, headers=headers, data=message)
return response.()
示例用法:
使用
get_exchange_amount
函数可以方便地获取加密货币兑换的预估数量。该函数接受三个参数:要兑换的加密货币的代币符号(例如 "btc"),目标加密货币的代币符号(例如 "eth"),以及要兑换的数量。
以下是一个使用示例,展示了如何使用该函数将 1 个比特币(BTC)兑换为以太坊(ETH):
result = get_exchange_amount("btc", "eth", 1)
print(result)
函数
get_exchange_amount
将返回一个表示预估兑换数量的数值。请注意,实际的兑换数量可能会因市场波动、交易费用和滑点等因素而略有不同。建议在进行实际交易前,仔细核对兑换平台的实时报价。确保您已正确安装并配置了必要的加密货币交易所 API 密钥,以便函数能够正常访问市场数据。参数中的代币符号应使用小写,以便和交易所API保持一致。
3.2 创建兑换交易 (createTransaction)
此端点允许你创建一个新的加密货币兑换交易,从而启动将一种加密货币转换为另一种加密货币的过程。通过提供必要的参数,API将生成一个唯一的交易ID以及详细的支付说明。
-
Endpoint:
/api/v1/transactions
- Method: POST
- Request Body:
-
from
: 要进行兑换的源加密货币的代码 (例如:btc
代表比特币)。此代码必须是系统中支持的有效加密货币代码。 -
to
: 你希望收到的目标加密货币的代码 (例如:eth
代表以太坊)。此代码也必须是系统中支持的有效加密货币代码。 -
address
: 接收目标加密货币的钱包地址。确保此地址与目标加密货币 (to
字段) 兼容,否则可能会导致资金损失。 请务必验证地址的正确性。 -
amountExpectedFrom
: 用户期望用于兑换的源加密货币数量。该值应为字符串格式的数值,代表实际的加密货币数量。 -
amountExpectedTo
: 用户期望收到的目标加密货币数量。该值应为字符串格式的数值,代表实际的加密货币数量,基于当前的汇率和可能的交易费用。 -
extraId
: 对于某些加密货币,如瑞波币 (XRP)、门罗币 (XMR) 或 EOS,需要额外的标识符 (memo 或 tag) 来正确识别交易并将其分配给正确的账户。 如果目标加密货币需要extraId
,则必须在此处提供。如果不需要,则设置为null
。请注意,不正确的extraId
可能会导致资金损失。 - Response:
-
id
: 由系统生成的唯一交易标识符。使用此ID跟踪交易状态。 -
payinAddress
: 用于将from
加密货币发送到兑换服务的地址。用户需要将指定数量的amountExpectedFrom
发送到此地址,以启动兑换过程。 请注意,如果发送的金额与amountExpectedFrom
不符,交易可能会失败或延迟。 -
payoutAddress
: 用户指定的接收to
加密货币的地址。兑换完成后,兑换后的加密货币将发送到此地址。 这通常与请求正文中的address
字段相同。 -
amountExpectedFrom
: 用户期望兑换的源加密货币的数量。 该值与请求正文中的值相同。 -
amountExpectedTo
: 用户期望收到的目标加密货币的数量。 该值与请求正文中的值相同,并基于创建交易时的汇率计算。 -
currencyFrom
: 被兑换的源加密货币的代码。 该值与请求正文中的from
字段相同。 -
currencyTo
: 收到的目标加密货币的代码。 该值与请求正文中的to
字段相同。 -
status
: 交易的当前状态。 可能的状态包括:-
new
: 交易已创建,等待用户发送源加密货币。 -
waiting
: 系统正在等待接收源加密货币。 -
confirming
: 源加密货币的交易正在区块链上确认。 -
exchanging
: 兑换过程正在进行中。 -
sending
: 兑换后的加密货币正在发送到目标地址。 -
finished
: 兑换已成功完成。 -
failed
: 兑换失败。 这可能是由于多种原因造成的,例如发送的金额不正确或区块链确认失败。 -
refunded
: 源加密货币已退还给用户。
-
-
createdAt
: 交易创建的日期和时间,采用 ISO 8601 格式 (例如:2023-10-27T10:00:00.000Z
)。
发送到此端点的请求体应包含以下JSON结构,其中包含有关兑换的详细信息:
{
"from": "btc",
"to": "eth",
"address": "0x1234567890123456789012345678901234567890",
"amountExpectedFrom": "1",
"amountExpectedTo": "12.345",
"extraId": null // Required for coins like XRP, XMR, EOS.
}
成功创建兑换交易后,API将返回一个JSON响应,其中包含以下字段:
{
"id": "transaction_id",
"payinAddress": "payin_address",
"payoutAddress": "payout_address",
"amountExpectedFrom": "1",
"amountExpectedTo": "12.345",
"currencyFrom": "btc",
"currencyTo": "eth",
"status": "new",
"createdAt": "2023-10-27T10:00:00.000Z"
}
示例代码 (Python):
本示例演示了如何使用 Python 与 Changelly API 交互,创建一个加密货币交易。它涵盖了必要的导入、API 密钥设置、签名生成以及构造和发送 API 请求的关键步骤。
import hashlib
import hmac
import
import time
import requests
这些导入语句引入了执行加密货币交易所需的 Python 库:
-
hashlib
:提供各种哈希算法,用于生成安全消息摘要。 -
hmac
:用于创建消息认证码,通过使用密钥将哈希函数应用于消息,来验证消息的完整性和真实性。 -
-
time
:提供与时间相关的功能,例如获取当前时间戳,用于生成 nonce 值。 -
requests
:一个流行的 HTTP 库,简化了发送 HTTP 请求的过程。
api_key = "YOUR_API_KEY"
secret_key = "YOUR_SECRET_KEY"
api_url = "https://api.changelly.com/api/v1/transactions"
这些变量存储了与 Changelly API 交互所需的凭据和端点:
-
api_key
:您的 Changelly API 密钥,用于验证您的请求。请务必替换"YOUR_API_KEY"
为您的实际 API 密钥。 -
secret_key
:您的 Changelly API 密钥,用于生成请求签名。请务必替换"YOUR_SECRET_KEY"
为您的实际密钥。 -
api_url
:Changelly API 的交易端点 URL。
def generate_sign(message, secret):
message = message.encode('utf-8')
secret = secret.encode('utf-8')
signature = hmac.new(secret, message, digestmod=hashlib.sha512).hexdigest()
return signature
此函数用于生成请求的数字签名,确保数据的完整性和真实性:
-
它接受消息 (
message
) 和密钥 (secret
) 作为输入。 - 将消息和密钥编码为 UTF-8 字节串。
-
然后,使用
hmac.new()
函数创建一个 HMAC 对象,使用 SHA512 哈希算法对消息进行哈希处理。 - 将哈希结果转换为十六进制字符串,并返回该字符串作为签名。
def create_transaction(from_currency, to_currency, address, amount_expected_from, amount_expected_to, extra_id=None):
payload = {
"from": from_currency,
"to": to_currency,
"address": address,
"amountExpectedFrom": str(amount_expected_from),
"amountExpectedTo": str(amount_expected_to),
"extraId": extra_id
}
此函数构造用于创建交易的有效负载 (payload):
-
from_currency
:要兑换的币种代码。 -
to_currency
:要收到的币种代码。 -
address
:接收币种的地址。 -
amount_expected_from
: 期望发送的数量。 -
amount_expected_to
: 期望收到的数量。 -
extra_id
:可选参数,某些币种(例如 XRP)需要此参数来标识交易。
amountExpectedFrom
和
amountExpectedTo
被转换为字符串类型。
nonce = str(int(time.time()))
message = .dumps(payload, separators=(',', ':'))
sign = generate_sign(message, secret_key)
headers = {
"X-API-Key": api_key,
"X-Nonce": nonce,
"X-Sign": sign,
"Content-Type": "application/"
}
response = requests.post(api_url, headers=headers, data=message)
return response.text
这部分代码执行以下操作:
-
nonce = str(int(time.time()))
:生成一个 nonce 值,这是一个单次使用的随机数,用于防止重放攻击。这里使用当前时间戳的整数部分作为 nonce,并将其转换为字符串。 -
message = .dumps(payload, separators=(',', ':'))
:将 payload 字典转换为 JSON 字符串。separators=(',', ':')
参数用于去除 JSON 字符串中的空格,使其更紧凑。 -
sign = generate_sign(message, secret_key)
:使用之前定义的generate_sign()
函数,使用 JSON 消息和您的secret_key
生成签名。 -
构造 HTTP 头部:
-
"X-API-Key": api_key
:包含您的 API 密钥。 -
"X-Nonce": nonce
:包含生成的 nonce 值。 -
"X-Sign": sign
:包含生成的签名。 -
"Content-Type": "application/"
:指定请求正文的内容类型为 JSON。
-
-
response = requests.post(api_url, headers=headers, data=message)
:使用requests.post()
函数发送 POST 请求到 Changelly API。请求包含 API URL、HTTP 头部和 JSON 消息。 -
return response.text
:返回 API 响应的文本内容。
示例用法:
以下展示了如何使用
create_transaction
函数创建一个从比特币 (BTC) 到以太坊 (ETH) 的跨链交易。函数接受多个参数,包括源链和目标链的标识符、接收者的地址、发送的金额以及手续费等信息。
result = create_transaction("btc", "eth", "0x1234567890123456789012345678901234567890", 1, 12.345)
上述代码调用
create_transaction
函数,参数解释如下:
-
"btc"
: 表示源链为比特币区块链。 -
"eth"
: 表示目标链为以太坊区块链。 -
"0x1234567890123456789012345678901234567890"
: 表示目标链上接收者的以太坊地址。这是一个示例地址,实际使用时应替换为有效的以太坊地址。 -
1
: 表示手续费 (fee),单位通常为对应链的原生代币,这里假设是 1 个 BTC 单位的费用,用于激励矿工或验证者处理交易。 -
12.345
: 表示发送的金额,即从 BTC 转移到 ETH 的数量。单位通常为对应链的原生代币,这里表示 12.345 个 BTC。
print(result)
这行代码用于打印
create_transaction
函数返回的结果。结果可能包含交易的哈希值、交易的状态以及其他相关信息。具体返回值的格式取决于
create_transaction
函数的实现。
注意:
实际应用中,
create_transaction
函数的实现会涉及复杂的密码学操作、签名过程和链间通信协议。此示例仅用于演示函数的基本用法,不包含底层的具体实现细节。跨链交易的安全性至关重要,需要仔细评估和审计相关的代码和协议。
3.3 查询交易状态 (getTransaction)
此端点用于查询特定交易的当前状态,提供有关交易进度的详细信息。开发者可以使用此端点实时跟踪交易,确保其按预期执行。
-
Endpoint:
/api/v1/transactions/{transaction_id}
- Method: GET
- Description: 通过提供唯一的交易ID,检索有关该交易的所有可用信息。
-
Parameters:
-
transaction_id
(路径参数): 必需。代表要查询的特定交易的唯一标识符。
-
-
Response:
服务器将返回一个 JSON 对象,其中包含有关请求交易的详细信息。如果交易不存在或发生其他错误,则会返回相应的错误代码。
{ "id": "transaction_id", "payinAddress": "payin_address", "payoutAddress": "payout_address", "amountExpectedFrom": "1", "amountExpectedTo": "12.345", "amountFrom": "1.00000000", "amountTo": "12.34500000", "currencyFrom": "btc", "currencyTo": "eth", "status": "finished", "createdAt": "2023-10-27T10:00:00.000Z", "updatedAt": "2023-10-27T10:15:00.000Z", "networkFees": "0.0001", "provider": "Changelly", "confirmations": 6, "txId": "0xabcdef1234567890" }
字段说明:
-
id
: 交易的唯一标识符。 此 ID 用于在整个系统中跟踪交易。 -
payinAddress
: 用户用于发送from
加密货币的地址。 这是用户启动交易时使用的地址。 -
payoutAddress
: 接收to
加密货币的地址。这是接收兑换后加密货币的目标地址。 -
amountExpectedFrom
: 用户期望发送的from
加密货币的金额。 -
amountExpectedTo
: 用户期望收到的to
加密货币的金额。 此金额可能会因汇率和费用而异。 -
amountFrom
: 实际收到的from
加密货币的金额。 由于网络费用或用户错误,此金额可能与预期金额略有不同。 -
amountTo
: 实际发送的to
加密货币的金额。 这是用户实际收到的金额。 -
currencyFrom
: 用户发送的加密货币的代码(例如,"btc")。 -
currencyTo
: 用户接收的加密货币的代码(例如,"eth")。 -
status
: 交易的当前状态。 可能的值包括 "pending"、"confirming"、"finished"、"failed" 等。 -
createdAt
: 交易创建的时间戳,采用 ISO 8601 格式。 -
updatedAt
: 交易上次更新的时间戳,采用 ISO 8601 格式。 -
networkFees
: 交易产生的网络手续费,以currencyFrom
为单位。 -
provider
: 处理交易的第三方提供商的名称(例如 Changelly、Coinbase)。 -
confirmations
: 交易在区块链上获得的确认数。 -
txId
: 交易在区块链上的交易 ID (Transaction Hash)。
-
-
可能的 Status 值:
-
pending
: 交易已提交,正在等待处理。 -
confirming
: 交易正在等待区块链确认。 -
finished
: 交易已成功完成。 -
failed
: 交易失败,原因可能是多种多样的,例如无效的地址或网络问题。 -
refunded
: 交易已退款。 -
expired
: 交易已过期。
-
-
错误处理:
如果交易 ID 无效或找不到交易,API 将返回相应的错误代码和消息。
示例代码 (Python):
以下Python代码示例演示了如何使用HMAC-SHA512算法生成签名,并利用该签名向加密货币交易所Changelly的API发起安全请求,以查询特定交易的状态。 代码依赖于 hashlib、hmac、time 和 requests 库。
import hashlib
import hmac
import time
import requests
import # 引入库,用于处理API响应
api_key = "YOUR_API_KEY" # 替换为您的API密钥
secret_key = "YOUR_SECRET_KEY" # 替换为您的密钥
def generate_sign(message, secret):
"""
使用HMAC-SHA512算法生成签名。
参数:
message (str): 要签名的消息。
secret (str): 用于签名的密钥。
返回值:
str: 十六进制格式的签名。
"""
message = message.encode('utf-8') # 将消息编码为UTF-8字节串
secret = secret.encode('utf-8') # 将密钥编码为UTF-8字节串
signature = hmac.new(secret, message, digestmod=hashlib.sha512).hexdigest() # 使用HMAC-SHA512生成签名,并转换为十六进制
return signature
def get_transaction_status(transaction_id):
"""
查询指定交易ID的状态。
参数:
transaction_id (str): 要查询的交易ID。
返回值:
dict: 包含交易状态信息的字典。如果请求失败,则返回None。
"""
api_url = f"https://api.changelly.com/api/v1/transactions/{transaction_id}" # 构建API请求URL
nonce = str(int(time.time())) # 生成一个随机数,作为nonce,防止重放攻击。通常使用当前时间戳。
message = "" # GET 请求没有消息体
sign = generate_sign(message, secret_key) # 使用密钥对消息进行签名
headers = {
"X-API-Key": api_key, # 您的API密钥
"X-Nonce": nonce, # 随机数
"X-Sign": sign, # 请求签名
"Content-Type": "application/" # 指定请求体的格式为JSON
}
try:
response = requests.get(api_url, headers=headers) # 发送GET请求
response.raise_for_status() # 如果响应状态码不是200,则抛出HTTPError异常。
return response.() # 解析JSON响应
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
return None
注意事项:
-
请务必妥善保管您的
API_KEY
和SECRET_KEY
,避免泄露。 -
nonce
必须是唯一的,并且随着每个请求递增,以防止重放攻击。使用时间戳是一个常见的做法。 - 错误处理至关重要。在实际应用中,您需要处理各种可能的异常情况,例如网络连接问题、API密钥无效、签名不匹配等。 使用try...except 块来捕获 requests 的异常.
-
response.raise_for_status()
函数用于在响应状态码不是200时抛出异常,可以帮助你快速发现请求错误。 -
API响应通常是JSON格式,使用
response.()
方法可以方便地将其解析为Python字典。 - 一些API可能需要额外的参数或者使用POST请求,请参考对应API的文档进行调整。
示例用法:
使用
get_transaction_status
函数可以查询指定交易ID的状态。 你需要将实际的交易ID替换
"your_transaction_id"
,该函数将返回包含交易状态信息的字典。
result = get_transaction_status("your_transaction_id")
接下来,使用
print(result)
将结果打印到控制台,以便查看交易状态的详细信息。返回的结果可能包含诸如 "pending"(待处理)、"confirmed"(已确认)、"failed"(失败)等状态信息,以及交易的区块高度、时间戳等其他相关数据。
3.4 获取最小/最大兑换金额 (
getMinAmount
,
getMaxAmount
)
这些API端点用于查询特定加密货币交易对的最小和最大允许兑换金额限制。 这些限制由交易所设定,以管理风险和确保交易的流动性。
-
端点 (Endpoint):
/api/v1/minAmount
(获取最小金额) 或/api/v1/maxAmount
(获取最大金额) - 方法 (Method): POST
- 请求体 (Request Body):
请求体需要包含指定交易对的货币代码。
{
"from": "btc",
"to": "eth"
}
-
from
: 要兑换的源加密货币代码 (例如: "btc" 代表比特币)。该字段区分大小写,务必使用正确的货币代码。 -
to
: 要接收的目标加密货币代码 (例如: "eth" 代表以太坊)。该字段区分大小写,务必使用正确的货币代码。
getMinAmount
(获取最小金额):
响应体包含允许兑换的最小金额。
{
"result": "0.001"
}
-
result
: 最小兑换金额。 例如,"0.001" 表示最小兑换量为 0.001 BTC。 数据类型通常为字符串,以便处理不同精度的数字。
getMaxAmount
(获取最大金额):
响应体包含允许兑换的最大金额。
{
"result": "10"
}
-
result
: 最大兑换金额。 例如,"10" 表示最大兑换量为 10 BTC。 数据类型通常为字符串,以便处理不同精度的数字。交易所会根据市场深度和流动性调整此数值。
3.5 获取支持的加密货币 (
getCurrencies
)
此端点允许开发者获取 Changelly 平台当前支持的所有加密货币列表。该列表涵盖了各种加密数字资产,包含了每种货币的关键元数据,方便用户了解其在平台上的可用性和相关属性。
-
Endpoint:
/api/v1/currencies
-
Method:
GET
- Response:
返回的 JSON 数组包含了平台支持的各种加密货币对象。每个对象都包含了以下关键字段:
[
{
"name": "Bitcoin",
"ticker": "btc",
"enabled": true,
"fixRateEnabled": true,
"payinEnabled": true,
"payoutEnabled": true
},
{
"name": "Ethereum",
"ticker": "eth",
"enabled": true,
"fixRateEnabled": true,
"payinEnabled": true,
"payoutEnabled": true
},
// ... 更多加密货币
]
-
name
: 加密货币的全名,例如 "Bitcoin" 或 "Ethereum"。 -
ticker
: 加密货币的唯一代码或符号,例如 "btc" 或 "eth"。这是在交易和API交互中识别特定货币的常用标识符。 -
enabled
: 一个布尔值,指示该加密货币当前是否在平台上启用并可供交易。true
表示该货币可以进行兑换,false
表示当前不可用。该状态可能因维护、监管要求或其他操作原因而发生变化。 -
fixRateEnabled
: 一个布尔值,指示该加密货币是否支持固定汇率交易。true
表示可以以固定汇率进行交易,false
表示只能以浮动汇率进行交易。固定汇率交易允许用户在一定时间内锁定汇率,从而降低市场波动带来的风险。 -
payinEnabled
: 一个布尔值,指示用户是否可以将此加密货币作为支付货币(pay-in)发送到 Changelly 平台进行兑换。true
表示允许接收此货币,false
表示当前不允许。 -
payoutEnabled
: 一个布尔值,指示用户是否可以接收此加密货币作为兑换后的结算货币(pay-out)。true
表示允许发送此货币作为兑换结果,false
表示当前不允许。
4. 错误处理
Changelly API 采用标准的 HTTP 状态码体系,用于明确指示每个 API 请求的处理结果。通过状态码,开发者可以快速识别请求是否成功,以及失败的原因。以下是一些常见的 HTTP 状态码及其在 Changelly API 中的具体含义:
-
400 Bad Request
: 此状态码表示客户端发起的请求存在问题,导致服务器无法理解。常见原因包括:- 缺少必需的请求参数,例如发起交易时未提供目标地址。
- 请求参数的格式不正确,例如提供的加密货币地址格式错误。
- 请求体包含无效的 JSON 格式。
-
401 Unauthorized
: 此状态码表明客户端未经过身份验证或提供的身份验证信息无效,无法访问受保护的资源。原因通常包括:- API 密钥未在请求头中正确提供。
- API 密钥已过期或被禁用。
- API 密钥与请求的 IP 地址不匹配(如果启用了 IP 地址白名单)。
-
403 Forbidden
: 此状态码表示服务器拒绝执行请求,即使客户端已通过身份验证。这可能是由于:- 客户端尝试访问其权限之外的资源。
- 服务器配置了访问控制规则,禁止客户端的 IP 地址或用户代理。
- 请求触发了服务器的安全策略。
-
404 Not Found
: 此状态码表示请求的资源在服务器上不存在。这可能意味着:- 客户端尝试访问不存在的 API 端点。
- 请求中指定的资源 ID 不存在。
- API 端点的 URL 地址拼写错误。
-
500 Internal Server Error
: 此状态码表示服务器在处理请求时遇到了内部错误,无法完成请求。这通常是服务器端的临时性问题,例如:- 数据库连接错误。
- 服务器代码错误。
- 服务器资源不足。
当 API 请求失败时,Changelly API 通常会在响应体中返回一个 JSON 对象,其中包含更详细的错误信息,例如错误代码和错误消息。错误消息通常会提供关于错误原因的更具体描述,帮助开发者快速定位问题。开发者务必检查 HTTP 响应状态码和 JSON 响应体中的错误信息,以便能够正确处理错误并采取相应的措施,例如重新构造请求、调整参数或联系技术支持。