接入说明
- 无感发花是指无需跳转领花页,直接在业务侧操作而实现发放小红花到用户对应公益帐号中的发花方式
- 无感捐花是指无需跳转到腾讯公益梦想页/项目页,直接在业务侧操作而实现用户捐赠小红花
以上方式涉及业务侧帐号与公益帐号的转换,需要满足以下条件:
- 腾讯内部已开通帐号互转权限的业务(仅限微信或QQ帐号体系)
- 外部已开通帐号互转权限的业务(仅限QQ帐号体系)
已通过开放平台绑定用户帐号的业务(任意帐号体系,暂未支持)
接入方需要提供微信开放平台的AppID和负责人(用于申请互转权限时作为审批人),或者QQ互联的AppID,由公益侧提交互转权限的申请,微信/QQ审批通过后,才能使用。注意:如果是微信游戏,则需要通过微信帐号托管平台做接入,参考微信游戏帐号托管
接口使用签名方式,如何生成签名以及用户信息的传递参考接口调用凭证
业务流程
- 以下是基本的业务使用流程
无感发花
sequenceDiagram participant fr as 业务前端 participant ba as 业务后端 participant op as 公益开放平台 fr ->> ba: 用户是否能领花 ba ->> ba: 判断业务自身领花资格 ba ->> op: 调用判断用户当前能否领花(无感发花)接口 op -->> ba: 返回能否领花 ba -->> fr: 返回结果 fr -->> fr: 用户能领花 fr ->> ba: 领花 ba ->> op: 调用无感发花接口 op -->> ba: 返回发花结果 ba ->> ba: 业务自身逻辑处理 ba -->> fr: 返回结果 fr ->> fr: 展示业务自定义领花结果页
无感捐花
调用接口
判断用户当前能否领花
使用场景: 发花前判断用户能否领花,一般用于业务需要在前端置灰领花按钮时使用。这里的判断是业务侧在公益侧申请的领花配置(比如1天1朵、1天3朵等)。如果业务侧本身有做领花数的记录,也可以不需要调用该接口。
调用凭证: 应用签名
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/SilenceCheckXhh
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
trans_date | string | 是 | 判断日期,使用YYYYMMDD的格式 |
xhh_num | int | 是 | 期望领取小红花的数量 |
business_id | string | 否 | 业务值 |
- 请求示例
{ "trans_date":"20220516", "xhh_num":1 }
返回参数:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回码 0:表示可领花 30110502:表示已达到上限,不能领取,attach中会有不能领取的原因 |
attach | string | 不可领取时的附加信息 |
返回示例:
{
"code": 0,
"msg": "Success",
"op_time":1650812345,
"trace_id": "1a2b3c4d5e6f7g8h1a2b3c4d5e6f7g8h",
"data": {
"attach": ""
}
}
无感发花
使用场景: 无感发花,业务侧直接给某个用户的公益帐号发放指定数量的小红花
调用凭证: 应用签名
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/SilenceProduceXhh
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
trans_code | string | 是 | 业务订单号,需要以YYYYMMDD开头,时间在7天内,长度不能超过48,字母、数字与_-组合 |
num | int | 否 | 业务侧的兑换数量,比如用500积分换取1朵小红花,则填500,可不填 |
xhh_num | int | 是 | 期望派发的小红花数量 |
attach | string | 否 | 业务侧附加信息 |
proj_name | string | 否 | 业务活动名,部分业务必填 |
proj_time | string | 否 | 业务活动时间,格式为YYYY-MM-DD HH:mm:SS,部分业务必填 |
proj_locate | string | 否 | 业务活动地址,部分业务必填 |
gy_proj_id | string | 否 | 公益侧的项目ID,部分有关联公益项目的业务可填 |
business_id | string | 否 | 业务值 |
spmet | string | 否 | 外部接入来源标识(申请接入时分配) |
说明:
- 一般只需要trans_code和xhh_num两个参数, proj相关的是小红花侧有要求时才需要填写
请求示例
{ "trans_code":"202205160001", "num": 2, "xhh_num": 1, "attach": "", "proj_name": "社区志愿服务", "proj_time": "2022-05-16 14:00:00", "proj_locale": "人才公园", "gy_proj_id": "1002" }
返回参数:
参数 | 类型 | 说明 |
---|---|---|
attach | string | 发花失败时的附加信息 |
xhh_code | string | 小红花生成的订单号 |
xhh_num | int | 小红花的派发数量 |
- 说明
- 发花失败时,部分错误码attach字段会携带原因,比如30110501用户被风控,会返回反馈链接,30110502,会返回达到领花上限的原因
返回示例:
{
"code": 0,
"msg": "Success",
"op_time":1650812345,
"trace_id": "1a2b3c4d5e6f7g8h1a2b3c4d5e6f7g8h",
"data": {
"attach": "",
"xhh_code": "XHHTTZHS202205161",
"xhh_num": 1
}
}
查询业务订单状态
使用场景: 对于1天可以领取多朵花的业务,通过此接口判断订单是否已使用,决定是否展示领花选项。如果是1天1朵的业务,一般用判断用户当前能否领花即可。
调用凭证: 应用签名
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/SilenceCheckIsTransExist
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
trans_code | string | 是 | 业务订单号,需要以YYYYMMDD开头,7天内,长度不能超过48,字母、数字与_-组合 |
business_id | string | 否 | 业务值 |
- 请求示例
{ "trans_code":"202205160001" }
返回参数:
参数 | 类型 | 说明 |
---|---|---|
trans_time | string | 小红花领取时间,格式为YYYY-MM-DD HH:mm:SS |
xhh_code | string | 小红花生成的订单号 |
xhh_num | int | 小红花的派发数量 |
- 说明
- 如果xhh_code为空,表示订单未被使用,如果用户当天仍能领取小红花,业务侧可以继续用该订单(7天内)或生成新订单来给用户发花
返回示例:
{
"code": 0,
"msg": "Success",
"op_time":1650812345,
"trace_id": "1a2b3c4d5e6f7g8h1a2b3c4d5e6f7g8h",
"data": {
"trans_time": "2022-05-16 11:00:00",
"xhh_code": "XHHTTZHS202205161",
"xhh_num": 1
}
}
查询用户小红花总数
使用场景: 可请求累计小红花数,或者当前小红花数。用户累计小红花数一般用于展示在用户个人信息页,与公益侧的小红花展示维度保持一致。用户当前小红花数一般用于捐花前展示,并且做捐花输入数量的校验。
调用凭证: 应用签名
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/SilenceQueryUserXhh
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
need_history | int | 否 | 0-不请求,1-请求,如果不请求当前总数, 则默认请求累计总数 |
need_current | int | 否 | 0-不请求,1-请求 |
说明:
- 对于需要捐花的业务,只填need_current参数,来请求用户当前可用小红花数量即可,用于捐花展示及捐花参数限制
请求示例
{ "need_history": 1, "need_current": 1 }
返回参数:
参数 | 类型 | 说明 |
---|---|---|
history_xhh | int | 小红花累计数 |
busi_history_xhh | int | 业务小红花累计数 |
current_xhh | int | 当前小红花数 |
返回示例:
{
"code": 0,
"msg": "Success",
"op_time":1650812345,
"trace_id": "1a2b3c4d5e6f7g8h1a2b3c4d5e6f7g8h",
"data": {
"history_xhh": 10,
"current_xhh": 8
}
}
无感捐花
使用场景: 无感捐花,将用户小红花账号下的小红花,捐给指定梦想/项目
调用凭证: 应用签名
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/SilenceDonateXhh
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
trans_code | string | 是 | 业务订单号, 业务唯一,长度不能超过48,字母、数字与_-组合 |
donate_id | string | 是 | 捐赠的梦想/项目ID |
donate_type | int | 否 | 捐花的类型: 0-散捐, 1-整捐. 梦想不需要填写 |
xhh_num | int | 是 | 捐花的数量 |
business_id | string | 否 | 业务值 |
spmet | string | 否 | 外部接入来源标识(申请接入时分配) |
说明:
- 一般业务需要先查询用户当前可用小红花数量,再调用该接口来捐花
请求示例
{ "trans_code": "WZRY202207010000001", "donate_id": "5", "donate_type": 0, "xhh_num": 10 }
返回参数:
参数 | 类型 | 说明 |
---|---|---|
trans_code | string | 捐花生成的订单号 |
day_user_xhh_num | int | 用户通过业务侧当天已捐数量 |
h5_url | string | 捐花超限后(错误码 30130030)需跳转的H5链接 - 捐花超限时才会返回 |
mp_url | string | 捐花超限后(错误码 30130030)需跳转的小程序链接 - 捐花超限时才会返回 |
day_xhh_num | int | 梦想/项目当天捐花数量 - 捐花成功后才会返回 |
total_xhh_num | int | 梦想/项目当前捐花数量 - 捐花成功后才会返回 |
- 说明:
- 返回30130030表示用户当天在业务侧捐花超限,或者是单次捐花超限,需要跳转到公益的H5或小程序中完成相应的捐花操作
- 其中H5会返回完整的链接,小程序返回路径
- 小程序AppID:wxfdcee92a299bcaf1
- 小程序原始ID:gh_3f146c2a1401
返回示例:
{
"code": 0,
"msg": "",
"op_time": 1657024756,
"trace_id": "c8fc7e73a941782737d9f217391b5a57",
"data": {
"trans_code": "fakfkda-sdkds-saieo-00",
"day_user_xhh_num": 10,
"h5_url": "https://ssl.gongyi.qq.com/flower-integral/project/detail.html?pid=1&et=XHH",
"mp_url": "pages/webview/main?link=https%%3A%%2F%%2Fssl.gongyi.qq.com%%2Fflower-integral%%2Fproject%%2Fdetail.html%%3Fpid%%3D1%%26et%%3DXHH",
"day_xhh_num": 1000,
"total_xhh_num": 10000
}
}
查询捐花项目/梦想进度
使用场景: 用于业务侧展示整体的梦想进度,由于是全局数据,建议业务侧做秒级的缓存,不需要每次用户打开页面都来查一次,每秒请求1次即可。
调用凭证: 应用签名
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/SilenceQueryDonateXhhInfo
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
donate_ids | [ ]string | 是 | 捐花项目/梦想ID列表,一次最多请求十个项目/梦想 |
- 请求示例
{ "donate_ids": [ "10" ] }
返回参数:
参数 | 类型 | 说明 |
---|---|---|
donate_infos | object array | 捐花项目/梦想信息列表 |
donate_infos.donate_id | string | 项目/梦想ID |
donate_infos.donate_name | string | 项目/梦想名称 |
donate_infos.donate_mt | int | 项目/梦想捐花人次 |
donate_infos.target_total_num | int | 项目/梦想目标捐花朵数或捐赠公益单位数,梦想的目标为朵数 |
donate_infos.current_total_num | int | 项目/梦想当前捐花朵数或捐赠公益单位数 |
donate_infos.object_xhh_num | int | 一个公益单位对应的小红花数量,用于业务侧展示自定义进度,比如公益单位为晚餐,1顿晚餐为10朵小红花,业务可展示已捐了多少顿晚餐 |
donate_infos.limit_type | int | 项目/梦想捐赠限制类型。0:按公益单位捐赠,1:小红花数量捐赠,一般不需要关注 |
donate_infos.start_time | string | 项目/梦想开始时间 |
donate_infos.end_time | string | 项目/梦想结束时间,用于区分展示是捐满了,还是活动结束了 |
返回示例:
{
"code": 0,
"msg": "",
"op_time": 1657024756,
"trace_id": "c8fc7e73a941782737d9f217391b5a57",
"data": {
"donate_infos": [
{
"current_total_num": 20,
"donate_id": "10",
"donate_mt": 20,
"donate_name": "腾讯公益项目",
"limit_type": 0,
"object_xhh_num": 2,
"target_total_num": 1000,
"start_time": "2022-07-20 11:30:00",
"end_time": "2022-08-31 00:00:00"
}
]
}
}
查询聚合业务用户小红花总数
使用场景: 用于查询用户在业务下所有可见业务的小红花统计。
调用凭证: 应用签名
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/SilenceQueryAggUserXhh
请求参数: 无
返回参数:
参数 | 类型 | 说明 |
---|---|---|
list | object array | 用户小红花统计 |
list.appid | string | 所属业务 |
list.history_xhh | int | 历史累计小红花 |
返回示例:
{
"code": 0,
"msg": "",
"op_time": 1657024756,
"trace_id": "c8fc7e73a941782737d9f217391b5a57",
"data": {
"list": [
{
"appid": "gy_xxx",
"history_xhh": 100
}
]
}
}
查询聚合业务用户小红花流水
使用场景: 用于查询用户在业务下所有可见业务的小红花流水。
调用凭证: 应用签名
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/SilenceQueryAggUserXhhFlow
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
op_type | string | 是 | 操作类型。ADD: 加花; SUB: 捐花;不填无数据 |
limit | int | 否 | 每页大小,最多50,默认10 |
next_id | string | 否 | 下一页的开始ID,返回值中的 time_sort,第一页可不填 |
start_time | string | 否 | 开始时间 yyyy-mm-dd |
end_time | string | 否 | 结束时间 yyyy-mm-dd |
返回参数:
参数 | 类型 | 说明 |
---|---|---|
list | object array | 用户小红花统计 |
list.num | int | 获得小红花的数量 |
list.desc | string | 描述 |
list.appid | string | 所属业务 |
list.app_name | string | 所属业务名称 |
list.op_type | string | 操作类型:ADD 加花, SUB捐花 |
list.trans_code | string | 流水号 |
list.time_sort | string | 分页排序ID (纳秒时间戳) |
list.proj_id | string | 项目ID |
list.proj_name | string | 项目名称 |
返回示例:
{
"code": 0,
"msg": "",
"op_time": 1657024756,
"trace_id": "c8fc7e73a941782737d9f217391b5a57",
"data": {
"list": [
{
"desc":"",
"num":"10",
"appid": "gy_xxxxx",
"op_type":"ADD",
"time_sort":"1719544442260774490",
"trans_code":"XHHMONTH2023109"
}
]
}
}
查询聚合业务用户小红花用户参与项目
使用场景: 用于查询用户在业务下所有可见业务的小红花支持的项目。
调用凭证: 应用签名
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/SilenceQueryAggUserProject
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
limit | int | 否 | 每页大小,最多50,默认10 |
page_num | int | 否 | 页码,从0开始 |
返回参数:
参数 | 类型 | 说明 |
---|---|---|
list | object array | 用户小红花统计 |
list.proj_id | int | 项目id |
list.proj_name | string | 项目名称 |
list.proj_img | string | 项目图片 |
list.tags | array | 益行为 xhh_produce: 发花;xhh_donate: 捐花 |
list.time_sort | string | 分页排序ID (纳秒时间戳) |
返回示例:
{
"code": 0,
"msg": "",
"op_time": 1657024756,
"trace_id": "c8fc7e73a941782737d9f217391b5a57",
"data": {
"list": [
{
"desc":"",
"num":"10",
"appid": "gy_xxxxx",
"op_type":"ADD",
"time_sort":"1719544442260774490",
"trans_code":"XHHMONTH2023109"
}
]
}
}
错误码
错误码 | 错误含义 | 发生场景 |
---|---|---|
30130001 | 参数错误 | 所有接口 |
30130006 | 订单号已被使用,已经存在该订单号了 | 无感捐花接口 |
30130010 | 业务ID不存在 | 所有接口 |
30130011 | 业务ID未启用或已过期 | 所有接口 |
30130012 | 频率受限 | 无感发花接口领花页 |
30130014 | 系统错误 | 所有接口 |
30130030 | 用户捐花达到上限,需要引导用户跳转到返回的链接中完成捐花操作 | 无感捐花接口 |
30130033 | 捐花小红花数不足 | 无感捐花接口 |
30130034 | 用户捐花数超过项目目标捐花数 | 无感捐花接口 |
30130035 | 查询的项目或梦想不存在 | 查询捐花项目/梦想进度接口 |
30110501 | 用户被风控 | 无感发花 |
30110502 | 用户领花达到上限 | 查询当前用户能否发花接口,无感发花接口 |