更新记录
2022.12.16
增加按账号限制解锁量相关接口
2022.12.20
增加解锁列表分组标签管理接口
2022.12.29
电话增加来源字段
2023.01.06
添加到OEM回调接口增加页面参数remark
2023.03.06
增加配置指定客户的数据回调地址
2023.04.03
回调接口响应体增加message字段
2023.04.17
回调接口联系方式增加isKp, eidCount字段
2023.05.06
增加拓客页面内嵌方案
2023.08.21
解锁上限设置支持按每日、每月、总解锁量控制
增加编辑企业名称接口
增加编辑账号姓名接口
2024.01.15
企业信息回调接口增加响应企业机构类型与经济类型
2024.12.26
企业回传数据筛选页面增加自定义字段功能及对应的开放接口
前言
该解决方案是供有产研能力的厂商快速接入小蓝本拓客系统而提供的解决方案。
在接入前,需要联系客户经理开通相应的权限,进入分销系统配置后才能正确启用。
术语定义
术语 | 描述 |
分销商 | 表明你与小蓝本商务合作关系 |
客户 | 即你在小蓝本系统上开通过功能的客户 |
总客户数 | 你的客户在小蓝本上开通使用1年,即占用一个客户许可数。总客户数即你可授权的客户许可总量 |
可用客户数 | 你的总客户数减去你已授权使用的客户许可总数 |
总账号数 | 你的客户使用拓客系统的人数,每个人每个客户许可期算一个账号数。总账号数即总的可授权的账号总量 |
可用账号数 | 你的总账号数减去已授权使用的账号数 |
总解锁量 | 你的每个客户解锁查看每个企业信息,即会扣减一个解锁量。总解锁量即你可分配给你的客户的解锁量总和 |
可用解锁量 | 你的总解锁量减去已分配的解锁量 |
分销管理系统
使用系统配置的管理员账号登录https://oem.pi51.cn/index.html系统操作
简化操作流程
1、登录分销商平台 https://oem.pi51.cn/index.html
2、设置好回调的URL、LOGO等配置
3、创建客户
4、获取跳转登录系统的完整URL,操作解锁
API接口
前置说明
以下接口的功能均与分销商平台功能一至
所有接口均是由你的服务端发起的http调用,接口响应按标准的restful风格,请求体与响应体如有的,均为json格式
所有的请求头需要包含accessId及accessToken
accessId即你在分销系统的唯一ID,请向客户经理索取
accessToken即你在分销系统中的接口调用配置值
请求的基础URL为: https://api.xiaolanben.com
标准curl示例
curl -X POST --header 'Content-Type: application/json' --header 'accessToken: 你的token' --header 'accessId: 你的id' -d '{ \
"accountNum": 5, \
"authYears": 1, \
"customerName": "测试客户", \
"enableDate": "2022-10-19", \
"unlockNum": 100 \
}' 'https://api.xiaolanben.com/blue-crm/api/v1/open/oem/system/customer'
系统使用标准的restful风格;所有的错误均以>=400的http状态码返回;具体的错误内容会在响应体中返回
{"trackingId":"我是问题反馈的跟踪ID","errors":[{"code":我是int错误码,"message":"我是错误原因"}]}
如:
{"trackingId":"55fbef73-2cd2-4a13-ad4a-73ba78879a29","errors":[{"code":400,"message":"请输入正确的时间"}]}
获取操作日志
GET /blue-crm/api/v1/open/oem/system/logs
入参
参数名 | 数据类型 | 数据域 | 备注 |
operateType | INT | query | 操作类型 可空; 全部不传参数/0系统/1客户消耗/2账号消耗/3解锁量消耗 |
startDate | STRING | query | 时间范围-开始 可空;格式为yyyy-MM-dd |
endDate | STRING | query | 时间范围-结束 可空;格式为yyyy-MM-dd |
pageIndex | INT | query | 页面索引,从1开始 |
pageSize | INT | query | 页面大小,2~100 |
出参
JSON响应体
参数名 | 数据类型 | 备注 |
pageIndex | INT | 请求时的页面索引号 |
pageSize | INT | 请求时的页面大小 |
totalCount | LONG | 总记录数 |
data | 数组 | 日志数据数组 |
–id | LONG | 日志ID |
–logTime | STRING | 日志时间yyyy-MM-dd HH:mm:ss格式 |
–operateType | STRING | 操作类型,系统、客户消耗等 |
–content | STRING | 操作内容 |
–consumeNum | INT | 数量 |
–customerName | STRING | 客户名称 |
–customerId | INT | 客户ID |
–operatorName | STRING | 操作人姓名 |
获取客户列表
GET /blue-crm/api/v1/open/oem/system/customers
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerName | STRING | query | 客户名称 可空 |
startDate | STRING | query | 时间范围-开始 可空;格式为yyyy-MM-dd |
endDate | STRING | query | 时间范围-结束 可空;格式为yyyy-MM-dd |
customerStatus | STRING | query | 客户状态 可空; 全部ALL/未生效INEFFECTIVE/有效VALID/已过期EXPIRED |
pageIndex | INT | query | 页面索引,从1开始 |
pageSize | INT | query | 页面大小,2~100 |
出参
参数名 | 数据类型 | 备注 |
pageIndex | INT | 请求时的页面索引号 |
pageSize | INT | 请求时的页面大小 |
totalCount | LONG | 总记录数 |
data | 数组 | 数据数组 |
–customerId | INT | 客户ID |
–customerName | STRING | 客户名称 |
–accountNum | INT | 有效账号数 |
–unlockNum | INT | 总解锁量 |
–availableUnlockNum | INT | 可用解锁量 |
–unlockLimit | INT | 每日每人可解锁企业数量限制 |
–enableDate | STRING | 启用时间 yyyy-MM-dd |
–expireDate | STRING | 有效期至yyyy-MM-dd |
–gmt51Create | STRING | 创建时间yyyy-MM-dd HH:mm:ss |
–status | INT | 状态,1有效/2已过期/10已删除 |
–statusDesc | STRING | 状态描述 |
创建客户
POST/blue-crm/api/v1/open/oem/system/customer
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerName | STRING | body | 客户名称 2~50个字符 |
accountNum | INT | body | 购买账号数 0~20000之间 |
unlockNum | INT | body | 购买解锁量 0~5000万之间 |
enableDate | STRING | body | 启用时间;yyyy-MM-dd格式,必须介于10天内的日期 |
authYears | INT | body | 授权年数;1~10之间 |
出参
参数名 | 数据类型 | 备注 |
customerId | INT | 新创建的客户ID |
usedCustomerNum | INT | 本次消耗客户数 |
availableCustomerNum | INT | 剩余可用客户数 |
usedAccountNum | INT | 本次消耗账户数 |
availableAccountNum | INT | 剩余可用账号数 |
usedUnlockNum | INT | 本次消耗解锁量数 |
availableUnlockNum | INT | 剩余可用解锁量 |
编辑客户名称
PUT/blue-crm/api/v1/open/oem/system/customer/{customerId}
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户标识ID |
customerName | STRING | body | 客户名称 2~50个字符 |
出参
无
获取客户详情
GET/blue-crm/api/v1/open/oem/system/{customerId}/detail
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
出参
参数名 | 数据类型 | 备注 |
customerId | INT | 客户标识 |
customerName | STRING | 客户名称 |
accountNum | INT | 有效账号数 |
unlockNum | INT | 总解锁量 |
availableUnlockNum | INT | 可用解锁量 |
unlockLimit | INT | 默认每日每人可解锁企业数量限制–已弃用,请使用dailyLimit/monthlyLimit/totalLimit |
dailyLimit | INT | 每日每人可解锁企业数量限制 |
monthlyLimit | INT | 每月每人可解锁企业数量限制 |
totalLimit | INT | 总的每人可解锁企业数量限制 |
enableDate | STRING | 启用时间yyyy-MM-dd |
expireDate | STRING | 有效期至yyyy-MM-dd |
gmt51Create | STRING | 创建时间yyyy-MM-dd HH:mm:ss |
status | INT | 状态,0未生效/1有效/2已过期/10已删除 |
statusDesc | STRING | 状态描述 |
获取客户日志
GET/blue-crm/api/v1/open/oem/system/{customerId}/logs
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
operateType | INT | query | 操作类型 可空;全部不传/0系统/1客户/2账号/3解锁量 |
startDate | STRING | query | 开始时间 可空;yyyy-MM-dd |
endDate | STRING | query | 结束时间 可空;yyyy-MM-dd |
pageIndex | INT | query | 页面索引从1开始 |
pageSize | INT | query | 页面大小;介于2~100 |
出参
参数名 | 数据类型 | 备注 |
pageIndex | INT | 请求时的页面索引号 |
pageSize | INT | 请求时的页面大小 |
totalCount | LONG | 总记录数据 |
data | 数组 | 数据列表 |
–id | LONG | 记录ID |
–logTime | STRING | 日志时间 yyyy-MM-dd HH:mm:ss |
–operateType | STRING | 操作类型:创建账户/增购/续期等 |
–content | STRING | 操作内容 |
–consumeNum | INT | 消耗对应类型的数量值 |
–customerName | STRING | 客户名称 |
–customerId | INT | 客户标识 |
–operatorName | STRING | 操作人姓名 |
客户增购–前置check
PUT/blue-crm/api/v1/open/oem/system/{customerId}/addPurchase/preCheck
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
accountNum | INT | body | 增购的账号数 0~2000 |
unlockNum | INT | body | 增购的解锁量0~1000万 |
出参
参数名 | 数据类型 | 备注 |
crossYears | INT | 跨年度数;需要扣减的账号数=增购账号数*年数 |
availableAccountNum | INT | 可用账号数 |
useAccountNum | INT | 本次将会消耗账户数 |
availableUnlockNum | INT | 可用解锁量 |
useUnlockNum | INT | 本次将会消耗解锁量数 |
客户增购
PUT/blue-crm/api/v1/open/oem/system/{customerId}/addPurchase
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
accountNum | INT | body | 增购的账号数 0~2000 |
unlockNum | INT | body | 增购的解锁量0~1000万 |
出参
参数名 | 数据类型 | 备注 |
usedAccountNum | INT | 本次消耗账户数 |
availableAccountNum | INT | 剩余可用账号数 |
usedUnlockNum | INT | 本次消耗解锁量数 |
availableUnlockNum | INT | 剩余可用解锁量 |
客户续期–前置check
PUT/blue-crm/api/v1/open/oem/system/{customerId}/renewal/preCheck
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
renewalYears | INT | body | 续期的年数 1~10 |
accountNum | INT | body | 请输入续期账号数;该值需介于0~1000之间 |
出参
参数名 | 数据类型 | 备注 |
expireDate | STRING | 有效期至 yyyy-MM-dd |
availableCustomerNum | INT | 可用客户数 |
useCustomerNum | INT | 本次将消耗客户数 |
availableAccountNum | INT | 可用账号数 |
useAccountNum | INT | 本次将消耗账号数 |
客户续期
PUT/blue-crm/api/v1/open/oem/system/{customerId}/renewal
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
renewalYears | INT | body | 续期的年数 1~10 |
accountNum | INT | body | 请输入续期账号数;该值需介于0~1000之间 |
出参
参数名 | 数据类型 | 备注 |
expireDate | STRING | 有效期至 yyyy-MM-dd |
usedCustomerNum | INT | 本次消耗客户数 |
availableCustomerNum | INT | 剩余的可用客户数 |
usedAccountNum | INT | 本次消耗账号数 |
availableAccountNum | INT | 剩余的可用账号数 |
设置客户默认每日解锁量限制
PUT /blue-crm/api/v1/open/oem/system/{customerId}/unlockLimit
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
unlockLimit | INT | body | 每日解锁量,介于0~50万;已弃用,请使用dailyLimit |
dailyLimit | INT | body | 每日解锁量,介于0~50万; 可空,但dailyLimit/monthlyLimit/totalLimit必须至少有一个值 |
monthlyLimit | INT | body | 每月解锁量,介于0~50万; 可空,但dailyLimit/monthlyLimit/totalLimit必须至少有一个值 |
totalLimit | INT | body | 总解锁量,介于0~1000万; 可空,但dailyLimit/monthlyLimit/totalLimit必须至少有一个值 |
出参
无, 响应码204
获取客户指定人员每日解锁量限制
该规则优先于默认规则,如在多条人员规则中都相同的账号,则会按修改时间倒序取
GET /blue-crm/api/v1/open/oem/system/{customerId}/account/unlockLimit
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
出参
参数名 | 数据类型 | 备注 |
数组 | 响应体为数组格式 | |
–id | LONG | 记录标识 |
–accounts | MAP<INT, STRING> | 账号ID与姓名的对照表{101:”张三”,102:”李四”} |
–total | INT | 每日限制上限,已弃用,值同dailyLimit |
–dailyLimit | INT | 每日限制上限 |
–monthlyLimit | INT | 每月限制上限 |
–totalLimit | INT | 总限制上限 |
–gmt51Modify | STRING | 最后修改时间 |
创建设置指定客户按人员配置的解锁量限制规则
POST /blue-crm/api/v1/open/oem/system/{customerId}/account/unlockLimit
注意:规则总数不能超过20条
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
accountIds | ARRAY<INT> | body | 账号ID数组 |
limit | INT | body | 限制 最小为0;已弃用,请使用dailyLimit |
dailyLimit | INT | body | 每日解锁量,介于0~50万; 可空,但dailyLimit/monthlyLimit/totalLimit必须至少有一个值 |
monthlyLimit | INT | body | 每月解锁量,介于0~50万; 可空,但dailyLimit/monthlyLimit/totalLimit必须至少有一个值 |
totalLimit | INT | body | 总解锁量,介于0~1000万; 可空,但dailyLimit/monthlyLimit/totalLimit必须至少有一个值 |
confirmAdd | BOOL | body | 空值或者false,在保存时会校验本次添加的人员是否在其它 规则中已存在,如果存在,则会响应http状态码409; 如果为true,则系统会自动将冲突人员从其它规则中移除, 应用本次添加的规则 |
出参
参数名 | 数据类型 | 备注 |
id | LONG | 记录标识 |
accounts | MAP<INT, STRING> | 账号ID与姓名的对照表{101:”张三”,102:”李四”} |
total | INT | 每日限制上限,已弃用,请使用dailyLimit |
dailyLimit | INT | 每日限制上限 |
monthlyLimit | INT | 每月限制上限 |
totalLimit | INT | 总限制上限 |
gmt51Modify | STRING | 最后修改时间 |
修改设置指定客户按人员配置的解锁量限制规则
PUT /blue-crm/api/v1/open/oem/system/{customerId}/account/unlockLimit/{id}
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
id | LONG | path | 规则记录的标识ID |
accountIds | ARRAY<INT> | body | 账号ID数组 |
limit | INT | body | 限制 最小为0;已弃用,请使用dailyLimit |
dailyLimit | INT | body | 每日解锁量,介于0~50万; 可空,但dailyLimit/monthlyLimit/totalLimit必须至少有一个值 |
monthlyLimit | INT | body | 每月解锁量,介于0~50万; 可空,但dailyLimit/monthlyLimit/totalLimit必须至少有一个值 |
totalLimit | INT | body | 总解锁量,介于0~1000万; 可空,但dailyLimit/monthlyLimit/totalLimit必须至少有一个值 |
confirmAdd | BOOL | body | 空值或者false,在保存时会校验本次添加的人员是否在其它 规则中已存在,如果存在,则会响应http状态码409; 如果为true,则系统会自动将冲突人员从其它规则中移除, 应用本次更新的规则 |
出参
参数名 | 数据类型 | 备注 |
id | LONG | 记录标识 |
accounts | MAP<INT, STRING> | 账号ID与姓名的对照表{101:”张三”,102:”李四”} |
total | INT | 每日限制上限,已弃用,请使用dailyLimit |
dailyLimit | INT | 每日限制上限 |
monthlyLimit | INT | 每月限制上限 |
totalLimit | INT | 总限制上限 |
gmt51Modify | STRING | 最后修改时间 |
删除设置指定客户按人员配置的解锁量限制规则
DELETE /blue-crm/api/v1/open/oem/system/{customerId}/account/unlockLimit/{id}
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
id | LONG | path | 规则记录的标识ID |
出参
无,响应码为204
获取生效中及待生效的账号数记录
GETGET/blue-crm/api/v1/open/oem/system/{customerId}/authLimit
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
出参
参数 名 | 数据类型 | 备注 |
该响应体为数组 | 数组 | |
id | LONG | 数据ID |
effectiveTime | STRING | 生效时间 |
expireTime | STRING | 有效截止时间 |
limitValue | STRING | 账号数 |
status | STRING | 状态 |
获取有权限的客户账号列表
GET/blue-crm/api/v1/open/oem/system/{customerId}/validAccounts
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
keyword | STRING | query | 支持姓名或完整手机号搜索 |
pageIndex | INT | query | 页面索引从1开始 |
pageSize | INT | query | 页面大小介于2~100 |
出参
参数名 | 数据类型 | 备注 |
pageIndex | INT | 请求页面索引 |
pageSize | INT | 请求页面大小 |
totalCount | LONG | 总记录数 |
data | 数组 | 数据列表 |
–accountId | INT | 账号ID |
–accountName | STRING | 账号名称 |
–accountMobile | STRING | 账号手机号 |
删除指定客户的指定账号
DELETE/blue-crm/api/v1/open/oem/system/{customerId}/account/{accountId}
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
accountId | INT | path | 账号标识ID |
出参
无;响应码204
创建并设置指定客户账号
POST/blue-crm/api/v1/open/oem/system/{customerId}/account
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
accountName | STRING | body | 账号名称-一般用人姓名 1~10个字 |
accountMobile | STRING | body | 账号手机号 一定是手机号 |
出参
参数名 | 数据类型 | 备注 |
accountId | INT | 账号标识ID |
编辑指定客户账号的名称
PUT/blue-crm/api/v1/open/oem/system/{customerId}/account/{accountId}
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
accountId | INT | path | 账号的标识ID |
accountName | STRING | body | 账号名称-一般用人姓名 1~10个字 |
出参
无
获取指定客户的解锁列表分组
GET /blue-crm/api/v1/open/oem/system/{customerId}/unlockTags
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
出参
参数名 | 数据类型 | 备注 |
id | LONG | 记录标识 |
dictKey | STRING | 分组的key标识 |
dictName | STRING | 分组的名称 |
dictDesc | STRING | 分组的描述 |
orderNo | STRING | 排序序号 |
extData | JSON | 扩展数据 暂不用关心 |
新建指定客户的解锁列表分组
POST /blue-crm/api/v1/open/oem/system/{customerId}/unlockTag
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
dictName | STRING | body | 分组的名称 |
dictDesc | STRING | body | 分组的描述 |
出参
无,响应http码204
编辑指定客户的解锁列表分组
PUT /blue-crm/api/v1/open/oem/system/{customerId}/unlockTag/{id}
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
id | LONG | path | 分组记录标识ID |
dictName | STRING | body | 分组的名称 |
dictDesc | STRING | body | 分组的描述 |
出参
无,响应http码204
删除指定客户的解锁列表分组
DELETE /blue-crm/api/v1/open/oem/system/{customerId}/unlockTag/{id}
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
id | LONG | path | 分组记录标识ID |
出参
无,响应http码204
配置指定客户的数据回调地址
当特定的客户数据回调时需要回调至非统一配置的接口时,使用该接口配置;(统一回调地址由https://oem.pi51.cn/#/oem/admin/setCallback)
PUT/blue-crm/api/v1/open/oem/system/{customerId}/callbackUrl
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
url | STRING | body | 指定的URL地址;如果要使用回统一回调地址的,则该值设置为0长度字符串 |
出参
无,响应http码204
获取企业回传自定义字段列表
GET /blue-crm/api/v1/open/oem/system/customize/column/list/{source}
入参
参数名 | 数据类型 | 数据域 | 备注 |
source | STRING | path | 固定为oemEntData |
出参
参数名 | 数据类型 | 备注 |
数据 | ARRAY | 自定义列数组 |
id | LONG | 记录标识 |
source | STRING | 固定为oemEntData |
apiName | STRING | 字段标识名,如:text_1 |
columnName | STRING | 字段名称,如:数据用途 |
isSysColumn | INT | 是否是系统字段,当前全部为0非系统字段 |
columnType | STRING | 字段类型,text/textArea/checkBox/radio/date/bool |
reqFlag | STRING | 是否必填,0为必填 |
status | INT | 状态,0启用/1禁用 |
columnHint | STRING | 输入提示,仅text/textArea有效 |
minLength | INT | 最小输入长度,仅text/textArea有效 |
maxLength | INT | 最长输入长度,仅text/textArea有效。不得超过500 |
dateFormartType | STRING | 日期输入格式,仅date有效 |
optionItems | 对象 | 在checkBox/radio/bool时,对应的内容描述 |
–def | STRING | 默认选项值 |
–options | 数组 | 具体选项数组 |
—-label | STRING | 选项显示值 |
—-value | STRING | 选项值 |
新增企业回传自定义字段
PUT /blue-crm/api/v1/open/oem/system/customize/column
入参
参数名 | 数据类型 | 数据域 | 备注 |
source | STRING | body | 固定为oemEntData |
columnName | STRING | body | 字段名称,如:数据用途 |
isSysColumn | INT | body | 是否是系统字段,当前全部为0非系统字段 |
columnType | STRING | body | 字段类型,text/textArea/checkBox/radio/date/bool |
reqFlag | STRING | body | 是否必填,0为必填 |
status | INT | body | 状态,0启用/1禁用 |
columnHint | STRING | body | 输入提示,仅text/textArea有效 |
minLength | INT | body | 最小输入长度,仅text/textArea有效 |
maxLength | INT | body | 最长输入长度,仅text/textArea有效。不得超过500 |
dateFormartType | STRING | body | 日期输入格式,仅date有效 |
optionItems | 对象 | body | 在checkBox/radio/bool时,对应的内容描述 |
–def | STRING | body | 默认选项值 |
–options | 数组 | body | 具体选项数组 |
—-label | STRING | body | 选项显示值 |
—-value | STRING | body | 选项值 |
出参
参数名 | 数据类型 | 备注 |
id | LONG | 记录标识 |
apiName | STRING | 字段标识名,如:text_1 |
columnName | STRING | 字段名称,如:数据用途 |
isSysColumn | INT | 是否是系统字段,当前全部为0非系统字段 |
columnType | STRING | 字段类型,text/textArea/checkBox/radio/date/bool |
reqFlag | STRING | 是否必填,0为必填 |
status | INT | 状态,0启用/1禁用 |
columnHint | STRING | 输入提示,仅text/textArea有效 |
minLength | INT | 最小输入长度,仅text/textArea有效 |
maxLength | INT | 最长输入长度,仅text/textArea有效。不得超过500 |
dateFormartType | STRING | 日期输入格式,仅date有效 |
optionItems | 对象 | 在checkBox/radio/bool时,对应的内容描述 |
–def | STRING | 默认选项值 |
–options | 数组 | 具体选项数组 |
—-label | STRING | 选项显示值 |
—-value | STRING | 选项值 |
编辑企业回传自定义字段
POST /blue-crm/api/v1/open/oem/system/customize/column/{id}
入参
参数名 | 数据类型 | 数据域 | 备注 |
id | LONG | path | 要编辑的自定义字段标识 |
source | STRING | body | 固定为oemEntData |
columnName | STRING | body | 字段名称,如:数据用途 |
isSysColumn | INT | body | 是否是系统字段,当前全部为0非系统字段 |
columnType | STRING | body | 字段类型,text/textArea/checkBox/radio/date/bool |
reqFlag | STRING | body | 是否必填,0为必填 |
status | INT | body | 状态,0启用/1禁用 |
columnHint | STRING | body | 输入提示,仅text/textArea有效 |
minLength | INT | body | 最小输入长度,仅text/textArea有效 |
maxLength | INT | body | 最长输入长度,仅text/textArea有效。不得超过500 |
dateFormartType | STRING | body | 日期输入格式,仅date有效 |
optionItems | 对象 | body | 在checkBox/radio/bool时,对应的内容描述 |
–def | STRING | body | 默认选项值 |
–options | 数组 | body | 具体选项数组 |
—-label | STRING | body | 选项显示值 |
—-value | STRING | body | 选项值 |
出参
无,响应http码204
删除企业回传自定义字段
DELETE /blue-crm/api/v1/open/oem/system/customize/column/{id}
入参
参数名 | 数据类型 | 数据域 | 备注 |
id | LONG | path | 要删除的自定义字段标识 |
出参
无,响应http码204
企业回传自定义字段排序
POST /blue-crm/api/v1/open/oem/system/customize/column/sort
入参
参数名 | 数据类型 | 数据域 | 备注 |
source | STRING | query | 固定为oemEntData |
数组 | ARRAY | body | 按顺序排序的自定义字段标识,如:[2,3,1] |
LONG | body | 自定义字段标识 |
出参
无,响应http码204
获取跳转登录系统的完整URL
POST/blue-crm/api/v1/open/oem/system/{customerId}/getLoginUrl
入参
参数名 | 数据类型 | 数据域 | 备注 |
customerId | INT | path | 客户的标识ID |
createAccount | STRING | body | 登录同时否自动创建账号 1为当手机号未创建过账号时自动创建 0不创建 |
accountMobile | STRING | body | 账号手机号 |
accountName | STRNG | body | 账号名称-一般用人姓名; 当未输入并且自动创建账号时,取手机号末尾4位 |
returnUrl | STRING | body | 非必传。在拓客系统用户免登登录超时或失败时,系统会自动回跳转回该URL(需要符合URL标准格式) |
customDomain | STRING | body | 非必传。如果在小蓝本配置过自定义域名的,则可以传入该域名(需要符合URL标准格式)。如:https://leads.pi51.cn |
appCategory | INT | body | 非必传,在未传入customDomain有效。如果您开通了多个版本的拓客,则可以通过该值控制想要的版本路径。0通过版/2金融版/3财税版/4会展版/5招商版 |
routing | STRING | body | 非必传。页面路由,不能带#符,具体参考小蓝本官方拓客页路由。如:/newUser/search/companySearch 或 /newUser/company?eid=q94e84a8422fc4aeb98d387145ccc4f68 |
noHead | BOOL | body | 非必传。有路由时有效。如果传入true,则不显示拓客页面头部信息 |
noMenu | BOOL | body | 非必传。有路由时有效。如果传入true,则不显示页面左侧菜单信息 |
出参
参数名 | 数据类型 | 备注 |
accountId | INT | 账号标识ID |
url | STRING | 终端获客用户操作的平台URL |
接口回调
该系列接口由分销商提供接收的URL,小蓝本以POST JSON方式向该URL发送数据,分销商在处理成功后响应JSON
所有接口调用超时时长固定为3秒,如果超过3秒未响应,拓客系统则会当成默认处理
数据签名
由小蓝本发送来的数据,在请求的url路径后,会自动追加签名参数data_sign
该签名参数是直接对发送请求的body块字符串进行RSA加签,收到后可以通过RSA的公钥进行验证
RSA签名算法为SHA1WithRSA
RSA签名验证公钥base64编码为
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrYYOJGFKnXyILiSlXdD2vLGbwfEZz3nynNe066y1SCLI1MTDzRRgfdgMVTmPr95uu4nE3iE5O145RzeNF47UUMuYqBsKP9kjc+0qHdM2d90S3NBuL4U1nSkWnxb4Nq/nGpnQ/ItglSJaf4ejLQEEsImPPCyXDDrHqEuIltffkzwIDAQAB
JAVA代码
import java.security.Signature;
import java.security.SignatureException;
import java.nio.charset.Charset;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidKeyException;
import org.apache.commons.codec.binary.Base64;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.security.KeyFactory;
public class RSAUtils {
private static final String RSA_SIGNATURE_ALGORITHM = "SHA1WithRSA";
private static final String RSA_ALGORITHM = "RSA";
/**
* RSA验签
*
* @param content 待验签的内容-取自body块原文
* @param base64Sign base64待验的签名
* @param publicKey 验签使用的base公钥
* @param charset 字符集 固定UTF-8
* @return 返回验签结果
*/
public static boolean rsaCheck(String content, String base64Sign, String base64Key, Charset charset)
throws NoSuchAlgorithmException, InvalidKeyException, SignatureException {
byte[] keyBytes = Base64.decodeBase64(base64Key);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(RSA_ALGORITHM);
PublicKey publicKey = keyFactory.generatePublic(keySpec);
Signature signature = Signature.getInstance(RSA_SIGNATURE_ALGORITHM);
signature.initVerify(publicKey);
signature.update(content.getBytes(charset));
return signature.verify(Base64.decodeBase64(base64Sign.getBytes(charset)));
}
}
PHP示例
<?php
function rsaCheck($content, $base64Sign, $base64Key) {
$base64Key="-----BEGIN PUBLIC KEY-----\n".$base64Key."\n-----END PUBLIC KEY-----\n";
$res = openssl_pkey_get_public($base64Key);
$detail = openssl_pkey_get_details($res);
$pkey= $detail['key'];
$sign=base64_decode($base64Sign);
return openssl_verify($content, $sign, $pkey);
}
?>
自定义按钮点击回调接口
当终端操作用户在 找企业、地图拓客 等模块,点击自定义的按钮后,则立即触发该接口回调逻辑
如果回调失败,则会直接提示终端操作用户错误信息
当一次圈选大批次数据时,系统内部自动分成400条记录一个子批次进行回调,因此,终端用户点击一次,你可能会收到很多次回调数据
请求参数
参数名 | 数据类型 | 数据域 | 备注 |
data_sign | STRING | query | 数据信息体的签名 |
total_cnt | INT | query | 多批次时,预期回传的总企业数;注:不参与签名 |
source_page | STRING | query | 用户点击请求时的页面路由;注:不参与签名 |
batchNo | STRING | body | 批次号,如果一个点击拆分成多次回调,则批次号会是xxxxx-123样式 |
customerId | INT | body | 客户ID |
accountId | INT | body | 操作者的账号ID |
buttonId | STRING | body | 点击按键的标识ID,由自定义按键处定义 |
queryJson | STRING | body | 用户查询企业数据时的原始条件内容;如需解析,则需要根据source_page处理 |
customizeField | MAP | body | 当有自定义字段时,则会回传用户输入的内容。如{“text_1″:”123”} |
remark | STRNG | body | 添加到OEM弹层用户输入的备注字段 |
entList | 数组 | body | 回调的企业列表 |
–eid | STRING | body | 企业唯一标识 |
–name | STRING | body | 企业名称 |
–brand | STRING | body | 企业品牌 |
–logo | STRING | body | 企业logo |
–contactWayNum | INT | body | 联系人数 |
–shortName | STRING | body | 企业简称 |
–companyFrName | STRING | body | 法人名称 |
–rank | DOUBLE | body | 实力值(小蓝本自有算法值) |
–esdate | STRING | body | 成立日期 |
–companyStatusName | STRING | body | 企业状态名称 |
–phoneCnt | STRING | body | 活跃手机号数目, 可能会显示为12个,如果没有可能为– |
–kpPhoneCnt | STRING | body | 活跃KP手机号数 |
–companyFrPid | STRING | body | 公司法人pid |
–stockCode | STRING | body | 股票代码 |
–stockShortname | STRING | body | 股票简称 |
–regcap | DOUBLE | body | 注册资本 |
–ssNum | INT | body | 参保人数 |
–status | INT | body | 状态 |
–regArea | STRING | body | 注册地 |
–capTypeName | STRING | body | 资本类型 |
–regGroupName | STRING | body | 所属集团,小蓝本算法值 |
–acConam | DOUBLE | body | 实缴资本 |
–areas | 字符串数组 | body | 所属省市区 如 [“浙江”, “杭州市”, “西湖区”] |
–industryphyName | STRING | body | 所属行业 |
–esage | INT | body | 成立年限 |
–investAmount | DOUBLE | body | 对外投资 |
–listingDateLatest | STRING | body | 上市日期 yyyy-MM-dd |
–opscope | STRING | body | 经营范围 |
–roundStage | STRING | body | 融资阶段 |
–regDes | STRING | body | 企业简介 |
–emails | 字符串数组 | body | 邮箱 如 [“12345@qq.com”, “12343@163.com”] |
–regCapCurName | STRING | body | 注册资本币别 |
–website | STRING | body | 网站, 多个时仅返回第一个 |
–orgTypeName1 | STRING | body | 机构类型 二级分类第1层 |
–orgTypeName2 | STRING | body | 机构类型 二级分类第2层 |
–ecoTypeName1 | STRING | body | 经济类型 二级分类第1层 |
–ecoTypeName2 | STRING | body | 经济类型 二级分类第2层 |
–contactList | 数组 | body | 联系人列表 |
—-pid | STRING | body | 联系人标识ID |
—-name | STRING | body | 联系人名称 |
—-dept | STRING | body | 部门 |
—-position | STRING | body | 职位 |
—-phone | STRING | body | 手机 |
—-tel | STRING | body | 固话 |
STRING | body | ||
—-logo | STRING | body | logo |
—-source | STRING | body | 号码来源字段,注该字段为一个复杂的JSON结构[{“groupName”:”B2B”,”sources”:[{“name”:”xxx”,”url”:”url”}]}] |
—-isKp | BOOL | body | 是否是KP |
—-eidCount | INT | body | 同一个联系方式的企业数 |
响应体格式
响应体仅支持JSON格式
字段名 | 数据类型 | 备注 |
success | BOOL | 如果处理成功则返回true;如果处理失败则返回false; 如果返回的是false,在分批次时,则会中断后续的任务 |
successNum | INT | 处理成功的企业记录数 |
failedNum | INT | 处理时过滤忽略处理的企业记录数,如该企业已经被另外一个员工占有时 |
successContactNum | INT | 处理成功的联系人数 |
message | STRING | 处理成功或失败的提示消息 |
请求体示例
{"batchNo":"586b3d05-d44b-4adf-abeb-b196ccf88aa0","customerId":24465,"accountId":19627,"buttonId":"dounlock","entList":[{"eid":"q94e84a8422fc4aeb98d387145ccc4f68","name":"深圳小蓝本网络技术有限公司","creditCode":"91330106MA2GMFHK8L","brand":"小蓝本","logo":"https://pic.u51.com/sfs-gateway/api/v1/download/ff1fbd4e73bd4141b16b3be9953d512a4c71","contactWayNum":5,"shortName":"小蓝本","companyFrName":"吴炜清","rank":20000.0,"esdate":"2019-05-21","companyStatusName":"在营","phoneCnt":"-","kpPhoneCnt":"-","companyFrPid":"p_b9debd5ea28c64836182a5ef16ae6063","stockCode":null,"stockShortname":null,"regcap":1580.2466,"ssNum":0,"status":3,"regArea":"深圳市福田区梅林街道孖岭社区凯丰路10号翠林大厦8层807P","capTypeName":"私营企业","regGroupName":"51信用卡","acConam":1505.2466,"areas":["广东","深圳市","福田区"],"industryphyName":"信息传输、软件和信息技术服务业","esage":5,"investAmount":null,"listingDateLatest":null,"opscope":"服务:网络信息技术、计算机软硬件、通信技术的技术开发、技术咨询、技术服务、成果转让,计算机软硬件的维修(限现场,涉及资质证凭证经营),企业管理咨询,市场调查,经济信息咨询(除商品中介)。(以上法律、行政法规、国务院决定禁止的项目除外,限制的项目须取得许可后方可经营,依法须经批准的项目,经相关部门批准后方可开展经营活动)^对企业的信用信息进行采集、整理、保存、加工,企业征信服务,企业信用评估咨询,第二类增值电信业务中的信息服务业务。","roundStage":"战略投资","regDes":"小蓝本是一个企业信息、商业信息资讯查询软件,方便用户实时查询企业相关的股东、股权结构、法定代表人、企业对外投资信息、企业诉讼、商标和专利信息、产品业务、品牌项目、投融资信息等等。杭州蓝页网络技术有限公司旗下产品。","emails":["51_gongshang@u51.com"],"regCapCurName":"人民币","website":"www.xiaolanben.com","orgTypeName1":"有限责任公司","orgTypeName2":"其他有限责任公司","ecoTypeName1":"民营企业","ecoTypeName2":null,"contactList":[{"pid":"p_mo6de4a5e90770c0e058059f3a4ce2d3d1","name":null,"dept":null,"position":null,"phone":"18968121369","tel":null,"email":null,"logo":null,"source":"[{\"sort\":15,\"groupName\":\"年报\",\"sources\":[{\"name\":\"2023年报\",\"url\":\"\"}]}]","isKp":false,"eidCount":101}]}],"remark":null}
企业列表及主页增加数据归属人信息,及显示电话图标
该接口可以不提供,回调地址需要单独配置
该接口用于在企业列表及企业主页上显示已归属该企业信息的人员信息;如 已被张三添加客户、已存在客户公海等文案;如果未响应文案,则不会显示
请求参数
参数名 | 数据类型 | 数据域 | 备注 |
data_sign | STRING | query | 数据签名 |
customerId | INT | body | 客户ID |
accountId | INT | body | 操作者的账号ID |
dataType | STRING | body | 数据类型:固定企业ent |
dataIds | ARRAY<STRING> | body | 数组,暂只支持eid |
响应体格式
响应体仅支持JSON格式
字段名 | 数据类型 | 备注 |
数组 | 数组 | 响应数据为JSON数组 |
–dataId | STRING | 数据标识。暂只支持eid |
–mainTip | STRING | 主提示内容,如:已存在于客户公海 / 已被张三添加 |
–subTip | STRING | 次提示内容,如:可以领取 / 不可添加 |
–callMobileIcon | BOOL | 是否显示手机号右边的电话样式icon,如果为true则显示,否则不显示; 仅在已解锁企业有效 |
–callTelIcon | BOOL | 是否显示固话右边的电话样式icon,如果为true则显示,否则不显示; 仅在已解锁企业有效 |
点击手机号/固话右边的电话icon时回调
该接口可以不提供。回调地址需要单独配置
当上面的接口响应支持呼叫图标并且该企业已解锁时,用户点击呼叫按钮后,系统触发该回调接口
请求参数
参数名 | 数据类型 | 数据域 | 备注 |
data_sign | STRING | query | 数据签名 |
customerId | INT | body | 客户ID |
accountId | INT | body | 操作者的账号ID |
eid | STRING | body | 企业唯一标识 |
entName | STRING | body | 企业名称 |
pid | STRING | body | 联系人标识ID |
name | STRING | body | 联系人名称 |
dept | STRING | body | 部门 |
position | STRING | body | 职位 |
phone | STRING | body | 点击的电话号码。手机号/固话 |
logo | STRING | body | 联系人logo |
响应体格式
响应体仅支持JSON格式
字段名 | 数据类型 | 备注 |
success | BOOL | 如果成功则返回true; 否则为false |
failedMsg | STRING | 出错时的响应提示内容,如果未响应则会默认『系统忙,请稍候再试』 |
页面内嵌方案
在用户获取到的免登链接打开的拓客页面,系统支持增加参数方式,嵌入到内部系统中
nohead=1 则会不显示页面头
nomenu=1 则不会显示页面菜单
该两个参数以&nohead=1&nomenu=1方式追加至免登链接中
如果想直接跳转至指定页时,需要在获取到的免登链接中,将目标页面的路由添加到URL中
如:高级搜索页,则是https://leads.pi51.cn/#/newUser/advancedSearch?login_id=xxx&login_key=xxxx&login_sign=xxxx&return_url=xxxx
注:同时内嵌的ifream需要设置定位权限allow-geolocation等。如<iframe src=”example.com” sandbox=”allow-downloads allow-geolocation allow-forms allow-scripts allow-popups allow-same-origin”></iframe>