{"id":18296639,"url":"https://github.com/johnniang/wechat-starter-boot-spring","last_synced_at":"2025-04-05T12:32:05.860Z","repository":{"id":57736598,"uuid":"172911453","full_name":"JohnNiang/wechat-starter-boot-spring","owner":"JohnNiang","description":"简化微信对接流程，避免重复性工作和填坑","archived":false,"fork":false,"pushed_at":"2020-03-27T14:31:43.000Z","size":142,"stargazers_count":23,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-01T20:45:20.932Z","etag":null,"topics":["spring","springboot","starter","wechat","wechat-pay","wechat-sdk"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JohnNiang.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":null,"support":null}},"created_at":"2019-02-27T12:28:22.000Z","updated_at":"2025-02-07T09:01:26.000Z","dependencies_parsed_at":"2022-08-24T14:57:20.237Z","dependency_job_id":null,"html_url":"https://github.com/JohnNiang/wechat-starter-boot-spring","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnNiang%2Fwechat-starter-boot-spring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnNiang%2Fwechat-starter-boot-spring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnNiang%2Fwechat-starter-boot-spring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnNiang%2Fwechat-starter-boot-spring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JohnNiang","download_url":"https://codeload.github.com/JohnNiang/wechat-starter-boot-spring/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247339022,"owners_count":20923004,"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":["spring","springboot","starter","wechat","wechat-pay","wechat-sdk"],"created_at":"2024-11-05T14:43:40.885Z","updated_at":"2025-04-05T12:32:03.249Z","avatar_url":"https://github.com/JohnNiang.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spring Boot Starter for Wechat\n\n[![Build Status](https://travis-ci.org/JohnNiang/wechat-starter-boot-spring.svg?branch=master)](https://travis-ci.org/JohnNiang/wechat-starter-boot-spring)\n\n![JDK version](https://img.shields.io/badge/java-1.8-green.svg)\n\n\u003e 当前项目处于开发期，感兴趣的朋友可以先关注一下！\n\n## 目的\n\n主要为了**简化微信对接流程，避免重复性工作和填坑。**\n\n非常希望**感兴趣的朋友们**能够参与进来，完善 **Wechat Starter**。\n\n## 引入指南\n\n### Gradle\n\n#### Snapshot\n\n```groovy\nrepositories {\n    ...\n    maven {\n        url 'https://oss.sonatype.org/content/groups/public/'\n    }\n}\n\nimplementation 'me.johnniang.wechat:wechat-starter-boot-spring:0.0.7-SNAPSHOT'\n```\n\n#### Release\n\n```groovy\nimplementation 'me.johnniang.wechat:wechat-starter-boot-spring:0.0.4'\n```\n\n### Maven\n\n#### Snapshot\n\n```xml\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003enexus_repo\u003c/id\u003e\n        \u003cname\u003eNexus oss repo\u003c/name\u003e\n        \u003curl\u003ehttps://oss.sonatype.org/content/groups/public/\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n\n\u003cdependency\u003e\n    \u003cgroupId\u003eme.johnniang.wechat\u003c/groupId\u003e\n    \u003cartifactId\u003ewechat-starter-boot-spring\u003c/artifactId\u003e\n    \u003cversion\u003e0.0.7-SNAPSHOT\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n#### Release\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eme.johnniang.wechat\u003c/groupId\u003e\n    \u003cartifactId\u003ewechat-starter-boot-spring\u003c/artifactId\u003e\n    \u003cversion\u003e0.0.4\u003c/version\u003e\n\u003c/dependency\u003e\n\n```\n\n## 功能\n\n- [x] 完成 **Wechat Token** 的获取（需要完善缓存）\n- [x] 完成 **Wechat OAuth Token** 的获取\n- [x] 完成 **签名验证** 功能\n- [x] 完成 **发送客服消息** 功能\n- [x] 完成 **静默获取微信用户基本信息** 功能\n- [x] 完成 **通过 sns 方式获取用户基本信息** 功能\n- [ ] 完成 **创建微信二维码** 功能\n- [ ] 完成 **上传媒体文件** 功能\n- [ ] 完成 **Ticket** 的获取\n- [ ] 完成 **构建 JSSDK Config** 功能\n- [ ] 完成 **微信支付** 功能\n- [x] 完成 **微信消息的接收** 功能\n\n## 开发文档\n\n### 配置微信相关参数\n\n```yaml\njohnniang:\n  wechat:\n    # 基础配置信息\n    appId: your_app_id\n    appSecret: your_app_secret\n    validationToken: custom_validation_token for wechat validation\n\n    # 支付相关信息\n    key: your_payment_key\n    mchId: your_mch_id\n    paymentNotificationUrl: payment_notification_url\n    unifiedOrderUrl: https://api.mch.weixin.qq.com/pay/unifiedorder # Default is sandbox url\n```\n\n### WechatService\n\n已经预置 WechatService，开发者可通过以下方式调用：\n\n```java\n@Autowired\nprivate WechatService wecahtService;\n```\n\n```java\n /**\n* Gets wechat token.\n*\n* @return wechat token\n*/\n@NonNull\nWechatToken getWechatToken();\n\n/**\n* Gets wechat token string.\n*\n* @return wechat token string\n*/\n@NonNull\nString getWechatTokenString();\n\n/**\n* Checks signature.\n*\n* @param signature signature must not be blank\n* @param timestamp timestamp must not be blank\n* @param nonce     nonce must not be blank\n* @return true if the signature is correct, false otherwise\n*/\nboolean checkSignature(@NonNull String signature, @NonNull String timestamp, @NonNull String nonce);\n\n/**\n* Gets wechat user info.\n*\n* @param openid wechat openid must not be blank\n* @return actual wechat user info\n*/\n@NonNull\nWechatUser getWechatUser(@NonNull String openid);\n\n/**\n* Gets wechat user info via sns.\n*\n* @param openid            wechat openid must not be blank\n* @param oAuth2AccessToken oauth2 access token\n* @return actual wechat user info\n*/\n@NonNull\nWechatUser getWechatUserViaSns(@NonNull String openid, @NonNull String oAuth2AccessToken);\n\n/**\n* Sends kf message to wechat user.\n*\n* @param message kf message content must not be null\n*/\nvoid sendKfMessage(@NonNull KfMessage message);gou\n```\n\n### DefaultWechatController\n\n预置了 DefaultWechatController，开发这可通过一下方式使用（当然不是必须的）：\n\n```java\n\n@Controller\n@RequestMapping(\"/api/wechat\")\npublic class WechatController extends DefaultWechatController {\n\n    // 用户可以根据自己的需求进行重构，或者增添相应的方法。\n\n}\n```\n\nDefaultWechatController 默认的行为有：\n\n```java\n/**\n* Validate signature from wechat.\n*\n* @param signature signature from wechat\n* @param timestamp timestamp from wechat\n* @param nonce     nonce from wechat\n* @param echoStr   echoStr from wechat\n* @return echoStr from wechat\n*/\n@GetMapping\npublic String validate(@RequestParam(\"signature\") String signature,\n                    @RequestParam(\"timestamp\") String timestamp,\n                    @RequestParam(\"nonce\") String nonce,\n                    @RequestParam(\"echostr\") String echoStr)\n```\n\n```java\n/**\n* Handle wechat message.\n*\n* @param request http servlet request (Auto inject)\n* @return passive wechat message\n* @throws IOException throws when HttpServletRequest#getInputStream() invokes error\n*/\n@PostMapping(produces = MediaType.APPLICATION_XML_VALUE)\npublic WechatMessage handleWechatMessage(HttpServletRequest request)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnniang%2Fwechat-starter-boot-spring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnniang%2Fwechat-starter-boot-spring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnniang%2Fwechat-starter-boot-spring/lists"}