From a3e82e71135e49059eb4b36b7eb25eac79f03a9d Mon Sep 17 00:00:00 2001 From: Pine Date: Tue, 8 Sep 2026 22:30:49 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E7=BC=BA=E5=A4=B1=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=20wechatpayv3=EF=BC=88=E6=94=AF=E4=BB=98=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=90=AF=E5=8A=A8=E5=BF=85=E9=9C=80=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit app/pay 模块无条件 import wechatpayv3.async_(AsyncWeChatPay/WeChatPayType/aes_decrypt), 但 pyproject/uv.lock 从未声明,容器干净环境下启动即 ModuleNotFoundError; 本地因旧 venv 残留包掩盖了问题。本次经审计确认仅此一处缺失,已补声明并重新锁定。 --- pyproject.toml | 5 +++++ uv.lock | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 5d557bb..d3e7e44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,6 +24,7 @@ dependencies = [ "alembic>=1.19.1", "aiofiles>=24.1.0", "pymysql>=1.2.0", + "wechatpayv3>=2.0.3", ] [dependency-groups] @@ -40,6 +41,10 @@ build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["app"] +[[tool.uv.index]] +url = "https://mirrors.aliyun.com/pypi/simple/" +default = true + [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-q" diff --git a/uv.lock b/uv.lock index f5a0c47..8b90d96 100644 --- a/uv.lock +++ b/uv.lock @@ -1453,6 +1453,7 @@ dependencies = [ { name = "sqlalchemy", extra = ["asyncio"] }, { name = "uvicorn", extra = ["standard"] }, { name = "websockets" }, + { name = "wechatpayv3" }, ] [package.dev-dependencies] @@ -1483,6 +1484,7 @@ requires-dist = [ { name = "sqlalchemy", extras = ["asyncio"], specifier = ">=2.0.30" }, { name = "uvicorn", extras = ["standard"], specifier = ">=0.30.0" }, { name = "websockets", specifier = ">=17.0.1" }, + { name = "wechatpayv3", specifier = ">=2.0.3" }, ] [package.metadata.requires-dev] @@ -2383,6 +2385,19 @@ wheels = [ { url = "https://mirrors.cloud.tencent.com/pypi/packages/41/63/23572870e01836a98346075b9e17a8bc24a6ddd9800a3204ceee58677f3c/websockets-17.1-py3-none-any.whl", hash = "sha256:f221081107b8c48184d99f7019604486376e7ef826037e70aad6b02540732c23" }, ] +[[package]] +name = "wechatpayv3" +version = "2.0.3" +source = { registry = "https://mirrors.cloud.tencent.com/pypi/simple/" } +dependencies = [ + { name = "cryptography" }, + { name = "requests" }, +] +sdist = { url = "https://mirrors.cloud.tencent.com/pypi/packages/56/f6/c7d17fbf2612a1786650dbf2532831af40d2869eb82bd4757386a060640e/wechatpayv3-2.0.3.tar.gz", hash = "sha256:d2221884a1ac703b2bb904f6cdb8aaffa9bb9f41abd3ed1893d4fcd783905ccb" } +wheels = [ + { url = "https://mirrors.cloud.tencent.com/pypi/packages/d1/60/e98049e6de1d66833506f75e478bef7091b3084bd251f7e1360d77ce117b/wechatpayv3-2.0.3-py3-none-any.whl", hash = "sha256:c5fa90fb7e66083e16c6e0d5c5af4489958de183de316c109343a204a29f9587" }, +] + [[package]] name = "wrapt" version = "1.17.3"