# WeCard 码组件
# 简介
用于在app或者h5上集成 wecard 码相关的能力,包括包括但不限于展示二维码、签约等。
# 申请方式
发送申请到 seasonyuan@tencent.com进行申请(邮件同时也抄送至lydiaxyang@tencent.com , lindayyang@tencent.com , ronniewan@tencent.com),申请时需要注明申请内容、应用 APPKEY、应用名称、及应用使用场景。
# 如何使用
# 获取用户有效凭证 (user_token)
# 请求方法
POST(application/json)
# 请求地址
https://open.wecard.qq.com/cgi-bin/e-code/get-user-token
# 请求参数
{
"access_token": "ACCESS_TOKEN",
"card_number": "REAL4411902"
}
# 响应说明
{
"code": 0,
"message": "OK",
"token": "USER_TOKEN",
}
# 获取在线电子码
获取用户的电子码字符串。 需要将获取到的字符串绘制为二维码使用。 电子码有效期不短于 2 分钟, 建议每分钟更新一次。
# 请求方法
POST(application/json)
# 请求地址
https://open.wecard.qq.com/cgi-bin/e-code/refresh-code?token="user_token"
# 请求参数
{
"token": "user_token"
}
# 响应说明
{
"code": 0,
"message": "OK",
"code_str": "http://wx.url.cn/v002...."
}
# 错误码
名称 | 说明 |
---|---|
20001 | token 过期, 请获取新的用户有效凭证 |
20002 | token 错误,请获取新的用户有效凭证 |
11101 | 用户已冻结 |
11102 | 用户在支付黑名单中 |
11103 | 用户身份已失效 |
# 获取签约状态
# 请求方法
POST(application/json)
# 请求地址
https://open.wecard.qq.com/cgi-bin/e-code/entrust-status
# 请求参数
{
"token": "ACCESS_TOKEN",
}
# 响应说明
{
"code": 0,
"message": "OK",
"status": 1
}
# 返回说明
字段 | 说明 |
---|---|
status | 签约状态 0: 未签约 1: 已签约 |
# 跳转至微信小程序签约
参考 微信开放平台 h5/app拉起小程序功能 文档, 实现 APP 跳转至小程序的签约页面,进行签约 流程。
跳转路径 (path) pages/sign_package/pages/openSign/openSign 跳转 appId 为 当前主体的小程序
# 请求参数
请求参数以 query 形式拼接在 path 参数后面。 例如 pages/sign_package/pages/openSign/openSign?token=xxx&displayName=xx用户
# 获取欠费状态
# 请求方法
POST(application/json)
# 请求地址
https://open.wecard.qq.com/cgi-bin/e-code/debt-status
# 请求参数
{
"token": "ACCESS_TOKEN"
}
# 响应说明
{
"code": 0,
"message": "OK",
"debt_status": 1
}
# 返回说明
字段 | 说明 |
---|---|
debt_status | 欠费状态 0: 未欠费 1: 已欠费 |
# 获取离线码
获取用户的离线电子码字符串,缓存到本地,在无网络环境下使用。 离线码有效期为 3 天(72 小时)。
# 请求方法
POST(application/json)
# 请求地址
https://open.wecard.qq.com/cgi-bin/e-code/offline-code?token="user_token"
# 请求参数
{
"token": "ACCESS_TOKEN",
}
# 响应说明
{
"code":0,
"msg":"OK",
"code_str_arr":[
{
"content":"http://wx.url.cn/v002....",
"timestamp":1675157869000
}, {
"content":"http://wx.url.cn/v002....",
"timestamp":1675157869000
}
]
}
# 返回说明
字段 | 说明 |
---|---|
code_str_arr | 电子码字符串数组 |
content | 电子码字符串 |
timestamp | 电子码创建时间(毫秒时间戳) |
# 错误码
名称 | 说明 |
---|---|
20001 | token 过期, 请获取新的用户有效凭证 |
20002 | token 错误,请获取新的用户有效凭证 |
11101 | 用户已冻结 |
11102 | 用户在支付黑名单中 |
11103 | 用户身份已失效 |
离线码展示逻辑
- 拉取离线码 首先调用本接口拉取离线码,将 code_str_arr 数组持久化缓存到本地。
- 验证离线码 在用户无网络时,从缓存中取出离线码使用。使用之前需要校验码是否过期。 过滤掉 当前时间戳 - timestamp > 1000 * 3600 * 70 的离线码,剩下的为可用离线码,取出一个进行展示。 如果过滤后没有可用离线码,则显示网络错误。
- 展示离线码 在展示之前,需要将展示时间(当前时间戳)拼接到码字符串中。 假设当前时间为:2023-01-01 12:00:00 , 对应的秒级时间戳为: 1672545600 假设码字符串为:
http://wx.url.cn/v003.1010343033.jLGSQWX5QQOibcM_YJB9Ej8b8R4lipE8yuAwKV4A3X-
8Zx57gCl2obucs5TdYdy37HUStIkdL1IkxZ2NdVfr_YYOKL-cb16Nz7E3isirW4KbcbREvcEQ9kD1fFEwdrf-
nuBAq5ACbHY8BT8HrFahpVdNPyaLzWYNkqRzmBQUhWo
将当前时间戳 1672545600 转换为 36 进制字符串: rnsgg0 把码字符串用 . 分割得到:
http://wx
url
cn/v003
1010343033
jLGSQWX5QQOibcM_YJB9Ej8b8R4lipE8yuAwKV4A3X-
8Zx57gCl2obucs5TdYdy37HUStIkdL1IkxZ2NdVfr_YYOKL-cb16Nz7E3isirW4KbcbREvcEQ9kD1fFEwdrf-
nuBAq5ACbHY8BT8HrFahpVdNPyaLzWYNkqRzmBQUhWo
将 36 进制字符串拼接到最后一个元素的前面:
http://wx
url
cn/v003
1010343033
rnsgg0
jLGSQWX5QQOibcM_YJB9Ej8b8R4lipE8yuAwKV4A3X-
8Zx57gCl2obucs5TdYdy37HUStIkdL1IkxZ2NdVfr_YYOKL-cb16Nz7E3isirW4KbcbREvcEQ9kD1fFEwdrf-
nuBAq5ACbHY8BT8HrFahpVdNPyaLzWYNkqRzmBQUhWo
然后再用 . 拼接起来得到最终的码字符串:
http://wx.url.cn/v003.1010343033.rnsgg0.jLGSQWX5QQOibcM_YJB9Ej8b8R4lipE8yuAwKV4A3X-
8Zx57gCl2obucs5TdYdy37HUStIkdL1IkxZ2NdVfr_YYOKL-cb16Nz7E3isirW4KbcbREvcEQ9kD1fFEwdrf-
nuBAq5ACbHY8BT8HrFahpVdNPyaLzWYNkqRzmBQUhWo
机具解码时,会校验展示时间和码生成时间。展示时间有效期 10 分钟, 生成时间有效期 3 天。
← WeCard码组件-小程序 批量冻结解冻 →