PartnerShare
品牌主
营销方式
联盟增长找外部推广者来卖你的产品 推荐营销(老带新计划)让老用户带来新用户
使用案例
AI 工具站教程测评带来订阅转化 IP 代理服务站追踪首单、续费与佣金 电商独立站用分销和内容测评提升转化 指纹浏览器触达跨境和多账号运营人群
推广者 推广市场
导航站
跨境电商导航 AIGC 导航 全球 IP 代理导航 精选产品
价格
资源
博客增长方法、渠道拆解与产品更新 帮助中心接入文档、账户设置与常见问题 最新资讯出海营销动态与行业热点
品牌主
营销方式 联盟增长 推荐营销(老带新计划) 使用案例 AI 工具站 IP 代理服务站 电商独立站 指纹浏览器
推广者 推广市场
导航站
跨境电商导航 AIGC 导航 全球 IP 代理导航 精选产品
价格
资源
博客 帮助中心 最新资讯

选择入口

请选择适合您的身份入口。

管理产品和联盟计划 品牌主 创建产品、设置佣金规则并管理推广转化。 创建品牌主账号→ 发现好产品赚取佣金 推广者 发现高佣产品,一键获取专属推广链接。 免费入驻推广市场→ 发布产品资讯获取曝光 内容发布方 提交产品并发布资讯,获取中文内容曝光。 进入内容发布平台→

预约 1v1 演示

产品顾问将在 1 个工作日内与你约定 30 分钟在线演示,带你搭好第一个推广计划。

提交后我们会尽快与你联系。

想先自己体验?免费注册 →

提交即表示你同意 PartnerShare 为安排产品演示而联系你。

微信扫码联系

使用微信扫描二维码添加企业微信,产品顾问会尽快与你联系。

PartnerShare 企业微信二维码 PartnerShare Telegram 二维码 保存图片到本地 CHAT ON TELEGRAM
✓

申请已提交

我们会尽快联系你,安排演示和接入建议。你也可以先注册账号体验产品。

跳过内容
快速入门 - PartnerShare

快速入门

5
  • 什么是推荐营销/老带新计划
  • 什么是联盟营销
  • 如何创建推荐计划
  • 如何创建联盟营销活动
  • 如何提升推广效果
合作伙伴管理 - PartnerShare

推广运营

5
  • 活动管理
  • 产品管理
  • 推广者管理
  • 合作伙伴支持的提现方式
  • 查询合作伙伴提现状态
支付与交易 - ParterShare

支付与交易

2
  • 佣金结算
  • 提现托管功能
合作伙伴管理 - PartnerShare

账户管理

2
  • 团队管理功能
  • 企业认证提示
技术集成 - PartnerShare

技术集成

5
  • API 鉴权与签名机制
  • 推广点击跟踪 SDK 接入
  • 推广转化事件回传
  • 将 PartnerShare 内嵌到产品中
  • PartnerShare 产品授权推广登录接入指南
常见问题 - PartnerShare

常见问题

2
  • 旧版帮助中心入口
  • 提现相关

更新日志

2
  • 更新日志 – 2026.05.15
  • 更新日志-2026.03.05
View Categories
  • 帮助中心
  • 技术集成
  • API 鉴权与签名机制

API 鉴权与签名机制

PartnerShare API Authentication

API 鉴权与签名机制

本文说明 PartnerShare 开放接口的服务端鉴权方式。接入方需要在每次请求中携带 API Key、秒级时间戳和签名,PartnerShare 会基于 API Secret 重新计算签名并校验请求合法性,避免接口被伪造、重放或越权调用。

API Key 身份识别API Secret 服务端签名5 分钟时间窗SHA256

1. 概述 #

PartnerShare 开放接口默认使用 API Key + API Secret + Timestamp + Signature 的方式完成鉴权。API Key 用于识别调用方产品,API Secret 仅用于服务端生成签名,不会直接随请求发送。

确认调用方身份

通过 X-Api-Key 定位产品和租户,确保请求来自已授权产品。

防止请求伪造

签名由 API Secret 生成,攻击者即使知道 API Key,也无法构造合法签名。

降低重放风险

X-Api-Timestamp 仅在 5 分钟时间窗内有效,过期请求会被拒绝。

安全提醒

API Secret 必须保存在服务端,不允许暴露在浏览器、小程序、移动端 App、公开仓库或共享 Postman 环境中。

2. 获取 API Key 和 API Secret #

请在 PartnerShare 后台进入对应产品的开发者集成或高级设置页面,获取该产品的 API Key 和 API Secret。

获取 API Key 和 API Secret
在产品配置中获取 API Key 和 API Secret
字段职责

API Key 用于请求头传输,标识调用方产品;API Secret 只用于本地计算签名,不参与明文传输。

3. 请求头约定 #

调用需要鉴权的开放接口时,请在 Header 中携带以下参数:

Header必填说明
X-Api-Key是PartnerShare 分配给产品的 API Key,用于识别调用方产品。
X-Api-Timestamp是秒级时间戳。服务端会校验时间戳是否在有效时间窗内。
X-Api-Sign是按本文签名规则生成的 SHA256 签名。
Content-Type是推荐使用 application/json。

Header 示例:

POST /api/open/v1/track/conversion HTTP/1.1
Host: api-service.partnershare.net
Content-Type: application/json
X-Api-Key: pk_xxxxxxxxxxxxxxxxxxxxx
X-Api-Timestamp: 1776677721
X-Api-Sign: 8473ee71d083d9d1650c0e9081b5777d5b6cde2508521d5322d603a007214afd

4. 签名规则 #

PartnerShare 的签名只使用请求参数的字段名参与计算,不使用字段值参与计算;Header 字段也不参与签名。

收集请求参数合并 URL Query、表单 Body、JSON Body 中的顶层字段名。
字段名统一转小写例如 Product_Key 会按 product_key 参与签名。
按自然顺序排序排序规则需与服务端保持一致,PHP 可使用 SORT_NATURAL。
使用 & 连接字段名例如 extra&product_key&target_product_key&user_id。
追加时间戳和 API Secret最终字符串为 字段名串 + timestamp + api_secret。
计算 SHA256对最终字符串做 SHA256,得到十六进制签名。

4.1 签名公式 #

sha256(sorted_lowercase_param_keys_joined_by_ampersand + timestamp + api_secret)

4.2 示例推导 #

请求参数:

{
  "product_key": "your_product_key",
  "target_product_key": "target_product_key",
  "user_id": "user_10001",
  "extra": {
    "locale": "zh"
  }
}

参与签名的字段名:

product_key
target_product_key
user_id
extra

排序并拼接后:

extra&product_key&target_product_key&user_id

假设:

timestamp = 1776677721
api_secret = sk_your_api_secret

最终待签名字符串:

extra&product_key&target_product_key&user_id1776677721sk_your_api_secret

5. 签名示例 #

5.1 JavaScript #

function makeSign(params, timestamp, apiSecret) {
  const keys = Object.keys(params)
    .map((key) => key.toLowerCase())
    .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));

  const signString = keys.join('&') + timestamp + apiSecret;

  return CryptoJS.SHA256(signString).toString(CryptoJS.enc.Hex);
}

5.2 PHP #

<?php

function makeSign(array $params, string $timestamp, string $apiSecret): string
{
    $keys = array_map('strtolower', array_keys($params));
    sort($keys, SORT_NATURAL);

    $signString = implode('&', $keys) . $timestamp . $apiSecret;

    return hash('sha256', $signString);
}

5.3 Go #

package main

import (
    "crypto/sha256"
    "fmt"
    "sort"
    "strings"
)

func MakeSign(params map[string]interface{}, timestamp string, apiSecret string) string {
    keys := make([]string, 0, len(params))
    for key := range params {
        keys = append(keys, strings.ToLower(key))
    }

    sort.Strings(keys)

    signString := strings.Join(keys, "&") + timestamp + apiSecret
    sum := sha256.Sum256([]byte(signString))

    return fmt.Sprintf("%x", sum)
}

5.4 Python #

import hashlib


def make_sign(params: dict, timestamp: str, api_secret: str) -> str:
    keys = sorted([key.lower() for key in params.keys()])
    sign_string = "&".join(keys) + timestamp + api_secret
    return hashlib.sha256(sign_string.encode("utf-8")).hexdigest()

6. 完整请求示例 #

以下示例展示一次注册事件回传请求的 Header 和 Body 结构。不同接口的 Body 字段可能不同,但签名生成方式保持一致。

POST /api/open/v1/track/conversion HTTP/1.1
Host: api-service.partnershare.net
Content-Type: application/json
X-Api-Key: pk_xxxxxxxxxxxxxxxxxxxxx
X-Api-Timestamp: 1776677721
X-Api-Sign: 8473ee71d083d9d1650c0e9081b5777d5b6cde2508521d5322d603a007214afd
{
  "event_name": "signup",
  "invited_user_id": "user_10001",
  "invite_code": "abc123"
}
本示例的签名字段名

参与签名的字段名为 event_name、invited_user_id、invite_code,排序后拼接为 event_name&invite_code&invited_user_id。

7. 常见错误与排查 #

7.1 为什么提示“API Key 或签名不能为空”? #

通常是请求头缺少 X-Api-Key、X-Api-Timestamp 或 X-Api-Sign。请确认 Header 名称拼写正确,并且请求没有被网关或代理移除自定义 Header。

7.2 为什么提示“签名错误”? #

请重点检查:是否使用 API Secret 而不是 API Key 参与签名;字段名是否转为小写;字段名排序是否一致;参与签名的字段是否与实际请求 Body 顶层字段完全一致。

7.3 为什么本地签名正确,线上仍然失败? #

常见原因是线上请求参数被序列化格式改变,例如本地使用 JSON,线上使用表单;或反向代理改变了请求 Body。建议先打印实际发送给 PartnerShare 的 Body 顶层字段名进行对比。

7.4 时间戳有效期是多久? #

当前时间戳有效期为 5 分钟。请使用秒级时间戳,并确保服务器时间与标准时间保持同步。

7.5 API Secret 可以放在前端吗? #

不可以。API Secret 一旦暴露,任何人都可以伪造合法请求。请始终在服务端生成签名,前端只调用自己的业务服务端。

8. 最佳实践 #

  • 只在服务端保存 API Secret,不写入前端代码、移动端包体或公开配置。
  • 每次请求都重新生成时间戳和签名,不复用历史签名。
  • 签名前记录参与签名的字段名列表,便于排查联调问题。
  • 生产环境和测试环境使用不同的 API Key 与 API Secret。
  • 如怀疑 API Secret 泄露,应立即在后台重置密钥并更新服务端配置。
更新 19/08/2026

分享这篇文章 :
  • Facebook
  • X
  • LinkedIn
  • Pinterest
将 PartnerShare 内嵌到产品中
大纲
  • 1. 概述
  • 2. 获取 API Key 和 API Secret
  • 3. 请求头约定
  • 4. 签名规则
    • 4.1 签名公式
    • 4.2 示例推导
  • 5. 签名示例
    • 5.1 JavaScript
    • 5.2 PHP
    • 5.3 Go
    • 5.4 Python
  • 6. 完整请求示例
  • 7. 常见错误与排查
    • 7.1 为什么提示“API Key 或签名不能为空”?
    • 7.2 为什么提示“签名错误”?
    • 7.3 为什么本地签名正确,线上仍然失败?
    • 7.4 时间戳有效期是多久?
    • 7.5 API Secret 可以放在前端吗?
  • 8. 最佳实践
PartnerShare

帮出海 SaaS 找到推广者、跑起联盟、放大用户推荐。先免费接入,跑出数据再升级。 Find promoters, run affiliate, and turn user referrals into a tracked growth channel. Start free, upgrade after data.

产品 Product

  • 联盟增长Affiliate growth
  • 邀返系统Referral program
  • 推广市场Marketplace
  • 价格Pricing

资源 Resources

  • 博客Blog
  • 帮助中心Help center
  • 最新资讯Latest news

导航站 Directory

  • 跨境电商导航Cross-border Ecommerce Directory
  • AIGC 导航AIGC Directory
  • 全球 IP 代理导航Global IP Proxy Directory
  • 精选产品Featured Products

联系方式 Contact

联系Contact business@partnershare.net
PartnerShare 公众号二维码
in XHS

版权所有© 广州标品科技创新有限公司, SAASBASE PTE. LTD. 丨 粤ICP备2022116046号 © Guangzhou Biaopin Technology Innovation Co., Ltd., SAASBASE PTE. LTD. · ICP 2022116046

服务协议Terms of Service 隐私政策Privacy