1. 接入前必读
code=200,且 data.url 有有效链接。| 项目 | 地址/规则 | 说明 |
|---|---|---|
| 文档地址 | https://openapi.jujin.online | 客户查看接入说明 |
| API Base URL | https://openapi.jujin.online/api | 接口调用前缀,不是普通网页 |
| 成功判断 | body.code = 200 | 不要只按 HTTP 状态码判断 |
| 正式接口 | POST /api/v1/chain/get | 首轮联调先使用该接口 |
2. 开发者接入准备
接入前需要准备什么
| 事项 | 由谁处理 | 说明 |
|---|---|---|
| 确认合作主体 | 客户 + 举金望 | 确认接入客户名称、业务场景、产品类型和联调负责人。 |
| 创建客户应用 | 举金望 | 举金望为客户创建独立应用,用于接口鉴权、权限隔离和调用审计。 |
| 分配 AppId | 举金望 | 客户应用唯一标识,请放在请求 Header 的 x-app-id。 |
| 分配 AppSecret | 举金望 | 签名密钥,只能保存在客户服务端,不允许写入前端、小程序端或公开代码仓库。 |
| 分配 placement_code | 举金望 | 客户授权推广位编码,只能使用举金望分配给当前客户的推广位。 |
| 开通接口权限 | 举金望 | 首轮默认开通统一取链权限。订单、推广数据、结算接口在第二阶段开放。 |
| 完成接口联调 | 客户技术 | 客户服务端按文档生成签名并调用统一取链接口。 |
客户会收到哪些联调参数
| 参数 | 示例 | 用途 | 安全要求 |
|---|---|---|---|
| AppId | app_xxx | 客户应用标识,用于请求 Header。 | 可发给客户技术负责人。 |
| AppSecret | sk_xxx | 签名密钥,用于生成 x-sign。 | 只允许服务端保存,不要发公开群。 |
| placement_code | ZFBPP10 | 推广位编码,用于统一取链。 | 仅限当前客户授权范围内使用。 |
| product | elm_redpacket | 产品类型,首轮示例为饿了么红包。 | 以举金望实际分配为准。 |
| activity_id | 675 | 活动 ID。 | 以举金望实际分配为准。 |
| link_type | 1 | 链接类型。 | 以举金望实际分配为准。 |
为什么没有“获取 token”步骤
举金望开放平台当前采用服务端签名鉴权模式。客户不需要先调用“获取 token”接口,也不需要维护临时访问令牌。每次请求时,客户服务端使用 AppId、当前秒级时间戳和 AppSecret 生成签名,并通过 Header 提交。
x-sign = sha256(app_id + timestamp + app_secret)
接口权限开通顺序
| 阶段 | 接口 | 状态 | 说明 |
|---|---|---|---|
| 第一阶段 | 统一取链 | 开放联调 | 先确认鉴权、签名、推广位和 data.url 返回正常。 |
| 第二阶段 | 统一订单明细 | 取链跑通后开放 | 用于查询订单号、订单状态、佣金、结算状态等。 |
| 第二阶段 | 推广数据 | 取链跑通后开放 | 用于查看点击、转化、订单和收入统计。 |
| 第二阶段 | 结算对账 | 正式合作后开放 | 用于对账、结算周期和分成结果查看。 |
客户 0-1 接入顺序
- 打开文档页:
https://openapi.jujin.online。 - 确认 API Base URL:
https://openapi.jujin.online/api。 - 检查网关:
GET https://openapi.jujin.online/api/health。 - 获取举金望分配的
AppId、AppSecret、placement_code。 - 客户服务端生成
x-timestamp和x-sign。 - 调用首轮接口:
POST https://openapi.jujin.online/api/v1/chain/get。 - 确认返回
code=200且data.url非空。 - 统一取链稳定后,再进入订单明细、推广数据和结算接口联调。
3. 使用步骤
确认合作关系
获取 AppId / AppSecret
首轮选择统一取链
按示例完成联调
稳定后进入正式接入
3. 10分钟跑通统一取链
- 向举金望获取
AppId、AppSecret、placement_code。 - 确认接口地址:
POST https://openapi.jujin.online/api/v1/chain/get。 - 客户服务端生成秒级时间戳
x-timestamp。 - 按
sha256(app_id + timestamp + app_secret)生成x-sign。 - 发送请求,返回
code=200且data.url有值即成功。
0-1 联调检查清单
| 顺序 | 动作 | 通过标准 |
|---|---|---|
| 1 | 打开文档页 | 可访问 https://openapi.jujin.online |
| 2 | 检查 API 网关 | GET /api/health 返回 code=200 |
| 3 | 获取联调参数 | 拿到 AppId、AppSecret、placement_code |
| 4 | 服务端生成签名 | x-sign = sha256(app_id + timestamp + app_secret) |
| 5 | 调用统一取链 | POST /api/v1/chain/get |
| 6 | 判断结果 | 响应体 code=200 且 data.url 非空 |
| 7 | 进入下一阶段 | 取链稳定后,再联调订单明细、推广数据和结算接口 |
4. 域名与接口地址
| 用途 | 地址 | 说明 |
|---|---|---|
| API 文档 | https://openapi.jujin.online | 浏览器打开 |
| API Base URL | https://openapi.jujin.online/api | 接口前缀;直接打开 /api 返回 JSON 说明属于正常现象 |
| 健康检查 | GET /api/health | 检查网关可用性 |
| 统一取链 | POST /api/v1/chain/get | 首轮正式联调接口 |
5. 鉴权签名
| Header | 必填 | 示例 | 说明 |
|---|---|---|---|
| Content-Type | 是 | application/json | 固定值 |
| x-app-id | 是 | app_xxx | 举金望分配 |
| x-timestamp | 是 | 1782487116 | 秒级时间戳 |
| x-sign | 是 | 64位sha256 | 签名结果,小写 |
x-sign = sha256(app_id + timestamp + app_secret)
x-timestamp 必须使用秒级 Unix 时间戳,不要使用毫秒级时间戳。
app_id + timestamp + app_secret 直接拼接,不加分隔符,不做 JSON 序列化。签名结果为 SHA256 小写 64 位十六进制字符串。
6. API 市场
统一取链 API 已开放
用于生成客户专属推广链接,支持通过 sub_id 做渠道、用户、广告位归因。
POST /api/v1/chain/get
统一订单明细 API 第二阶段
用于查询订单状态、归因标识、订单时间、预估收益等。
POST /api/v1/order/list
推广数据 API 第二阶段
用于查看点击、转化、订单、预估收入等统计数据。
开放前由技术支持确认权限
结算对账 API 第二阶段
用于查看结算周期、结算状态、分成结果与对账数据。
开放前由技术支持确认权限
7. 统一取链接口详情
请求地址
POST https://openapi.jujin.online/api/v1/chain/get
请求 Body
{
"product": "elm_redpacket",
"promotion_method": "H5",
"placement_code": "ZFBPP10",
"sub_id": "client_user_001",
"activity_id": 675,
"link_type": 1
}
| 字段 | 必填 | 示例 | 说明 |
|---|---|---|---|
| product | 是 | elm_redpacket | 产品类型 |
| promotion_method | 是 | H5 | 推广方式 |
| placement_code | 是 | ZFBPP10 | 客户授权推广位编码,必须为举金望分配给当前客户的可用推广位。 |
| activity_id | 是 | 675 | 活动 ID |
| link_type | 是 | 1 | 链接类型 |
成功返回
{
"code": 200,
"message": "success",
"data": {
"product": "elm_redpacket",
"promotion_method": "H5",
"placement_code": "ZFBPP10",
"url": "https://openapi.jujin.online/demo/promotion-link/xxx",
"short_url": "",
"deep_link": "",
"mini_app_id": "",
"mini_path": ""
}
}
data.url。示例 URL 仅用于说明返回结构,真实跳转地址以接口实际返回为准。8. 饿了么红包接入说明
| 配置项 | 示例值 | 说明 |
|---|---|---|
| product | elm_redpacket | 饿了么红包产品类型 |
| promotion_method | H5 | H5 链接 |
| activity_id | 675 | 以举金望分配为准 |
| link_type | 1 | 以举金望分配为准 |
| placement_code | ZFBPP10 | 以实际分配为准 |
推荐接入方式
- 客户前端把用户 ID、渠道 ID 或广告位 ID 传给客户服务端。
- 客户服务端把该标识写入
sub_id。 - 客户服务端调用统一取链接口。
- 客户前端跳转或展示返回的
data.url。
9. 统一订单明细接口(新)
接口说明
用于查询客户通过举金望开放平台产生的订单明细,包括订单号、商品名称、订单状态、结算状态、付款金额、佣金金额、创建时间、付款时间、完成时间和客户自定义追踪标识。
| 项目 | 说明 |
|---|---|
| API 类型 | 统一处理 API |
| 接口版本 | v1.0 |
| 请求地址 | https://openapi.jujin.online/api/v1/order/list |
| 请求方式 | POST |
| 鉴权方式 | x-app-id / x-timestamp / x-sign |
| 开放阶段 | 第二阶段联调开放 |
请求 Header
| Header | 必填 | 说明 |
|---|---|---|
| Content-Type | 是 | 固定为 application/json |
| x-app-id | 是 | 举金望分配的客户 AppId |
| x-timestamp | 是 | 当前秒级时间戳 |
| x-sign | 是 | 签名结果,规则为 sha256(app_id + timestamp + app_secret) |
请求 Body
{
"product": "elm_redpacket",
"activity_id": 675,
"query_type": 1,
"start_time": "2026-06-27 00:00:00",
"end_time": "2026-06-27 23:59:59",
"page": "",
"page_size": 20
}
请求参数说明
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| product | string | 否 | 产品类型,例如 elm_redpacket。不传时按客户权限查询。 |
| activity_id | integer | 否 | 活动 ID,例如饿了么红包示例为 675。实际值以举金望分配为准。 |
| query_type | integer | 是 | 时间查询类型:1 创建时间,2 付款时间,3 完成时间。 |
| start_time | string | 是 | 开始时间,格式:YYYY-MM-DD HH:mm:ss。 |
| end_time | string | 是 | 结束时间,格式:YYYY-MM-DD HH:mm:ss。 |
| page | string | 否 | 分页标识。第一页可为空;查询下一页时传返回结果中的 next_page。 |
| page_size | integer | 否 | 每页条数,默认 20,最大 50。 |
返回字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| code | integer | 业务状态码,200 表示成功。 |
| message | string | 说明信息。 |
| data.next_page | string | 下一页标识,没有下一页时为空。 |
| data.rows | array | 订单列表。 |
| order_no | string | 订单号。 |
| goods_name | string | 商品名称。 |
| order_num | integer | 订单数量。 |
| activity_id | integer | 订单所属活动 ID。 |
| order_status | integer | 订单状态:1 待支付,2 已支付,3 已失效,4 已完成。 |
| settle_state | integer | 结算状态:0 待结算,1 已结算。 |
| pay_amount | string | 付款金额。 |
| commission | string | 佣金金额。 |
| tk_create_time | string | 订单创建时间。 |
| tk_paid_time | string | 订单付款时间。 |
| tk_finish_time | string | 订单完成时间。 |
| sub_id | string | 客户自定义追踪标识。 |
| original_order_no | string | 原始订单号,非必返。 |
| ext_info | string | 扩展信息,非必返。 |
成功返回示例
{
"code": 200,
"message": "success",
"data": {
"next_page": "next_page_token",
"rows": [
{
"order_no": "ORDER202606270001",
"goods_name": "商品名称",
"order_num": 1,
"activity_id": 675,
"order_status": 2,
"settle_state": 0,
"pay_amount": "28.90",
"commission": "3.20",
"tk_create_time": "2026-06-27 10:00:00",
"tk_paid_time": "2026-06-27 10:02:00",
"tk_finish_time": "",
"sub_id": "client_user_001",
"original_order_no": "",
"ext_info": ""
}
]
}
}
订单状态说明
| order_status | 含义 |
|---|---|
| 1 | 待支付 |
| 2 | 已支付 |
| 3 | 已失效 |
| 4 | 已完成 |
结算状态说明
| settle_state | 含义 |
|---|---|
| 0 | 待结算 |
| 1 | 已结算 |
curl 示例
APP_ID="请填写举金望分配的AppId"
APP_SECRET="请填写举金望分配的AppSecret"
BASE_URL="https://openapi.jujin.online/api"
TIMESTAMP=$(date +%s)
SIGN=$(python3 -c "import hashlib;print(hashlib.sha256(('${APP_ID}'+'${TIMESTAMP}'+'${APP_SECRET}').encode('utf-8')).hexdigest().lower())")
curl -X POST "$BASE_URL/v1/order/list" \
-H "Content-Type: application/json" \
-H "x-app-id: $APP_ID" \
-H "x-timestamp: $TIMESTAMP" \
-H "x-sign: $SIGN" \
-d '{
"product":"elm_redpacket",
"activity_id":675,
"query_type":1,
"start_time":"2026-06-27 00:00:00",
"end_time":"2026-06-27 23:59:59",
"page":"",
"page_size":20
}'
10. 推广数据接口
用途:查看点击、转化、订单、预估收入等推广统计数据。
11. 结算对账接口
用途:查看结算周期、结算状态、分成结果和对账数据。
12. 错误码说明
| code | 含义 | 排查建议 |
|---|---|---|
| 200 | 成功 | 读取 data.url |
| 40001 | 参数错误 | 检查请求 Body 是否完整 |
| 40101 | AppId 不存在 | 检查 x-app-id |
| 40102 | 签名校验失败 | 检查 AppSecret、timestamp、签名公式 |
| 40103 | 请求已过期 | 校准服务器时间 |
| 40104 | 应用未启用 | 联系举金望确认应用状态 |
| 40301 | 无权限或推广位越权 | 检查 placement_code |
| 50001 | 服务异常 | 联系举金望技术支持 |
13. 调试示例
curl 示例
APP_ID="请填写举金望分配的AppId"
APP_SECRET="请填写举金望分配的AppSecret"
BASE_URL="https://openapi.jujin.online/api"
TIMESTAMP=$(date +%s)
SIGN=$(python3 -c "import hashlib;print(hashlib.sha256(('${APP_ID}'+'${TIMESTAMP}'+'${APP_SECRET}').encode('utf-8')).hexdigest().lower())")
curl -X POST "$BASE_URL/v1/chain/get" \
-H "Content-Type: application/json" \
-H "x-app-id: $APP_ID" \
-H "x-timestamp: $TIMESTAMP" \
-H "x-sign: $SIGN" \
-d '{"product":"elm_redpacket","promotion_method":"H5","placement_code":"ZFBPP10","sub_id":"client_user_001","activity_id":675,"link_type":1}'
Python 示例
import time, json, hashlib, requests
APP_ID = "请填写举金望分配的AppId"
APP_SECRET = "请填写举金望分配的AppSecret"
BASE_URL = "https://openapi.jujin.online/api"
timestamp = str(int(time.time()))
sign = hashlib.sha256((APP_ID + timestamp + APP_SECRET).encode("utf-8")).hexdigest().lower()
headers = {
"Content-Type": "application/json",
"x-app-id": APP_ID,
"x-timestamp": timestamp,
"x-sign": sign,
}
body = {
"product": "elm_redpacket",
"promotion_method": "H5",
"placement_code": "ZFBPP10",
"sub_id": "client_user_001",
"activity_id": 675,
"link_type": 1,
}
resp = requests.post(f"{BASE_URL}/v1/chain/get", headers=headers, json=body, timeout=20)
print(resp.status_code)
print(json.dumps(resp.json(), ensure_ascii=False, indent=2))
14. 常见问题
Q1:为什么打开 API Base URL 不是网页?
API Base URL 是接口调用前缀,不是文档页。文档页请访问 https://openapi.jujin.online。
Q2:为什么签名失败?
检查 AppId、AppSecret、timestamp、签名公式、sha256 小写结果,以及 Header 中的 x-timestamp 是否与签名使用的 timestamp 完全一致。
Q3:为什么请求已过期?
客户服务器时间和标准时间差距过大。请校准服务器时间。
Q4:为什么推广位越权?
检查 placement_code 是否为举金望分配给当前客户的推广位编码。
Q5:AppSecret 可以放小程序端吗?
不能。AppSecret 只能保存在服务端。
Q6:成功后使用哪个字段?
使用 data.url。
15. 技术支持
联调遇到问题,请提供:请求时间、AppId、placement_code、请求 Body、返回结果、错误码。请勿在公开群内发送 AppSecret。