Go开发微信小程序SDK推荐以及简单示例

news/2024/7/10 21:41:21 标签: golang, 微信小程序, 小程序, sdk, 开源, GitHub, 微信

最近准备用Go语言开发微信小程序>微信小程序,发现会调用很多微信小程序>微信小程序的服务端接口,并且还需要自己封装。于是想着去GitHub上看看,是否有第三方现成的SDK直接拿来使用,结果发现两个非常不错的第三方库。

SDK标准:
这里罗列几点,个人在使用第三方开源库的一些标准版,供大家参考:

功能稳定,有上生产环境的案例。避免出现SDK问题,需要开发者自己解决。

开发团队稳定,持续更新。避免出现bug后期无人修复,出现一种类似KPI的开源项目。

功能足够强大。毕竟是使用开源SDK,就是为了减少自己去开发一些额外的功能,把精力更多的用在实现业务上。

完善的文档。一个再好的开源项目,如果没有一个完善的文档,这无疑给使用者增加了一个门槛,同时也降低了开发效率,达不到直接使用第三方SDK的目的。


easywechat
用PHP开发过微信生态的产品,估计都知道easywechat是一个开源的、非官方的第三方SDK。功能强大、安装和使用非常简单,因为它是一个标准的 Composer 包,这意味着任何满足下列安装条件的 PHP 项目支持 Composer 都可以使用它。直接使用下面的命令,安装就可以正常使用了。

composer require overtrue/wechat

powerwechat
PowerWeChat是一款简单易用的WeChat SDK for Golang目前已经覆盖微信公众号、微信小程序>微信小程序微信支付、企业微信。功能非常的强大,几乎是把微信生态的产品都包含在内。在选择它主要基于下面几个目的:

功能强大,完整的微信生态覆盖。涵盖了微信公众号、微信小程序>微信小程序微信企业号和微信支付。基本我们接触的微信开发,也都是这几个类目。所以足够我们使用了。

开发团队稳定。PowerWechat由Artisan Cloud团队潜心研发并且也在持续更新和完善当中。

完善的文档。PowerWechat有属于自己的官网,不管是微信公众号、微信小程序>微信小程序微信企业号和微信支付都有独立的模块介绍如何使用,同时也有完整的示例代码。如下微信企业号开发,如何配置每一个参数定义都有很好的说明。

package main

import (
  "log"
)

func main() {
  WeComApp, err := work.NewWork(&work.UserConfig{
    CorpID:  "app_id",       // 企业微信的app id,所有企业微信共用一个。
    AgentID: 100001,         // 内部应用的app id
    Secret:  "wecom_secret", // 内部应用的app secret
    OAuth: work.OAuth{
      Callback: "https://wecom.artisan-cloud.com/callback",
      Scopes:   nil,
    },
    HttpDebug: true,
  })
  if err != nil {
    panic(err)
  }
  response := WeComApp.Base.GetCallbackIp()
  log.Println(response)
}

go-wechat-miniapp-sdk
go-wechat-miniapp-sdk基于微信小程序>微信小程序相关接口封装,使用golang语言封装的一套微信小程序>微信小程序官方接口SDK。支持如下功能:

登录|用户信息
订阅消息
客服消息
统一服务消息
获取小程序

该SDK同样的,使用起来很简单,也能很快的上手。

下面是该SDK安装方法。

go get github.com/dgb8901/go-wechat-miniapp-sdk

下面是基础信息配置:

package helper

import (
    "github.com/dgb8901/go-wechat-miniapp-sdk/config"
    "github.com/dgb8901/go-wechat-miniapp-sdk/service"
)

type wxaHelper struct {
    wxaService *service.WxaService
}

var helper = &wxaHelper{}

func Init() {

    cfg := &config.Cfg{
        AppId:         "AppId",
        Secret:        "Secret",
        Token:         "Token",
        AesKey:        "AesKey",
        MsgDataFormat: "DataFormat",
    }
    // wxaConfig := config.NewInRedis(cfg,"127.0.0.1:6379","123456")
    // wxaService := service.NewInRedis(redisConfig)
    wxaConfig := config.NewInMemory(cfg)
    wxaService := service.NewService(wxaConfig)

    helper.wxaService = wxaService
}

func GetWxaService() *service.WxaService {
    return wxaHelper.wxaService
}

通过GitHub提交的记录,可以看出这个SDK应该是属于个人开发。没有完整的文档,并且更新时间也很久了。不推荐用于生产环境,如果你是一个想自己学习如何去封装,或者想在这个基础上去实现一个自己的SDK,可以借鉴一下该SDK。


http://www.niftyadmin.cn/n/5048113.html

相关文章

loadEnv是vite的工具函数

loadEnv()函数返回一个对象,这个对象就是根据开发模式还是生产环境加载的.env.development文件里的环境变量,有系统自带的也有自己手写的 loadEnv(第1个参数,第2个参数,第3个参数) 注意:第3个参数如果是“”空字符…

CFGPT: Chinese Financial Assistant with Large Language Model

本文是LLM系列文章,针对《CFGPT: Chinese Financial Assistant with Large Language Model》的翻译。 CFGPT:大型语言模型的中文财务助理 摘要1 引言2 相关工作3 数据集4 模型和训练5 应用6 结论 摘要 大型语言模型(LLM)在金融领…

opencv实现仿射变换和透射变换

##1, 什么是仿射变换? 代码实现 import numpy as np import cv2 as cv import matplotlib.pyplot as plt#设置字体 from pylab import mpl mpl.rcParams[font.sans-serif] [SimHei]#图像的读取 img cv.imread("lena.png")#仿射变换 row…

2023-09-23力扣每日一题

链接: 1993. 树上的操作 题意 **Lock:**指定用户给指定节点 上锁 ,上锁后其他用户将无法给同一节点上锁。只有当节点处于未上锁的状态下,才能进行上锁操作。**Unlock:**指定用户给指定节点 解锁 ,只有当…

机器学习——奇异值分解(未完)

开坑,刚看完书,已经有些窒息了 先把坑挖了,再慢慢填,避免自己划水跳过 我爱线代,线代爱我,阿弥陀佛 为什么要学奇异值分解? 因为书本倒数第二章专门提到的,想必一定很重要&#xff…

Java中==和equals有什么区别

原文网址:Java中和equals有什么区别_IT利刃出鞘的博客-CSDN博客 简介 本文介绍java中和equals的区别。 区别 区别是:一个是运算符,一个是方法。 比较变量的值是否相同。 如果比较的对象是基本数据类型,则比较数值是否相等&am…

iPhone微信文件过期怎么办?收藏好这3个恢复方法!

想必大家在日常生活中也会经常使用微信来传输重要的文件吧?但是很多小伙伴表示自己在收到文件后,老是忘记点开保存。等到需要用到文件时,才发现文件居然已经过期了。微信文件过期还有办法找回来吗?大家不要慌!来跟着小…

字符串思维题练习 DAY1(CF691B , CF706C , CF1555D)

字符串思维题练习 DAY1 学术小群:545214567(讨论牛客系列赛,codeforces,atcoder等) Problem - 691B - Codeforces CF691 B. s-palindrome(思维 镜像回文) 大意:定义镜像回文串为中心镜像对称的串 &…