1 查看领取资质
登录 红包封面公众平台 ,查看是否有资质配置
- 成功开通并完成企业认证的公众号用户;
- 成功开通并完成企业认证的视频号用户;
- 成功开通且关注人数达100人的公众号个人用户;
- 成功开通且满足下列任一条件的视频号个人用户:
1)视频号关注人数达100人;2)视频号绑定的微信表情平台账号专辑下载量达200次。
2 上传封面
上传图片不超过300k,可以通过小熊猫进行压缩
3 小程序关联红包封面
录入红包封面开放平台生成的红包封面对应的ctoken
服务端获取微信红包封面
后端服务通微信官方接口调用
接口名:getRedPacketCoverUrl
接口调用方式及地址:
POST https://api.weixin.qq.com/redpacketcover/wxapp/cover_url/get_by_token?access_token=ACCESS_TOKEN
参考文档:查看详情
小程序客户端调用接口
微信小程序端调用服务端封装的接口,拿到红包封面领取链接;
请求微信api wx.showRedPackage,拉取h5领取红包封面页
示例:
wx.showRedPackage({
url: '后端接口返回的红包封面领取链接',
success:res=>{
console.log("领取成功")
},
fail:err=>{
console.log("领取失败")
}
})
参考文档 查看详情
示例
代码整理
前端通过opend获取红包封面,必传值,可以通过openid,知晓那些人是否已经领取,注意大小写,和后端同事对齐,有些业务代码可删除,接口替换即可
import { useUserStore } from '@/pinia/user.js'
import { storeToRefs } from 'pinia'
import { wxRouteTo } from "@/utils/route-navigation.js";
// 公共或者微信红包封面
export const getRedenveloper = (_this) => {
// 0 临时用户 1 机构用户 2 未登录用户
const userStore = useUserStore()
// 可领取红包的用户, 未登录用户去登录
const claimableUser = ['0', '1']
// 获取当前用户信息
const { getCurrentUserType } = storeToRefs(userStore)
// 如果不是可领取红包的用户,跳转到登录页面
if (!claimableUser.includes(getCurrentUserType.value)) {
wxRouteTo.toLogin({ step: 0 });
return
}
// 正常领取
uni.showLoading({
title: '加载中',
mask: true
})
// 获取用户openId
uni.login({
provider: 'weixin',
success: function (res) {
uni.hideLoading()
_this
.$fetch({
url: '/api/bus-frp-agg-wechat-mini/agg/wechat/mini/user/get-open-id',
method: 'POST',
data: {
code: res.code
},
noToken: true
})
.then((res) => {
if (res?.openId && res?.token) {
_this
.$fetch({
url: '/api/bus-frp-agg-wechat-mini/agg/wechat/mini/red-packet/get-red-packet-cover-url',
method: 'POST',
data: {
token: res.token,
openid: res.openId
},
noToken: true
})
.then((res) => {
// 获取到微信封面地址
if (res?.redPacketUrl) {
uni.showRedPackage({
url: res.redPacketUrl,
fail(err) {
console.log(err, 'err =>', '获取封面地址失败')
}
})
} else {
uni.showToast({
icon: 'none',
position: 'bottom',
title: '未获取到封面地址!'
})
}
})
.catch((err) => {
console.log(err, 'err =>', '获取到code')
})
} else {
uni.showToast({
icon: 'none',
position: 'bottom',
title: 'openId为空!'
})
}
})
.catch((err) => {
console.log(err, 'err =>', '获取到code')
})
},
fail: function (err) {
uni.hideLoading()
uni.showToast({
icon: 'none',
position: 'bottom',
title: '系统异常~'
})
}
})
}