接入说明

  • 目前支持两种勋章发放方式:
    • 无感发勋章:是指无需在腾讯公益的小程序或H5环境内,由业务侧直接调用公益开放平台接口,实现发放勋章到用户对应的公益账号
    • 跳转公益页发勋章:是指业务侧调用公益开放平台接口获取勋章预发放ID后,携带参数跳转到公益勋章领取页(小程序或H5环境)完成领取
  • 如何查看勋章:
    • 在腾讯公益的小程序或H5的个人中心,用户可以查看自己的所有公益勋章
  • 接入准备:
    • 接入方需要提供微信开放平台的AppID和负责人(用于申请互转权限时作为审批人),或者QQ互联的AppID,由公益侧提交互转权限的申请,微信/QQ审批通过后,才能使用。注意:如果是微信游戏,则需要通过微信帐号托管平台做接入,参考微信游戏帐号托管
    • 接口使用签名方式,如何生成签名以及用户信息的传递参考接口调用凭证
    • 以上方式涉及业务侧帐号与公益帐号的转换,需要满足以下条件:
      • 腾讯内部已开通帐号互转权限的业务(仅限微信或QQ帐号体系)
      • 外部已开通帐号互转权限的业务(仅限QQ帐号体系)

业务流程

  • 以下是基本的业务使用流程

    无感发勋章

    sequenceDiagram participant fr as 业务前端 participant ba as 业务后端 participant op as 公益开放平台 fr ->> ba: 用户是否需要发勋章 ba ->> ba: 判断业务自身发勋章资格 ba ->> op: 调用查询用户勋章接口(ExternalQueryMedal) op -->> ba: 返回信息 ba -->> fr: 返回结果 fr -->> fr: 用户能领章 fr ->> ba: 领章 ba ->> op: 调用无感发勋章接口(ExternalAwardMedal) op -->> ba: 返回发勋章结果 ba ->> ba: 业务自身逻辑处理 ba -->> fr: 返回结果 fr ->> fr: 展示业务自定义领勋章结果页

跳转公益页发勋章

sequenceDiagram participant fr as 业务前端 participant ba as 业务后端 participant op as 公益开放平台 participant gy as 公益勋章领取页 fr ->> ba: 用户是否需要发勋章 ba ->> ba: 判断业务自身发勋章资格 ba ->> op: 调用查询用户勋章接口(ExternalQueryMedal) op -->> ba: 返回信息 ba -->> fr: 返回结果 fr -->> fr: 用户能领章 fr ->> ba: 获取勋章领取参数 ba ->> op: 调用获取预领取订单ID接口(ExternalGetExchangeId) op -->> ba: 返回预领取订单ID ba ->> ba: 使用预领取订单ID计算参数 ba -->> fr: 返回勋章领取参数 fr ->> gy: 带勋章领取参数跳转公益勋章领取页

接口协议

查询用户已领取勋章信息

使用场景: 发勋章前判断用户是否已领过勋章,一般用于业务前端置灰领章按钮和做文字提示等。如果业务侧本身有做领取记录,也可以不用调该接口,本身发勋章接口也包含校验用户是否已领取过勋章的逻辑(如果用户已领取,发勋章接口会返回对应错误码)。

调用凭证: 应用签名

请求方式: POST(HTTPS

请求地址: https://oapi.gongyi.qq.com/api/user_medal_rule/ExternalQueryMedal

请求参数:

参数 类型 必填 说明
medal_id string 勋章ID
third_open_id string 外部业务侧用户ID(跳转公益页发勋章时传参,无感接入时无需传入)
  • 请求示例
    {
      "medal_id":"MEDALYKZYYY",
      "third_open_id": "third_xxxxxx"
    }
    

返回参数:

参数 类型 说明
code int 返回码:0表示成功,其他值表示错误,请参考错误码说明
msg string 错误信息
data object 返回数据
data.list array 用户的勋章列表
勋章有等级时可能返回多条数据(按领取时间排序),无等级时最多返回一条数据
data.list[].transcode string 业务订单号
data.list[].medal_id string 勋章id
data.list[].medal_level string 勋章等级
data.list[].award_time string 勋章获得时间
data.list[].attach_info string 业务附加信息

返回示例:

{
    "code": 0,
    "data": {
        "list": [
            {
                "attach_info": "测试数据",
                "award_time": "2023-03-26 16:21:06",
                "medal_id": "MEDALYKZYYY",
                "medal_level": "3",
                "transcode": "20230323162106MEDALYKZYYY"
            },
            {
                "attach_info": "",
                "award_time": "2023-03-20 23:24:01",
                "medal_id": "MEDALYKZYYY",
                "medal_level": "2",
                "transcode": "20230322324010MEDALYKZYYY"
            },
            {
                "attach_info": "测试数据",
                "award_time": "2023-03-20 16:19:48",
                "medal_id": "MEDALYKZYYY",
                "medal_level": "1",
                "transcode": "20230320161948MEDALYKZYYY"
            }
        ]
    },
    "msg": "",
    "op_time": 1679844396,
    "trace_id": "ed8436c85407856b23e5ea20fa472ebc"
}

无感发勋章

使用场景: 无感发勋章,业务侧直接给某个用户的公益帐号发放勋章

调用凭证: 应用签名

请求方式: POST(HTTPS

请求地址: https://oapi.gongyi.qq.com/api/user_medal_rule/ExternalAwardMedal

请求参数:

参数 类型 必填 说明
trans_code string 业务订单号,需要以YYYYMMDD开头,时间在7天内,长度不能超过48,字母、数字与_-组合
medal_id string 勋章id,由腾讯公益分配给业务侧
medal_level string 勋章等级,无等级时不用填,有等级需要填对应等级
attach_info string 业务侧附加信息
  • 请求示例
    {
      "medal_id": "MEDALYKZYYY",
      "medal_level": "2",
      "trans_code": "20230320232401MEDALYKZYYY"
    }
    

返回参数:

参数 类型 说明
code int 返回码:0表示成功,其他值表示错误,请参考错误码说明
msg string 错误信息
data object 用户已得勋章列表数据
勋章有等级时可能返回多条数据,无等级时最多返回一条数据
data.transcode string 业务订单号
data.award_time string 获得勋章的时间

返回示例:

{
    "code": 0,
    "msg": "",
    "data": {
        "award_time": "2023-03-26 23:24:01",
        "transcode": "20230320232401MEDALYKZYYY"
    },
    "op_time": 1679844241,
    "trace_id": "0f4f9a2e9147e0c7381932b5b1271403"
}

获取勋章预领取订单ID

使用场景: 跳转公益页领勋章。判断用户能领取后,生成预领取订单ID,用于生成跳转参数

调用凭证: 应用签名

请求方式: POST(HTTPS

请求地址: https://oapi.gongyi.qq.com/api/user_medal_rule/ExternalGetExchangeId

请求参数:

参数 类型 必填 说明
third_open_id string 外部业务侧用户ID
trans_code string 业务订单号,需要以YYYYMMDD开头,时间在7天内,长度不能超过48,字母、数字与_-组合
medal_id string 勋章id,由腾讯公益分配给业务侧
medal_level string 勋章等级,无等级时不用填,有等级需要填对应等级
attach_info string 业务侧附加信息
  • 请求示例
    {
      "third_open_id": "third_xxxxxx",
      "medal_id": "MEDALYKZYYY",
      "medal_level": "2",
      "trans_code": "20230320232401MEDALYKZYYY"
    }
    

返回参数:

参数 类型 说明
code int 返回码:0表示成功,其他值表示错误,请参考错误码说明
msg string 错误信息
exchange_id string 预领取订单ID

返回示例:

{
    "code": 0,
    "msg": "",
    "data": {
        "exchange_id": "gytest0001"
    },
    "op_time": 1679844241,
    "trace_id": "0f4f9a2e9147e0c7381932b5b1271403"
}

获取聚合业务用户勋章数据

使用场景: 获取业务下授权业务用户勋章

调用凭证: 应用签名

请求方式: POST(HTTPS

请求地址: https://oapi.gongyi.qq.com/api/user_medal_rule/ExternalQueryAggMedal

请求参数:

参数 类型 必填 说明
medal_id string 勋章ID,为空查所有勋章
start_time string 开始时间
end_time string 结束时间
  • 请求示例
    {
      "medal_id": "MEDALYKZYYY",
    "start_time": "2006-01-02 15:04:05",
    "end_time": "2006-01-02 15:04:05"
    }
    

返回参数:

参数 类型 说明
code int 返回码:0表示成功,其他值表示错误,请参考错误码说明
msg string 错误信息
medal_num int 勋章总数
list array 勋章数据列表
list.transcode string 订单id
list.medal_id string 勋章ID
list.medal_level string 勋章等级
list.award_time string 获取时间
list.attach_info string 附加信息
list.medal_name string 勋章名称
list.medal_img string 勋章图片
list.medal_desc string 勋章描述
list.appid string 业务ID
list.app_name string 业务名称

返回示例:

{
    "code": 0,
    "msg": "",
    "data": {
        "medal_num": 10,
         "list": [{
           "transcode": "transcode_xx",
           "medal_id": "medal_xx",
           "medal_level": "level1",
           "award_time": "2024-01-01 14:00:00",
           "attach_info": "",
           "medal_name": "medal_name",
           "medal_img": "http://xxx.jpg",
           "medal_desc": "medal_desc",
           "appid": "gy_xx",
           "app_name": "demoApp"
         }]
    },
    "op_time": 1679844241,
    "trace_id": "0f4f9a2e9147e0c7381932b5b1271403"
}

获取聚合业务用户勋章项目

使用场景: 获取业务下授权业务用户勋章参与项目

调用凭证: 应用签名

请求方式: POST(HTTPS

请求地址: https://oapi.gongyi.qq.com/api/user_medal_rule/ExternalQueryAggMedalProj

请求参数:

参数 类型 必填 说明
start_time string 开始时间
end_time string 结束时间
  • 请求示例
    {
    "start_time": "2006-01-02 15:04:05",
    "end_time": "2006-01-02 15:04:05"
    }
    

返回参数:

参数 类型 说明
code int 返回码:0表示成功,其他值表示错误,请参考错误码说明
msg string 错误信息
list array 勋章数据列表
list.proj_id string 项目id
list.proj_name string 项目名称
list.proj_img string 项目图片
list.award_time string 勋章发放时间

返回示例:

{
    "code": 0,
    "msg": "",
    "data": {
        "medal_num": 10,
         "list": [{
           "proj_id": "233777",
           "proj_name": "项目",
           "proj_img": "http://xx.jpg"
         }]
    },
    "op_time": 1679844241,
    "trace_id": "0f4f9a2e9147e0c7381932b5b1271403"
}

跳转公益页发勋章

  • 跳转公益页时,需要在链接中带上勋章领取参数以及签名,该信息由业务后台计算,由业务前端跳转时带上。
  • 由于是携带参数跳转到公益页,由前端发起请求,从安全性考虑,计算签名时是对包体进行签名。
  • 此流程会将业务侧用户ID与公益侧ID进行绑定

跳转 Query 参数

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

H5 跳转

小程序跳转链接

  • AppID:wxfdcee92a299bcaf1(小程序跳小程序)
  • 原始 ID:gh_3f146c2a1401(H5开放标签跳小程序)
  • 路径:pages/webview/main?link=${encodeURIComponent(H5链接)}&spmet=test

测试环境调试

  • 测试环境接口域名:增加 test- 前缀

  • H5 测试环境链接示例:https://devssl.gongyi.qq.com/user_center/getBadges.html?cgi=gray + 拼接参数

  • 小程序测试环境路径:pages/webview/main?link=${encodeURIComponent(测试环境H5链接)}&spmet=test

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

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


跳转方式的选择

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

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

  • 小程序 2.23.1 版本以下基础库,被半屏打开的小程序需要在 app.json 的 embeddedAppIdList 字段中声明,2.23.1 版本以上不需要;
{
    "embeddedAppIdList": ["wxfdcee92a299bcaf1"]
}
  1. 当前小程序需为竖屏;
  2. 调用半屏小程序相关代码:
wx.openEmbeddedMiniProgram({
   appId: 'wxfdcee92a299bcaf1',
   path: 'pages/webview/main?link=${encodeURIComponent(H5链接)}&spmet=test'
})

错误码

错误码 错误含义 发生场景
30510001 参数缺失 所有接口
30510002 无效的参数 所有接口
30510003 勋章信息参数有误 所有接口
30510004 勋章发放不在生效时间内 发放勋章接口
30510005 勋章发放每日数量限制超限 发放勋章接口
30510006 勋章发放总数量限制超限 发放勋章接口
30510007 用户已领取勋章 发放勋章接口
30510009 发放勋章失败 发放勋章接口
© 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 ""