Skip to content

获取 token — getToken

取得后续接口所需的 ANONY-TOKEN此接口请求体不加密、不签名,仅用 md5 鉴权。

这是完整调用流程的第一步:先用 APP-ID + secret 换取 token,再携带 token 调用各业务接口。凭据的获取与保管见密钥与凭据

接口地址

POST https://api.anonypay.io/api/merchant/getToken

请求头

说明
ANONY-APP-ID商户号
Authorizationauth + md5(APP-ID + "&" + secret)

即:把商户号与 secret 用 & 连接后做 MD5,前面拼上 auth (注意 auth 后有一个空格)。

请求体

可为空。

响应字段(解密后)

字段类型说明
tokenstring后续接口使用的 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 并重试一次原请求即可,无需其他处理。

请求示例

bash
curl -X POST 'https://api.anonypay.io/api/merchant/getToken' \
  -H 'ANONY-APP-ID: <你的商户号>' \
  -H 'Authorization: auth <md5(APP-ID&secret)>'

原始响应(data 为密文,需验签 + 解密):

json
{ "code": 10000, "data": "<base64 密文>", "message": "success" }

data 解密后的业务 JSON:

json
{ "token": "..." }

SDK 用法

PHP / Node 提供开箱即用的 getToken()(内含 HTTP 调用);Python / Go / Java 提供 authHeader()(计算 auth + md5(APP-ID & secret)),HTTP 由你选用的库发起、响应用 verifyResponse / verify + decrypt 处理。

php
require 'AnonyV2Client.php';
$client = new AnonyV2Client($appId, $serverPublicKeyB64, $merchantPrivateKeyB64);
$token  = $client->getToken($secret);  // 自动 md5 鉴权 + 验签解密取出 token
python
from 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"]
js
const { AnonyV2Client } = require('./anony_v2');
const c = new AnonyV2Client(appId, serverPubB64, merchantPrivB64);
const token = await c.getToken(secret); // Node ≥18:自动 md5 鉴权 + 验签解密取出 token

Go / Java:取 token 时用 AuthHeader / authHeader 计算 Authorization 头,POST getToken 后用 verify + decrypt 处理响应信封取出 token。详见 Go SDKJava SDK

常见错误

错误说明
authFailed身份验证失败:检查 Authorization 头格式(auth 前缀 + 空格)与 md5 输入(APP-ID 与 secret 之间的分隔符是 &
tokenExpired出现在后续业务接口:token 已失效,重新 getToken 并重试一次

完整错误码列表见错误与排查

下一步