Skip to content

AccessToken获取

Request

Url
text
[POST] : https://eapi.paiago.com/ZKGJ/AccessToken/

所有请求需要添加服务器IP白名单联系账款管家

AccessToken有效期为2小时

返回类型

JSON

请求参数:
参数类型必填描述示例
corpIdstring企业corpId(若需要测试账号,请联系账款管家客服)
corpKeystring企业密钥
timeStampstring当前时间戳(秒)1662085101
signaturestring签名
参数说明:
  • 签名计算方法:
    • $suiteKey //分配的key
    • $timeStamp //时间戳
    • $suiteSecret //密钥
    • $timeStamp +"\n" + $suiteKey当做签名字符串,
    • $suiteSecret做为签名密钥,使用HmacSHA256算法计算签名,然后进行Base64encode获取最后结果,然后把签名参数再进行urlEncode。
请求示例:

php获取签名(signature)

php
$str = $timeStamp . "\n" . $suiteKey; 
$signature = urlencode(base64_encode(hash_hmac('sha256', $str, $suiteSecret, true)));

java获取签名(signature)

java
String signature = URLEncoder.encode(signature(param), "UTF-8");
public static String signature(JSONObject param) {
    String timestamp = param.getString("timeStamp");
    String suiteKey = param.getString("suiteKey");
    String suiteSecret = param.getString("suiteSecret");
    String stringToSign = timestamp+"\n"+suiteKey;
    Mac mac = Mac.getInstance("HmacSHA256");
    mac.init(new SecretKeySpec(suiteSecret.getBytes("UTF-8"), "HmacSHA256"));
    byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
    return new String(Base64.encodeBase64(signData));
}

Python获取签名(signature)

Python
from urllib.parse import quote, urlencode
from hashlib import sha256
import hmac, base64
import time

def get_sha256(data, key):
    key = key.encode('utf-8')       # sha256加密的key
    message = data.encode('utf-8')  # 待sha256加密的内容
    sign = base64.b64encode(hmac.new(key, message, digestmod=sha256).digest()).decode()
    return sign
    
def urlencode(string):
    encoded_string = urllib.parse.quote(string, safe='!()*')
    encoded_string = encoded_string.replace(' ', '+')
    return encoded_string
    
if __name__ == '__main__':
  time = '1669108257'
  suiteKey = 'suiteTest'
  suiteSecret = 'suiteSecretTest'
  suiteData = time+'\n'+suiteKey
  sign = get_sha256(suiteData,suiteSecret)
  print(str(sign))
  #sign = quote(sign)
  #print(str(sign))
  #更新存在 转码问题
  newSign = urlencode(str(sign))
  print(newSign)

C#获取签名(signature)

C#
using System;
using System.Text;
using System.Net;
using System.Security.Cryptography;
class Program
{
    public static void Main(string[] args)
    {
        DateTimeOffset now = DateTimeOffset.Now;
        long timeStamp = now.ToUnixTimeSeconds();
        string suiteKey = "suiteKey";
        string data = timeStamp+"\n"+suiteKey;
        string suiteSecret  = "suiteSecret";
        var keyBytes = Encoding.UTF8.GetBytes(suiteSecret);
        var messageBytes = Encoding.UTF8.GetBytes(data);
        using (var hmac = new HMACSHA256(keyBytes))
        {
            var hash = hmac.ComputeHash(messageBytes);
            var signature = WebUtility.UrlEncode(Convert.ToBase64String(hash));
            Console.WriteLine(signature);
        }
    }
}

Go获取签名(signature)

Go
package main

import (
	"crypto/hmac"
	"crypto/sha256"
	"encoding/base64"
	"encoding/json"
	"fmt"
	"net/url"
)

type Params struct {
	TimeStamp   string `json:"timeStamp"`
	SuiteKey    string `json:"suiteKey"`
	SuiteSecret string `json:"suiteSecret"`
}

func Signature(param Params) (string, error) {
	stringToSign := param.TimeStamp + "\n" + param.SuiteKey
	h := hmac.New(sha256.New, []byte(param.SuiteSecret))
	h.Write([]byte(stringToSign))
	signData := h.Sum(nil)

	return base64.StdEncoding.EncodeToString(signData), nil
}

func main() {
	// 示例JSON字符串
	jsonStr := `{"timeStamp":"1719884033","suiteKey":"suiteKey","suiteSecret":"suiteSecret"}`

	// 解析JSON到结构体
	var param Params
	if err := json.Unmarshal([]byte(jsonStr), &param); err != nil {
		fmt.Println("Error parsing JSON:", err)
		return
	}

	// 计算签名
	signature, err := Signature(param)
	if err != nil {
		fmt.Println("Error signing:", err)
		return
	}

	// 输出签名
	// Y/sZ/1mDZ81Ycgi9e59uXRrvOTRvJuIg1kr2lgy5coA=
	fmt.Println("Signature:", signature)
	// 输出URL编码后的签名
	// Y%2FsZ%2F1mDZ81Ycgi9e59uXRrvOTRvJuIg1kr2lgy5coA%3D
	fmt.Println("Encrypt:", url.QueryEscape(signature))
}

Response

响应参数
参数描述类型示例
errcode错误码int0
errmsg错误信息string
data返回值stringffc50044897a74c14b47a755d0a28dc4
响应示例:

Success

json
{
    "data": "eyJ0eXAiOiJKV1YiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJhcGlfY2VudGVyIiwiYXTkIjoiaHR0cDovL2xvY2FsaG9zdCIsImlhdCI6IjE2NjIwODc1NTYiLCJleHAiOjE2NjIwOTQ3NTYsImNvcnBJZCI6InBlbmtkMTlmZTkwN2UwZGMxNTBlNDcwNTQyN2FlZDE0ZWVkYyIsImNvcnBLZXkiOiJlYzFmODFkNWQwMjI3NGY0ZTFmZWVhUTUzYzNmNzJmMCJ9.cFWFEDRsIGxQFJepf0xU6Io7Xa3vQkrM0dBayOWlYk_qgfncIAbXZNrYUCIiZywIA5nh-kd8g42qk_Tc_6Fc-R1w5W_MfiycM6HSCftG-KTv3zvcRs9KYjfIzLW2fX9HoreNQv6XHlYkxcLz79WEPBX6jJ0jL1TBnfAMPMjbXFNiD4ff-FD3CkdBASwA1u1Ds4OSm8n6OTb5VzxtsGti7mbPNAQ-1DO6r2eIENAfiXmbBrtfnlYLadfgIt-BdS87pKqWqmYFZDP-6UJufyeHy5oU9govyt3GSdLRjGck6BrhH-r7y5_6urrfQhuPDqjuS6QgAAtk3XtFMYSDSFF1xA",
    "errcode": 0,
    "errmsg": "请求成功",
    "request_id": null,
    "env": "zkgj-cs"
}

Error

json
{
  "errcode": 11005,
  "errmsg": "签名无效",
  "request_id": null,
  "env": "zkgj-cs"
}