评论

小程序开发红包封面功能(前端业务)

红包封面领取

1 查看领取资质

登录 红包封面公众平台 ,查看是否有资质配置

  1. 成功开通并完成企业认证的公众号用户;
  2. 成功开通并完成企业认证的视频号用户;
  3. 成功开通且关注人数达100人的公众号个人用户;
  4. 成功开通且满足下列任一条件的视频号个人用户:
    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: '系统异常~'
      })
    }
  })
}
最后一次编辑于  01-22  
点赞 0
收藏
评论
登录 后发表内容