miniprogram

package module
v1.0.0-beta.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2020 License: Apache-2.0 Imports: 14 Imported by: 38

README

fastwego/miniprogram

A fast wechat miniprogram/minigame development framework written in Golang

快速开始 & demo

go get github.com/fastwego/miniprogram
// 创建小程序/小游戏实例
app := miniprogram.New(miniprogram.MiniprogramConfig{
    Appid:  "APPID",
    Secret: "SECRET",
})

var payload = []byte(`{
  "begin_date" : "20170313",
  "end_date" : "20170313"
}`)

// 调用 api
resp, err := datacube.GetDailyRetain(app, payload)
fmt.Println(string(resp),err)

完整演示项目:

https://github.com/fastwego/miniprogram-demo

架构设计

sdk

框架特点

快速

「快」作为框架设计的核心理念,体现在方方面面:

  • 使用 Go 语言,开发快、编译快、部署快、运行快,轻松服务海量用户
  • 丰富的文档、教程和演示代码,快速上手,5 分钟即可搭建一套完整的微信公众号服务
  • 独立清晰的模块划分,快速熟悉整个框架,没有意外,一切都是你期望的样子
  • 甚至连框架自身的大部分代码也是自动生成的,维护更新快到超乎想象
符合直觉

作为第三方开发框架,尽可能贴合官方文档和设计,不引入新的概念,不给开发者添加学习负担

官方文档就是最好的文档

每个接口的注释都附带官方文档的链接,让你随时翻阅,省时省心

完备的单元测试

100% 覆盖每一个接口,让你每一次调用都信心满满

详细的日志

每个关键环节都为你完整记录,Debug 倍轻松,你可以自由定义日志输出,甚至可以关闭日志

多账号支持

一套服务支持多个账号,轻松成为第三方开发服务平台,业务节节高

支持服务集群

单台服务器支撑不住访问流量/想提高服务可用性?

只需重载 GetAccessTokenFunc 方法,从中控服务获取 AccessToken,即可解决多实例刷新冲突/覆盖的问题

活跃的开发者社区

FastWeGo 是一套完整的微信开发框架,包括公众号、开放平台、微信支付、企业微信、小程序、小游戏等微信服务,拥有庞大的开发者用户群体

你遇到的所有问题几乎都可以在社区找到解决方案

接口列表

参与贡献

欢迎提交 pull request / issue / 文档,一起让微信开发更快更好!

Faster we go together!

Documentation

Overview

微信小程序开发 SDK

See: https://developers.weixin.qq.com/miniprogram/dev/api-backend/

Index

Examples

Constants

This section is empty.

Variables

View Source
var WXServerUrl = "https://api.weixin.qq.com"

微信 api 服务器地址

Functions

func GetAccessToken

func GetAccessToken(ctx *Miniprogram) (accessToken string, err error)

从 公众号实例 的 AccessToken 管理器 获取 access_token

如果没有 access_token 或者 已过期,那么刷新

获得新的 access_token 后 过期时间设置为 0.9 * expiresIn 提供一定冗余

Types

type AccessToken

type AccessToken struct {
	Cache                 cachego.Cache
	GetAccessTokenHandler GetAccessTokenFunc
}

AccessToken 管理器 处理缓存 和 刷新 逻辑

type Client

type Client struct {
	Ctx *Miniprogram
}

HttpClient 用于向公众号接口发送请求

func (*Client) HTTPGet

func (client *Client) HTTPGet(uri string) (resp []byte, err error)

HTTPGet GET 请求

func (*Client) HTTPPost

func (client *Client) HTTPPost(uri string, payload io.Reader, contentType string) (resp []byte, err error)

HTTPPost POST 请求

type GetAccessTokenFunc

type GetAccessTokenFunc func(ctx *Miniprogram) (accessToken string, err error)

GetAccessTokenFunc 获取 access_token 方法接口

type Miniprogram

type Miniprogram struct {
	Config      MiniprogramConfig
	AccessToken AccessToken
	Client      Client
	Logger      *log.Logger
}

Miniprogram 实例

func New

func New(config MiniprogramConfig) (miniprogram *Miniprogram)

创建小程序实例

func (*Miniprogram) SetAccessTokenCacheDriver

func (miniprogram *Miniprogram) SetAccessTokenCacheDriver(driver cachego.Cache)

SetAccessTokenCacheDriver 设置 AccessToken 缓存器 默认为文件缓存:目录 os.TempDir()

驱动接口类型 为 cachego.Cache

Example
package main

import (
	"os"

	"github.com/faabiosr/cachego/file"
	"github.com/faabiosr/cachego/sync"
	"github.com/fastwego/miniprogram"
)

func main() {
	var App *miniprogram.Miniprogram

	// 使用内存
	App.SetAccessTokenCacheDriver(sync.New())

	// 使用指定目录下的 文件
	App.SetAccessTokenCacheDriver(file.New(os.TempDir()))

	// 更多驱动 请查看 https://github.com/faabiosr/cachego
}

func (*Miniprogram) SetGetAccessTokenHandler

func (miniprogram *Miniprogram) SetGetAccessTokenHandler(f GetAccessTokenFunc)

SetGetAccessTokenHandler 设置 AccessToken 获取方法。默认 从本地缓存获取(过期从微信接口刷新)

如果有多实例服务,可以设置为 Redis 或 RPC 等中控服务器 获取 就可以避免 AccessToken 刷新冲突

Example
package main

import (
	"github.com/fastwego/miniprogram"
	"github.com/garyburd/redigo/redis"
)

func main() {
	var Ctx *miniprogram.Miniprogram

	conn, _ := redis.Dial("tcp", "127.0.0.1:6379")
	_, _ = conn.Do("AUTH", "PASSWORD")

	// 从远程 Redis 服务器 获取 AccessToken
	Ctx.SetGetAccessTokenHandler(func(ctx *miniprogram.Miniprogram) (accessToken string, err error) {
		accessToken, _ = redis.String(conn.Do("GET", "access_token:"+ctx.Config.Appid))
		return
	})
}

func (*Miniprogram) SetLogger

func (miniprogram *Miniprogram) SetLogger(logger *log.Logger)

SetLogger 日志记录 默认输出到 os.Stdout

可以新建 logger 输出到指定文件

如果不想开启日志,可以输出到 /dev/null log.SetOutput(ioutil.Discard)

Example
package main

import (
	"log"
	"os"

	"github.com/fastwego/miniprogram"
)

func main() {

	var Ctx *miniprogram.Miniprogram

	// 输出日志到控制台
	Ctx.SetLogger(log.New(os.Stdout, "[miniprogram]", log.LstdFlags))

	// 记录日志到指定文件
	logFile, _ := os.OpenFile("/path/to/file", os.O_WRONLY, 0644)
	Ctx.SetLogger(log.New(logFile, "[miniprogram]", log.LstdFlags))

	// 关闭日志
	Ctx.SetLogger(nil)
}

type MiniprogramConfig

type MiniprogramConfig struct {
	Appid  string
	Secret string
}

小程序配置

Directories

Path Synopsis
apis
ad
Package ad 广告
Package ad 广告
customer_message
Package customer_message 客服消息
Package customer_message 客服消息
datacube
Package datacube 数据分析
Package datacube 数据分析
delivery/mini
Package mini 即时配送/小程序使用
Package mini 即时配送/小程序使用
delivery/provider
Package provider 即时配送/运力方
Package provider 即时配送/运力方
img
Package img 图像处理
Package img 图像处理
logistics/mini
Package mini 物流助手/小程序使用
Package mini 物流助手/小程序使用
logistics/provider
Package provider 物流助手/运力方
Package provider 物流助手/运力方
nearbypoi
Package nearbypoi 附近的小程序
Package nearbypoi 附近的小程序
ocr
Package ocr OCR
Package ocr OCR
operation
Package operation 运维中心
Package operation 运维中心
plugin
Package plugin 插件管理
Package plugin 插件管理
search
Package search 小程序搜索
Package search 小程序搜索
security
Package security 内容安全
Package security 内容安全
service_market
Package service_market 服务市场
Package service_market 服务市场
subscribe
Package subscribe 订阅消息
Package subscribe 订阅消息
uniform_message
Package uniform_message 统一服务消息
Package uniform_message 统一服务消息
updatable_message
Package updatable_message 动态消息
Package updatable_message 动态消息
user
Package user 用户
Package user 用户
verify
Package verify 生物认证
Package verify 生物认证
wxacode
Package wxacode 小程序码
Package wxacode 小程序码
minigame
apis/data
Package data 开放数据
Package data 开放数据
apis/frame
Package frame 帧同步
Package frame 帧同步
apis/pay
Package pay 虚拟支付
Package pay 虚拟支付
apis/security
Package security 内容安全
Package security 内容安全
apis/subscribe
Package subscribe 订阅消息
Package subscribe 订阅消息
apis/updatable_message
Package updatable_message 动态消息
Package updatable_message 动态消息
apis/user
Package user 用户
Package user 用户
apis/wxacode
Package wxacode 小程序码
Package wxacode 小程序码
cmd command
Package test 模拟微信服务器 测试
Package test 模拟微信服务器 测试

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL