由服务端为当前用户换取推广中心访问 Token,前端以 iframe 将 PartnerShare 推广中心嵌入产品后台。
用户无需离开当前系统、无需重复注册登录,即可查看推广链接、邀请数据、奖励和提现信息。
需要在自有界面中渲染推广数据而非嵌入页面时,使用 推广者资源接口。
1. 接入模式 #
- 产品前端:用户进入推广中心入口时,请求自身服务端获取访问 Token。前端不接触 API Secret。
- 产品服务端:使用 API Key、时间戳和 API Secret 签名,调用 PartnerShare 登录接口换取推广者 Token,返回给前端。
- 产品前端:使用 Token 拼接 iframe 地址并渲染,推广中心在当前页面内展示。
登录接口需要签名鉴权,API Secret 只能保存在服务端。前端不得直接调用 PartnerShare 接口。
2. 页面效果 #

3. 前置要求 #
- 已在 PartnerShare 后台完成产品创建与基础配置。
- 已完成推荐计划活动、奖励规则和推广 URL 配置,且活动处于进行中。
- 已获取该产品的 API Key 和 API Secret,鉴权方式见 API 鉴权与签名机制。
4. 获取推广者登录 Token #
POST
/api/open/v1/promoter/login按 user_id 在当前产品下查找推广者:不存在时自动创建推广者账号并加入默认推荐计划;已存在时复用并刷新登录状态。
| 项目 | 说明 |
|---|---|
| 请求域名 | https://api-service.partnershare.net |
| 请求格式 | application/json |
| 支持的 API Key 版本 | v1、v2 |
| 调用方 | 品牌方服务端 |
4.1 请求头 #
| Header | 必填 | 说明 |
|---|---|---|
X-Api-Key | 是 | 产品的 API Key |
X-Api-Timestamp | 是 | 秒级 Unix 时间戳,300 秒内有效 |
X-Api-Sign | 是 | 按密钥版本计算的签名 |
Content-Type | 是 | application/json |
4.2 请求参数 #
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
user_id | string | 是 | 品牌方系统内的用户唯一标识,同一用户始终使用同一值 |
email | string | 否 | 用户邮箱,传入时校验格式 |
username | string | 否 | 用户展示名称。为空时优先使用邮箱,否则按 user_id 生成 |
lang | string | 否 | 语言,支持 zh、en、zh-hk,默认 en |
phone | string | 否 | 手机号 |
theme_mode | string | 否 | 推广中心主题,light 或 dark,默认 light |
4.3 请求示例 #
curl -X POST "https://api-service.partnershare.net/api/open/v1/promoter/login" \
-H "Content-Type: application/json" \
-H "X-Api-Key: pk_xxxxxxxxxxxxxxxxxxxxx" \
-H "X-Api-Timestamp: 1776677721" \
-H "X-Api-Sign: {signature}" \
-d '{"user_id":"user_10001","email":"user@example.com","username":"Alex","lang":"zh","theme_mode":"light"}'
4.4 响应示例 #
{
"code": 0,
"message": "Success",
"data": {
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"user_string_id": "ps8xk2m9qa",
"lang": "zh",
"theme_mode": "light"
}
}
4.5 响应字段 #
| 字段 | 类型 | 说明 |
|---|---|---|
token | string | 推广中心登录 Token,用于拼接 iframe 地址 |
user_string_id | string | PartnerShare 推广者字符串 ID,用于排查和数据关联 |
lang | string | 推广者当前语言 |
theme_mode | string | 推广中心当前主题,light 或 dark |
4.6 错误 #
| code | message | 原因 |
|---|---|---|
1000004 | 鉴权消息 | 请求头、签名或时间戳校验失败,见 API 鉴权与签名机制 |
6000000 | The user_id field is required | 缺少 user_id |
6000000 | The email address has an invalid format | email 格式错误 |
6000000 | No referral campaign exists for this product | 产品下没有可用的推荐计划活动,需先在后台完成活动配置 |
5. 创建 iframe #
前端从自身服务端获取 Token 后,将 iframe 的 src 设为推广中心地址:
<iframe
src="https://promoter.partnershare.net/iframe/{token}"
width="100%"
height="900"
frameborder="0"
allow="clipboard-write"
></iframe>
每次进入推广中心页面时实时向服务端请求新的 Token 再渲染。不要把 Token 固定写入页面或长期缓存在前端。
6. 前后端分工 #
| 角色 | 职责 |
|---|---|
| 产品服务端 | 保存 API Secret,生成签名,调用 /api/open/v1/promoter/login,将 Token 返回给自身前端 |
| 产品前端 | 用户进入推广入口时请求自身服务端接口,使用返回的 Token 渲染 iframe |
// 前端只请求自身服务端,不直接请求 PartnerShare
async function mountPartnerShareIframe() {
const res = await fetch('/api/partner-share/iframe-token');
const data = await res.json();
document.querySelector('#partnerShareIframe').src =
`https://promoter.partnershare.net/iframe/${data.token}`;
}
7. 常见问题 #
| 问题 | 说明 |
|---|---|
| 同一用户每次进入是否重复创建推广者 | 不会。按 user_id 在当前产品下查找已有推广者,相同 user_id 复用同一账号并更新资料 |
| iframe 打不开或提示登录失效 | 重新调用 /api/open/v1/promoter/login 获取新 Token,并确认 iframe 地址使用的是最新的 data.token |
接口返回 No referral campaign exists for this product | 产品下没有可用的推荐计划活动。先在后台完成产品配置、奖励规则和推荐计划活动配置,并确保活动处于进行中 |
| iframe 高度 | 容器宽度建议 100%,高度按后台布局设置,常见值 850px 到 980px。移动端需结合自身布局做响应式适配 |
8. 接入检查清单 #
- 前端没有保存或暴露 API Secret。
- 服务端每次请求都重新生成时间戳和签名。
- 同一业务用户始终使用稳定的
user_id。 - iframe 使用最新 Token 渲染,失效后可重新获取。