{"id":14956370,"url":"https://github.com/openflutter/fluwx","last_synced_at":"2026-01-11T13:32:22.784Z","repository":{"id":37431626,"uuid":"144250092","full_name":"OpenFlutter/fluwx","owner":"OpenFlutter","description":"Flutter版微信SDK.WeChat SDK for flutter.","archived":false,"fork":false,"pushed_at":"2025-08-26T09:32:30.000Z","size":35820,"stargazers_count":3243,"open_issues_count":20,"forks_count":535,"subscribers_count":58,"default_branch":"main","last_synced_at":"2025-08-26T11:47:42.438Z","etag":null,"topics":["flutter","wechat","wechatsdk","wxsdk"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/fluwx","language":"Dart","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/OpenFlutter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-08-10T07:08:03.000Z","updated_at":"2025-08-26T09:32:34.000Z","dependencies_parsed_at":"2023-01-29T19:15:47.551Z","dependency_job_id":"cc978b67-0adc-424d-9f0f-2581c9e2c053","html_url":"https://github.com/OpenFlutter/fluwx","commit_stats":{"total_commits":1050,"total_committers":54,"mean_commits":"19.444444444444443","dds":"0.12285714285714289","last_synced_commit":"053ed63ba1c8665171b2063d06e402c6c96a1748"},"previous_names":["jarvanmo/fluwx"],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/OpenFlutter/fluwx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Ffluwx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Ffluwx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Ffluwx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Ffluwx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenFlutter","download_url":"https://codeload.github.com/OpenFlutter/fluwx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFlutter%2Ffluwx/sbom","scorecard":{"id":105264,"data":{"date":"2025-08-11","repo":{"name":"github.com/OpenFlutter/fluwx","commit":"b49d4ea95b7e7c7f21c6ca0163f84586993d45e8"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":2,"reason":"Found 7/30 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"22 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build_test.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_test.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenFlutter/fluwx/build_test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build_test.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenFlutter/fluwx/build_test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_test.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenFlutter/fluwx/build_test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_test.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenFlutter/fluwx/build_test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build_test.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenFlutter/fluwx/build_test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_test.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenFlutter/fluwx/build_test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build_test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenFlutter/fluwx/build_test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/OpenFlutter/fluwx/publish.yml/main?enable=pin","Warn: containerImage not pinned by hash: .ci/Dockerfile:1: pin your Docker image by updating cirrusci/flutter:stable to cirrusci/flutter:stable@sha256:32e7d16c7e1458d3135e945ceec82c5d43bfda289526f850711f3908fb927502","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 10 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T10:58:47.536Z","repository_id":37431626,"created_at":"2025-08-15T10:58:47.536Z","updated_at":"2025-08-15T10:58:47.536Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278262441,"owners_count":25957937,"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","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["flutter","wechat","wechatsdk","wxsdk"],"created_at":"2024-09-24T13:12:55.157Z","updated_at":"2026-01-11T13:32:22.777Z","avatar_url":"https://github.com/OpenFlutter.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fluwx\n\n[![pub package](https://img.shields.io/pub/v/fluwx.svg)](https://pub.dev/packages/fluwx)\n![Build status](https://github.com/OpenFlutter/fluwx/actions/workflows/build_test.yml/badge.svg)\n[![GitHub stars](https://img.shields.io/github/stars/OpenFlutter/fluwx)](https://github.com/OpenFlutter/fluwx/stargazers)\n[![GitHub forks](https://img.shields.io/github/forks/OpenFlutter/fluwx)](https://github.com/OpenFlutter/fluwx/network)\n[![GitHub license](https://img.shields.io/github/license/OpenFlutter/fluwx)](https://github.com/OpenFlutter/fluwx/blob/master/LICENSE)\n[![GitHub issues](https://img.shields.io/github/issues/OpenFlutter/fluwx)](https://github.com/OpenFlutter/fluwx/issues)\n\u003ca target=\"_blank\" href=\"https://qm.qq.com/q/TJ29rkzywM\"\u003e\u003cimg border=\"0\" src=\"https://pub.idqqimg.com/wpa/images/group.png\" alt=\"OpenFlutter\" title=\"OpenFlutter\"\u003e\u003c/a\u003e\n\n---\n\n![logo](https://gitee.com/OpenFlutter/resoures-repository/raw/master/fluwx/fluwx_logo.png)\n\n[中文请移步此处](./README_CN.md)\n\n## What's Fluwx\n\n`Fluwx` is flutter plugin for [WeChatSDK](https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Resource_Center_Homepage.html) which allows developers to call  \n[WeChatSDK](https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Resource_Center_Homepage.html) native APIs.\n\n\u003e Join QQ Group now: 1003811176\n\n![QQGroup](https://gitee.com/OpenFlutter/resoures-repository/raw/master/common/flutter.png)\n\n## Capability\n\n- Share images, texts, music and so on to WeChat, including session, favorite and timeline.\n- Payment with WeChat.\n- Get auth code before you login in with WeChat.\n- Launch mini program in WeChat.\n- Subscribe Message.\n- Just open WeChat app.\n- Launch app From wechat link.\n- Open Customer Service\n\n## Preparation\n\n[Migrate to V4 now](./doc/MIGRATE_TO_V4_CN.md)\n\n\u003e Breaking changes ：*Fluwx* won't request permission(WRITE_EXTERNAL_STORAGE) since 4.5.0. That means you will need to handle permission when sharing images, if FileProvider is not supported.\n\n`Fluwx` is good but not God. You'd better read [official documents](https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Resource_Center_Homepage.html) before\nintegrating `Fluwx`. Then you'll understand how to generate Android signature, what's universal link for iOS, how to add URL schema for iOS and so on.\n\n## Install\n\nAdd the `fluwx` package (with payment feature by default) in your `pubspec.yaml` file:\n\n`fluwx` with pay:\n\n```yaml\ndependencies:\n  fluwx: ^${latestVersion}\n```\n\n![pub package](https://img.shields.io/pub/v/fluwx.svg)\n\n\u003e [!WARNING]\n\u003e Never forget to replace ^${latestVersion} with an actual version!\u003cbr /\u003e\n\u003e (See the above version, or go to [versions](https://pub.dev/packages/fluwx/versions) on pub.dev)\n\n\u003e [!NOTE]\n\u003e `fluwx` without pay:\u003cbr/\u003e\n\u003e Developers who need to exclude payment for iOS can set `no_pay: true` in the `fluwx` section of `pubspec.yaml`.\u003cbr/\u003e\n\u003e See the example: [example/pubspec.yaml](./example/pubspec.yaml#L19)\u003cbr/\u003e\n\n## Configurations\n\n`Fluwx` enables multiple configurations in the section `fluwx` of `pubspec.yaml` from v4, you can reference [pubspec.yaml](./example/pubspec.yaml#L10)\nfor more details.\n\n\u003e For iOS, some configurations, such as url_scheme，universal_link, LSApplicationQueriesSchemes, can be configured by `fluwx`,\n\u003e what you need to do is to fill configurations in `pubspec.yaml`\n\n- app_id. Recommend. It'll be used to generate scheme on iOS。This is not used to init WeChat SDK so you still need to call `fluwx.registerApi` manually.\n- debug_logging. Optional. Enable logs by setting it `true`.\n- flutter_activity. Optional. This is usually used by cold boot from WeChat on Android. `Fluwx` will try to launch launcher activity if not set.\n- universal_link. Recommend for iOS. It'll be used to generate universal link on your projects.\n- scene_delegate. Optional. Use `AppDelegate` or `SceneDelegate`. See [official documents](https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html) for more details.\n\n- For iOS\n If you are failing `cannot load such file -- plist` on iOS, please do the following steps:\n\n```shell\n# step.1 install missing dependencies\nsudo gem install plist\n# step.2 enter iOS folder(example/ios/,ios/)\ncd example/ios/\n# step.3 execute\npod install\n```\n\n- On OpenHarmony, to check if WeChat is installed, add the following to the module.json5 in your project\n\n```json5\n{\n  \"module\": {\n    \"querySchemes\": [\n      \"weixin\"\n    ],\n  }\n}\n```\n\n\u003e HarmonyOS Debugging Notice: Do not use the IDE's automatic signing. You must manually apply for a debug certificate for signing and debugging.\n\n## Register WxAPI\n\nRegister your app via `fluwx` if necessary.\n\n```dart\nFluwx fluwx = Fluwx();\nfinal success = fluwx.registerApi(appId: \"wxd930ea5d5a228f5f\",universalLink: \"https://your.univerallink.com/link/\");\nprint(\"register API success: $success\");\n```\n### iOS\nThe parameter `universalLink` only works with iOS. You can read [this document](https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html) to learn\nhow to create universalLink and what additional configuration is needed on iOS. In what follows is a summary: \n\n1. A valid iOS universal link for this app is needed. \n\n2. Make sure the app has the entitlement Associated domains enabled\n\n3. Add or modify `LSApplicationQueriesSchemes` in Info.plist in your iOS project. This is essential. The following strings should be added: `weixin`, `wechat`, `weixinULAPI` and `weixinURLParamsAPI`.\n\n4. Add or modify `CFBundleURLTypes` in Info.plist in your iOS project. Add a URL type with name `weixin` and role `editor`. Put your WeChat App ID in URL Schemes. \nExample how this looks like in Info.plist after modifying via XCode:\n```xml\n\u003ckey\u003eCFBundleURLTypes\u003c/key\u003e\n\t\u003carray\u003e\n\t\t\u003cdict\u003e\n\t\t\t\u003ckey\u003eCFBundleTypeRole\u003c/key\u003e\n\t\t\t\u003cstring\u003eEditor\u003c/string\u003e\n\t\t\t\u003ckey\u003eCFBundleURLName\u003c/key\u003e\n\t\t\t\u003cstring\u003eweixin\u003c/string\u003e\n\t\t\t\u003ckey\u003eCFBundleURLSchemes\u003c/key\u003e\n\t\t\t\u003carray\u003e\n\t\t\t\t\u003cstring\u003ewx123456789\u003c/string\u003e\n\t\t\t\u003c/array\u003e\n\t\t\u003c/dict\u003e\n\t\u003c/array\u003e\n```\n\n\n### Android\nMake sure the MD5 fingerprint of the signature of your app \nis registered at WeChat. You can extract this signature from your `keystore` using Java's keytool. \n\nIn debug mode your app is signed with a debug key from the development machine which will not be recognized by WeChat and you'll get `errCode = -1`. If you want to test in debug mode you will have to modify your debug key \n\nYou can read more about it on [this page](https://developers.weixin.qq.com/doc/oplatform/Downloads/Android_Resource.html).\n\n\nIt's better to register your API as early as possible.\n\n## Capability Document\n\n- [Basic knowledge](./doc/BASIC_KNOWLEDGE.md)\n- [Share](./doc/SHARE.md)\n- [Payment](./doc/PAYMENT.md)\n- [Auth](./doc/AUTH.md)\n- [Launch app from h5](./doc/LAUNCH_APP_FROM_H5.md)\n- [Open Customer Service](/doc/Customer_Service.md)\n\nFor more capabilities, you can read the public functions of `fluwx`.\n\n## QA\n\n[These questions maybe help](./doc/QA_CN.md)\n\n## Donate\n\nBuy the writer a cup of coffee。\n\n\u003cimg src=\"https://gitee.com/OpenFlutter/resoures-repository/raw/master/common/wx.jpeg\" height=\"300\"\u003e  \u003cimg src=\"https://gitee.com/OpenFlutter/resoures-repository/raw/master/common/ali.jpeg\" height=\"300\"\u003e\n\n## Subscribe Us On WeChat\n\n![subscribe](https://gitee.com/OpenFlutter/resoures-repository/raw/master/fluwx/wx_subscription.png)\n\n## Star history\n\n![stars](https://starchart.cc/OpenFlutter/fluwx.svg)\n\n## LICENSE\n\n    Copyright 2023 OpenFlutter Project\n\n    Licensed to the Apache Software Foundation (ASF) under one or more contributor\n    license agreements.  See the NOTICE file distributed with this work for\n    additional information regarding copyright ownership.  The ASF licenses this\n    file to you under the Apache License, Version 2.0 (the \"License\"); you may not\n    use this file except in compliance with the License.  You may obtain a copy of\n    the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the\n    License for the specific language governing permissions and limitations under\n    the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenflutter%2Ffluwx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenflutter%2Ffluwx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenflutter%2Ffluwx/lists"}