接入说明

业务需要跳到腾讯公益来完成领花

  • 业务侧按应用接入流程申请注册应用信息和申请接口权限
  • 业务侧可选提供领花页的配置信息,展示定制领花页

  • 接口使用签名方式,如何生成签名参考接口调用凭证

业务流程

sequenceDiagram participant fr as 业务前端 participant ba as 业务后端 participant op as 公益开放平台 participant ob as 公益领花页 fr ->> ba: 用户是否能领花 ba ->> ba: 判断业务自身领花资格 ba ->> op: 判断用户当前能否领花 op -->> ba: 返回用户当前能否领花 ba -->>fr: 返回结果 fr -->> fr: 用户能领花 fr ->> ba: 获取领花参数 ba ->> op: 换取预发花订单ID op -->> ba: 返回预发花订单ID ba ->> ba: 使用预发花订单ID计算领花参数 ba -->> fr: 返回领花参数 fr ->> ob: 使用领花参数跳转公益领花页
  • 关键流程:
    • 使用“判断用户当前能否领花”接口,决定是否在业务前端展示领花按钮,因为用户在业务周期内(1 天/1 周/1 月)内会有领花上限限制,需要调用接口判断能否领花
    • 用户点击领花时,使用“获取预发花订单 ID”接口,获取预发花订单 ID,并且拼接跳转参数,跳转到公益领花页

调用接口

判断用户当前能否领花

使用场景: 发花前判断用户能否领花

调用凭证: 应用签名

请求方式: POST(HTTPS

请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/CheckXhh

请求参数:

参数 类型 必填 说明
open_id string 业务侧的用户唯一 ID,不超过 32 位
trans_date string 判断日期,使用 YYYYMMDD 的格式
xhh_num int 期望领取小红花的数量
business_id string 业务值
  • 请求示例
{
  "open_id": "abce0001",
  "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": ""
  }
}

获取预发花订单 ID

使用场景: 判断用户能领花后,生成预发花订单

调用凭证: 应用签名

请求方式: POST(HTTPS

请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/PreTry

请求参数:

参数 类型 必填 说明
open_id string 业务侧的用户唯一 ID,不超过 32 位
trans_code string 业务订单号,需要以 YYYYMMDD 开头,不能超过 32 位
time_start string 订单生成时间,格式为 YYYY-MM-DD HH:mm:SS
time_expire string 订单重试结束时间,格式为 YYYY-MM-DD HH:mm:SS,不能超过 10 分钟
num int 业务侧的兑换数量,可不填
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 业务值
  • 请求示例
{
  "open_id": "test1234",
  "trans_code": "202205160001",
  "time_start": "2022-05-16 11:00:00",
  "time_expire": "2022-05-16 11:10:00",
  "num": 2,
  "xhh_num": 1,
  "attach": "",
  "proj_name": "社区志愿服务",
  "proj_time": "2022-05-16 14:00:00",
  "proj_locale": "人才公园",
  "gy_proj_id": "1002"
}

返回参数:

参数 类型 说明
code int 返回码
0:表示可领花
30110502:表示已达到上限,不能领取,attach 中会有不能领取的原因
attach string 不可领取时的附加信息
exchange_id string 预发花订单 ID

返回示例:

{
  "code": 0,
  "msg": "Success",
  "op_time": 1650812345,
  "trace_id": "1a2b3c4d5e6f7g8h1a2b3c4d5e6f7g8h",
  "data": {
    "attach": "",
    "exchange_id": "gytest0001"
  }
}

查询业务订单状态

使用场景: 对于 1 天可以领取多朵花的业务,通过此接口判断订单是否已使用,决定是否展示领花选项

调用凭证: 应用签名

请求方式: POST(HTTPS

请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/CheckIsTransExist

请求参数:

参数 类型 必填 说明
open_id string 业务侧的用户唯一 ID,不超过 32 位
trans_code string 业务订单号,需要以 YYYYMMDD 开头,不能超过 32 位
business_id string 业务值
  • 请求示例
{
  "open_id": "test0001",
  "trans_code": "202205160001"
}

返回参数:

参数 类型 说明
trans_time string 小红花领取时间,格式为 YYYY-MM-DD HH:mm:SS
xhh_code string 小红花订单号
xhh_num int 小红花派发数量
exchange_id string 预发花订单 ID
  • 说明
    • 仅 7 天内可查询到预发花订单 ID
    • 如果 xhh_code 不为空,表示订单已被使用;如果 exchange_id 不为空,表示已换取过 exchange_id,可以使用该 exchange_id 来跳转领花;如果 xhh_code 和 exchange_id 都为空,表示无该订单记录

返回示例:

{
  "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,
    "exchange_id": "gytest0001"
  }
}

查询用户累计获取小红花数

使用场景: 可用于在业务侧展示用户的小红花累计总数(注意: 不是指用户在业务侧获得的小红花数量, 是用户总的数量)

调用凭证: 应用签名

请求方式: POST(HTTPS

请求地址: https://oapi.gongyi.qq.com/api/xhh_third_service/QueryUserXhh

请求参数:

参数 类型 必填 说明
open_id string 业务侧的用户唯一 ID,不超过 32 位
  • 请求示例
{
  "open_id": "test0001"
}

返回参数:

参数 类型 说明
history_xhh int 累计小红花数量
  • 说明
    • 返回 30130028 表示用户未通过领花页领取业务的小红花,因此无法查询用户在公益侧的小红花数量

返回示例:

{
  "code": 0,
  "msg": "Success",
  "op_time": 1650812345,
  "trace_id": "1a2b3c4d5e6f7g8h1a2b3c4d5e6f7g8h",
  "data": {
    "history_xhh": 456
  }
}

跳转领花页发花

  • 跳转领花页时,需要在链接中带上领花参数以及签名,该信息由业务后台计算,由业务前端跳转时带上。
  • 由于是携带参数跳转到领花页,由前端发起请求,从安全性考虑,计算签名时是对包体进行签名

跳转 Query 参数

参数 类型 必填 说明
appid string 应用 id,由开放平台分配给应用的唯一 ID
timestamp int 时间戳,单位 s
nonce string 随机值,可以是数字和字母的组合;长度 32 位
trans_code string 业务订单号
exchange_id string 使用 PreTry 接口换回来的预发花订单 ID
sign string 使用应用的密钥,通过 HMAC-SHA256 算法签名后,得出的结果;此处计算签名需要以上全部参数都参与(不包括 spmet 参数)
spmet string 来源:申请接入时分配

H5 跳转

小程序跳转链接

  • AppID:wxfdcee92a299bcaf1(小程序跳小程序)
  • 原始 ID:gh_3f146c2a1401(H5开放标签跳小程序)
  • 路径:pages/flower-integral/get-flowers/main?appid=gy_c1ujie9cvmieripmes0g&timestamp=1600110010&nonce=abcde1234&trans_code=202205160000001&exchange_id=gytest10001&sign=ABCDEF0123456789&spmet=test

测试环境调试

  • 推荐先使用跳转 H5 的方式来调试,方便查看接口返回,H5 测试环境链接示例:

    https://devssl.gongyi.qq.com/flower-integral/getFlowers.html?cgi=gray + 拼接参数

  • H5 测试环境链接访问限制:

    1. 公司内网可直接访问
    2. 公司外网络 + 企微登录/MOA 登录
    3. 公司外网络 + token,联系 christyma 生成 token, 在 tde 面板输入生成的 token 可直接访问


  • 小程序没有测试环境, 如果业务必须使用小程序才能跑通流程,可以临时使用 webview 来走测试流程:

    pages/webview/main?link=${encodeURIComponent(H5 测试环境链接)}

    后期上线前必须替换为小程序正式路径:

    pages/flower-integral/get-flowers/main? + 拼接参数

跳转方式的选择

  • 小程序:推荐使用半屏小程序的方式,优化用户体验(详情见半屏小程序文档

  • 申请半屏小程序权限:小程序管理后台「设置」-「第三方设置」-「半屏小程序管理」 - 「我调用的」- 输入< wxfdcee92a299bcaf1> 发起申请;

  • 小程序 2.23.1 版本以下基础库,被半屏打开的小程序需要在 app.json 的 embeddedAppIdList 字段中声明,2.23.1 版本以上不需要;
{
    "embeddedAppIdList": ["wxfdcee92a299bcaf1"]
}
  1. 当前小程序需为竖屏;
  2. 调用半屏小程序相关代码:
wx.openEmbeddedMiniProgram({
   appId: 'wxfdcee92a299bcaf1',
   path: 'pages/flower-integral/get-flowers/main?appid=gy_c1ujie9cvmieripmes0g&timestamp=1600110010&nonce=abcde1234&trans_code=202205160000001&exchange_id=gytest10001&sign=ABCDEF0123456789&spmet=test'
})

错误码

错误码 错误含义 发生场景
30130001 参数错误 所有接口
30130002 时间戳错误(不在当前时间前后 5 分钟内) 领花页
30130003 签名错误 领花页
30130004 订单号已被别的用户使用 领花页
30130005 重试请求订单内容不一致 获取预发花订单 ID 接口
30130006 订单号已被用户使用 领花页
30130007 订单号不存在 领花页
30130008 ExchangeID 与订单号不匹配 领花页
30130009 OpenId 不匹配,同一个外部用户 ID 只能绑定到同一个公益用户 ID 上 领花页
30130010 业务 ID 不存在 所有接口
30130011 业务 ID 未启用或已过期 所有接口
30130012 频率受限 领花页
30130013 用户未登录 领花页
30130014 系统错误 所有接口
30130028 用户未绑定 查询用户累计获取小红花数量接口
30110501 用户被风控 领花页
30110502 用户领花达到上限 查询当前用户能否发花接口
获取预发花订单 ID 接口
领花页
© 1998 - 2022 Tencent Inc. all right reserved,powered by tencent.更新时间: 2025-03-06 17:00:45

results matching ""

    No results matching ""

    results matching ""

      No results matching ""