获取 token — getToken
取得后续接口所需的 ANONY-TOKEN。此接口请求体不加密、不签名,仅用 md5 鉴权。
这是完整调用流程的第一步:先用 APP-ID + secret 换取 token,再携带 token 调用各业务接口。凭据的获取与保管见密钥与凭据。
接口地址
POST https://api.anonypay.io/api/merchant/getToken请求头
| 头 | 说明 |
|---|---|
ANONY-APP-ID | 商户号 |
Authorization | auth + md5(APP-ID + "&" + secret) |
即:把商户号与 secret 用 & 连接后做 MD5,前面拼上 auth (注意 auth 后有一个空格)。
请求体
可为空。
响应字段(解密后)
| 字段 | 类型 | 说明 |
|---|---|---|
token | string | 后续接口使用的 ANONY-TOKEN |
响应不是明文 token
getToken 的响应与其它接口一样是加密 + 签名信封({ "code": 10000, "data": "<base64 密文>", "message": "success" },响应头带 ANONY-TIMESTAMP / ANONY-NONCE / ANONY-SIGN),不是明文 token。务必用 SDK 验签 + 解密后再读取 token 字段。信封的验签与解密步骤见协议规范。
token 有效期与续期策略(实现细节)
token 采用滑动过期 8 小时、绝对上限 24 小时:每次成功调用会顺延有效期,但自签发起最长 24 小时后必然失效。收到 tokenExpired 错误时,重新调用 getToken 换取新 token 并重试一次原请求即可,无需其他处理。
请求示例
curl -X POST 'https://api.anonypay.io/api/merchant/getToken' \
-H 'ANONY-APP-ID: <你的商户号>' \
-H 'Authorization: auth <md5(APP-ID&secret)>'原始响应(data 为密文,需验签 + 解密):
{ "code": 10000, "data": "<base64 密文>", "message": "success" }data 解密后的业务 JSON:
{ "token": "..." }SDK 用法
PHP / Node 提供开箱即用的 getToken()(内含 HTTP 调用);Python / Go / Java 提供 authHeader()(计算 auth + md5(APP-ID & secret)),HTTP 由你选用的库发起、响应用 verifyResponse / verify + decrypt 处理。
require 'AnonyV2Client.php';
$client = new AnonyV2Client($appId, $serverPublicKeyB64, $merchantPrivateKeyB64);
$token = $client->getToken($secret); // 自动 md5 鉴权 + 验签解密取出 tokenfrom anony_v2 import AnonyV2Client, auth_header
import requests
c = AnonyV2Client(app_id, server_pub_b64, merchant_priv_b64)
# 请求不加密,仅 md5 鉴权;响应仍需验签+解密
tr = requests.post(c.base_url + "getToken",
headers={"ANONY-APP-ID": str(app_id), "Authorization": auth_header(app_id, secret)})
tb = tr.json()
token = c.verify_response(tb["data"], tr.headers["ANONY-TIMESTAMP"],
tr.headers["ANONY-NONCE"], tr.headers["ANONY-SIGN"])["token"]const { AnonyV2Client } = require('./anony_v2');
const c = new AnonyV2Client(appId, serverPubB64, merchantPrivB64);
const token = await c.getToken(secret); // Node ≥18:自动 md5 鉴权 + 验签解密取出 tokenGo / Java:取 token 时用 AuthHeader / authHeader 计算 Authorization 头,POST getToken 后用 verify + decrypt 处理响应信封取出 token。详见 Go SDK 与 Java SDK。
常见错误
| 错误 | 说明 |
|---|---|
authFailed | 身份验证失败:检查 Authorization 头格式(auth 前缀 + 空格)与 md5 输入(APP-ID 与 secret 之间的分隔符是 &) |
tokenExpired | 出现在后续业务接口:token 已失效,重新 getToken 并重试一次 |
完整错误码列表见错误与排查。
下一步
- 拿到 token 后,先调用上线自检 selfcheck 验证整套加密 / 签名链路。
- 再接入创建收款地址 createAddress 等业务接口。