小程序接入
支持业务通过半屏小程序的方式, 来开通月捐/一起月捐
支持查询授权过的用户的月捐/一起月捐数据
步骤
- 申请半屏小程序权限: 登录小程序后台,在 设置->第三方设置->半屏小程序管理->添加
- 接入用户授权页面: 小程序接入-外
- 用户的月捐/一起月捐数据查询必须用户授权后才能查询到, 否则会返回错误
- 用户授权后, 查询用户在这个项目的月捐开通状态或者是这个项目的一起捐的一起月捐开通状态: 查询月捐/一起月捐开通状态接口
- 如果用户已经开通月捐/一起月捐, 进入业务自身的月捐/一起月捐故事页
- 业务自身的月捐/一起月捐故事页是业务在自己小程序上的自定义页面, 相关的月捐/一起月捐数据, 可以通过接口来查询: 查询月捐/一起月捐故事接口
- 如果用户未开通月捐/一起月捐, 可以引导用户开通月捐/一起月捐, 并半屏呼起公益的小程序
- 用户点击"开通月捐/一起月捐"时, 先调用接口获取呼起半屏小程序要传入的签约票据: 生成呼起半屏小程序使用的签约票据的接口
- 将sign_ticket、bid、项目id、一起捐id(一起月捐场景)、spmet作为openEmbeddedMiniProgram的参数, 呼起半屏小程序. 参数见开通月捐/一起月捐半屏小程序参数, 具体使用示例如下:
// 监听onshow事件回调方法 const listener = function (res) { console.log(res); if (res.referrerInfo.extraData) { wx.showModal({ title: '返回数据', content: JSON.stringify(res.referrerInfo.extraData), // extraData 包含pid(项目id)和status(状态),status为open时为月捐/一起月捐开通。返回数据只做通知作用,真实数据需通过开放接口查询。 }) } } Page({ data: { }, // 半屏打开腾讯公益小程序示例 openEmbeddedMiniProgram() { wx.openEmbeddedMiniProgram({ appId: 'wxfdcee92a299bcaf1', // 腾讯公益小程序appid path: 'pages/detail/main?pid=***&action=monthPay&bid=***&ticket=***&type=***&spmet=***', // 月捐 // path: 'pages/yqj_v2/detail/main?id=***&did=***&action=monthPay&bid=***&ticket=***&type=***&spmet=***', // 一起月捐 }) }, onLoad() { // 注册监听事件方法 wx.onAppShow(listener); }, onUnload() { // 注销监听事件方法 wx.offAppShow(listener); } })
- 监听到半屏小程序关闭事件后, 查询用户的月捐/一起月捐开通状态, 如果已开通, 则进入业务自定义的开通结果页或者月捐/一起月捐故事页
开通月捐/一起月捐半屏小程序参数
使用场景: 用户点击"开通月捐/开通一起月捐"后, 前端使用openEmbeddedMiniProgram函数来呼起半屏小程序
小程序AppId: wxfdcee92a299bcaf1
月捐
页面路径: pages/detail/main
字段 | 必选 | 说明 |
---|---|---|
pid | √ | 项目ID |
bid | √ | 业务ID |
action | √ | 固定填monthPay, 表示打开月捐浮层 |
ticket | √ | 签约票据, 通过生成呼起半屏小程序的签约票据的接口来获取 |
type | 默认取值为 mp , 支付成功后返回业务小程序. 取值为 no 则不跳回业务小程序, 剩余流程均在公益小程序中进行 |
|
spmet | 渠道标识,用于统计渠道来源 |
一起月捐
页面路径: pages/yqj_v2/detail/main
字段 | 必选 | 说明 |
---|---|---|
id | √ | 项目ID |
did | √ | 一起捐ID |
bid | √ | 业务ID |
action | √ | 固定填monthPay, 表示打开一起月捐浮层 |
ticket | √ | 签约票据, 通过生成呼起半屏小程序的签约票据的接口来获取 |
type | 默认取值为 mp , 支付成功后返回业务小程序. 取值为 no 则不跳回业务小程序, 剩余流程均在公益小程序中进行 |
|
spmet | 渠道标识,用于统计渠道来源 |
回传内容: 如果type填no, 用户在半屏小程序操作后, 会自动关闭半屏并回返回业务小程序, 此时会有回传内容
注意: 回传内容仅自动关闭半屏小程序才会有, 业务小程序必须要有主动查询的功能, 避免没收到回传内容导致体验不闭环
extraData = { status: 'open', // 用户是否完成开通月捐/一起月捐的操作 }
查询月捐/一起月捐开通状态接口
使用场景: 在项目页查询月捐/一起月捐开通状态, 决定显示类似"开通月捐/开通一起月捐"还是"我的月捐/我的一起月捐"的按钮; 在半屏小程序退回业务小程序时, 查询月捐/一起月捐开通状态, 判断是否展示开通结果页.
调用凭证: 用户凭证(user_token) + 业务ID
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/pappay_service/OpenGetUserMonthStatus
HTTP header:
需要在header中带上业务所需的bid
参数 | 必填 | 说明 |
---|---|---|
Gy-H-Request-Bid | 是 | 业务ID |
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
project_no | string | 是 | 项目ID |
did | string | 否 | 一起捐的ID |
- 请求示例
{ "project_no":"224328", "did": "1125001200001" }
返回参数:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回码:0表示成功,其他值表示错误,请参考错误码说明 |
msg | string | 错误信息 |
data | object | 返回数据 |
data.status | int | 开通状态: 0-未开通过, 1-开通中, 2-已关闭 |
返回示例:
{
"code": 0,
"data": {
"status": 1
},
"msg": "",
"op_time": 1679844396,
"trace_id": "ed8436c85407856b23e5ea20fa472ebc"
}
查询月捐/一起月捐故事接口
使用场景: 用户点击"我的月捐/我的一起月捐"进入月捐/一起月捐故事页后, 查询相关月捐/一起月捐数据来展示
调用凭证: 用户凭证(user_token) + 业务ID
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/pappay_service/OpenGetUserMonthStory
HTTP header:
需要在header中带上业务所需的bid
参数 | 必填 | 说明 |
---|---|---|
Gy-H-Request-Bid | 是 | 业务ID |
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
project_no | string | 是 | 项目ID |
did | string | 否 | 一起捐的ID |
- 请求示例
{ "project_no":"224328", "did": "12560002210001" }
返回参数:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回码:0表示成功,其他值表示错误,请参考错误码说明 |
msg | string | 错误信息 |
data | object | 返回数据 |
data.status | int | 开通状态: 0-未开通过, 1-开通中, 2-已关闭 |
data.donate_sum | string | 累计捐助金额(分) |
data.donate_month_count | string | 累计捐助月数 |
data.day | string | 当前每月的代扣日(1-28) |
data.money | string | 当前每月的代扣金额(分) |
返回示例:
{
"code": 0,
"data": {
"status": 1,
"donate_sum": "900",
"donate_month_count": "10",
"day": "27",
"money": "100"
},
"msg": "",
"op_time": 1679844396,
"trace_id": "ed8436c85407856b23e5ea20fa472ebc"
}
生成呼起半屏小程序的签约票据的接口
使用场景: 用户点击"开通月捐/开通一起月捐"时来获取签约票据, 然后作为参数传给呼起半屏小程序的函数
调用凭证: 用户凭证(user_token) + 业务ID
请求方式: POST(HTTPS)
请求地址: https://oapi.gongyi.qq.com/api/pappay_service/OpenGetSignTicket
HTTP header:
需要在header中带上业务所需的bid
参数 | 必填 | 说明 |
---|---|---|
Gy-H-Request-Bid | 是 | 业务ID |
请求参数:
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
project_no | string | 是 | 项目ID |
did | string | 否 | 如果是一起月捐, 传入一起捐的ID |
busi_code | string | 否 | 业务信息, 可不填, 使用的话需要是10-28位, 可用字符为A-Za-z0-9和_-@, 每次代扣的订单通知以及订单下载的busi_code会填上该字段, 用于业务侧关联订单和用户 |
订单通知详见: 支付通知
订单下载详见: 账单下载
- 请求示例
{ "project_no":"224328", "did": "1254820001434001", "busi_code": "11223344556677889900" }
返回参数:
参数 | 类型 | 说明 |
---|---|---|
code | int | 返回码:0表示成功,其他值表示错误,请参考错误码说明 |
msg | string | 错误信息 |
data | object | 返回数据 |
data.ticket | string | 签约票据, 作为ticket参数传给呼起半屏小程序的函数 |
data.expired_time | string | 票据过期时间(1970-01-01至今的秒数) |
返回示例:
{
"code": 0,
"data": {
"ticket": "xspjFFbILIyLiazwaadewwadgeea",
"expired_time": "1710340947"
},
"msg": "",
"op_time": 1679844396,
"trace_id": "ed8436c85407856b23e5ea20fa472ebc"
}