{"id":13600968,"url":"https://github.com/royalrick/weapp","last_synced_at":"2025-05-14T11:09:06.476Z","repository":{"id":41040838,"uuid":"126961623","full_name":"royalrick/weapp","owner":"royalrick","description":"微信小程序服务端 SDK (for Golang)","archived":false,"fork":false,"pushed_at":"2024-10-14T13:54:28.000Z","size":691,"stargazers_count":1487,"open_issues_count":30,"forks_count":283,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-04-12T03:44:42.909Z","etag":null,"topics":["go","golang","miniapp","miniprogram","sdk","weapp","wechat","wxapp"],"latest_commit_sha":null,"homepage":"https://pkg.go.dev/github.com/medivhzhan/weapp/v3","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/royalrick.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security/img_sec_check.go","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-27T09:23:06.000Z","updated_at":"2025-04-11T08:55:59.000Z","dependencies_parsed_at":"2023-02-17T14:45:47.868Z","dependency_job_id":"c427f8f9-e8d1-450b-87ac-e39120bac866","html_url":"https://github.com/royalrick/weapp","commit_stats":null,"previous_names":["medivhzhan/weapp2","medivhzhan/weapp"],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royalrick%2Fweapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royalrick%2Fweapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royalrick%2Fweapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royalrick%2Fweapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/royalrick","download_url":"https://codeload.github.com/royalrick/weapp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254129488,"owners_count":22019628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","miniapp","miniprogram","sdk","weapp","wechat","wxapp"],"created_at":"2024-08-01T18:00:51.672Z","updated_at":"2025-05-14T11:09:06.435Z","avatar_url":"https://github.com/royalrick.png","language":"Go","readme":"# ![微信小程序服务端 SDK (for Golang)](https://repository-images.githubusercontent.com/126961623/e561e692-7eac-4cd1-955b-f4fe3ff6f7b7)\n\n## 说明\n\n- [v1 版本入口](https://github.com/medivhzhan/weapp/tree/v1)\n- [v2 版本入口](https://github.com/medivhzhan/weapp/tree/v2)\n- [查看完整文档](https://pkg.go.dev/github.com/medivhzhan/weapp/v3)\n- SDK 暂不包含支付相关内容 已有很多优秀的支付相关模块;\n- 微信小程序的功能和接口一直在持续更新迭代,如果遇到没有的接口或者不符合当前实际情况的接口请提交 [issue](https://github.com/royalrick/weapp/issues/new) 或者发起 pull request;\n\n## 获取代码\n\n```sh\n\ngo get -u github.com/medivhzhan/weapp/v3\n\n```\n\n## 初始化\n\n- 初始化 SDK\n\n```go\npackage main\n\nimport (\n \"github.com/medivhzhan/weapp/v3\"\n)\n\nfunc main() {\n sdk := weapp.NewClient(\"your-appid\", \"your-secret\")\n}\n```\n\n- 自定义 HTTP 客户端\n\n```go\npackage main\n\nimport (\n \"crypto/tls\"\n \"net/http\"\n \"time\"\n\n \"github.com/medivhzhan/weapp/v3\"\n)\n\nfunc main() {\n cli := \u0026http.Client{\n  Timeout: 10 * time.Second,\n  Transport: \u0026http.Transport{\n   // 跳过安全校验\n   TLSClientConfig: \u0026tls.Config{InsecureSkipVerify: true},\n  },\n }\n\n sdk := weapp.NewClient(\n  \"your-appid\",\n  \"your-secret\",\n  weapp.WithHttpClient(cli),\n )\n}\n\n```\n\n- 自定义日志\n\n```go\npackage main\n\nimport (\n \"log\"\n \"os\"\n\n \"github.com/medivhzhan/weapp/v3\"\n \"github.com/medivhzhan/weapp/v3/logger\"\n)\n\nfunc main() {\n lgr := logger.NewLogger(log.New(os.Stdout, \"\\r\\n\", log.LstdFlags), logger.Info, true)\n\n sdk := weapp.NewClient(\n  \"your-appid\",\n  \"your-secret\",\n  weapp.WithLogger(lgr),\n )\n\n // 任意切换日志等级\n sdk.SetLogLevel(logger.Silent)\n}\n\n```\n\n- 自定义缓存\n\n```go\npackage main\n\nimport (\n \"time\"\n\n \"github.com/medivhzhan/weapp/v3\"\n)\n\ntype MyCache struct{}\n\nfunc (cc *MyCache) Set(key string, val interface{}, timeout time.Duration) {\n // ...\n}\n\nfunc (cc *MyCache) Get(key string) (interface{}, bool) {\n return \"your-access-token\", true\n}\n\nfunc main() {\n cc := new(MyCache)\n\n sdk := weapp.NewClient(\n  \"your-appid\",\n  \"your-secret\",\n  weapp.WithCache(cc),\n )\n}\n\n```\n\n- 自定义 token 获取方法\n\n```go\npackage main\n\nimport (\n \"github.com/medivhzhan/weapp/v3\"\n)\n\nfunc main() {\n tokenGetter := func() (token string, expireIn uint) {\n\n  expireIn = 1000\n  token = \"your-custom-token\"\n\n  return token, expireIn\n }\n\n sdk := weapp.NewClient(\n  \"your-appid\",\n  \"your-secret\",\n  weapp.WithAccessTokenSetter(tokenGetter),\n )\n}\n\n```\n\n---\n\n## 调用接口示例\n\n[官方文档](https://developers.weixin.qq.com/miniprogram/dev/api-backend/)\n\n```go\npackage main\n\nimport (\n \"fmt\"\n \"log\"\n\n \"github.com/medivhzhan/weapp/v3\"\n \"github.com/medivhzhan/weapp/v3/auth\"\n)\n\nfunc main() {\n sdk := weapp.NewClient(\"your-appid\", \"your-secret\")\n\n cli := sdk.NewAuth()\n\n    // 用户支付完成后获取该用户的 UnionId\n rsp, err := cli.GetPaidUnionId(\u0026auth.GetPaidUnionIdRequest{})\n if err != nil {\n  log.Fatal(err)\n }\n\n    // 检查加密信息是否由微信生成\n rsp, err := cli.CheckEncryptedData(\u0026auth.CheckEncryptedDataRequest{})\n if err != nil {\n  log.Fatal(err)\n }\n\n    // 登录凭证校验\n rsp, err := cli.Code2Session(\u0026auth.Code2SessionRequest{})\n if err != nil {\n  log.Fatal(err)\n }\n\n    // 获取小程序全局唯一后台接口调用凭据\n rsp, err := cli.GetAccessToken(\u0026auth.GetAccessTokenRequest{})\n if err != nil {\n  log.Fatal(err)\n }\n\n    // 检查微信是否返回错误\n if err := rsp.GetResponseError(); err != nil {\n  log.Println(err)\n }\n\n fmt.Println(rsp)\n}\n\n```\n\n---\n\n## 接收微信通知\n\n[官方文档](https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/message-push.html#option-url)\n\n```go\npackage main\n\nimport (\n \"log\"\n \"net/http\"\n\n \"github.com/medivhzhan/weapp/v3\"\n \"github.com/medivhzhan/weapp/v3/server\"\n)\n\nfunc main() {\n sdk := weapp.NewClient(\"your-appid\", \"your-secret\")\n\n //  通用处理器\n handler := func(req map[string]interface{}) map[string]interface{} {\n  switch req[\"MsgType\"] {\n  case \"text\":\n   // Do something cool ...\n  }\n\n  return nil\n }\n\n    // HTTP handler\n http.HandleFunc(\"/wechat/notify\", func(w http.ResponseWriter, r *http.Request) {\n  srv, err := sdk.NewServer(\"token\", \"aesKey\", \"mchID\", \"apiKey\", false, handler)\n  if err != nil {\n   log.Fatalf(\"init server error: %s\", err)\n  }\n\n  // 调用事件处理器后 通用处理器不再处理该事件\n  srv.OnCustomerServiceTextMessage(func(tmr *server.TextMessageResult) *server.TransferCustomerMessage {\n\n   return \u0026server.TransferCustomerMessage{}\n  })\n\n  if err := srv.Serve(w, r); err != nil {\n   log.Fatalf(\"serving error: %s\", err)\n  }\n })\n}\n\n```\n","funding_links":[],"categories":["Go","Repositories"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froyalrick%2Fweapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froyalrick%2Fweapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froyalrick%2Fweapp/lists"}