寻找相关记账的模板,配合使用效果更佳哦。
没有使用WeChat Pay以及Alipay的官方API)微信支付和支付宝官方API仅仅对商户开放使用,普通人目前无法使用。
详情点击:
简介-接口规则 | 微信支付商户平台文档中心
查询账单接口 - 支付宝文档中心 (alipay.com)
灵感来源于少数派的这篇文章,感谢少数派提供的思路。
微信或支付宝软件中手动点击获取账单,随后微信或支付宝把账单下载链接发送至邮箱,解压密码发送至微信或支付宝。
然后我在把微信或者支付宝的解压密码,自己邮箱发送给自己邮箱。
随后本项目中代码实现从邮箱中下载压缩包,解压,复制转移,格式化成标准csv文件,数据处理,最后利用Notion API上传。
对于用户而言,配置好.env中的各种参数,
最后运行本项目的main.py函数,就可实现账单上传。
-
开通某个邮箱的IMAP协议,请自行互联网搜寻。
-
这里给163邮箱的开通流程作为示例,帮助中心_常见问题IMAP (163.com)
-
这里给出QQ邮箱示例,QQ邮箱开通IMAP步骤
-
导出账单,发送至邮箱
-
拷贝示例数据库,建议
duplicate此账单导入Notion模板,熟悉之后可自行修改 -
内部集成认证流程设置
Notion Integration
可以参考官方文档Internal integration auth flow set-up
键入
https://www.notion.so/profile/integrations
-
配置环境
- python版本 >= 3.8(粗略的, 未测试过更低版本)
- IDE, 如VSCode, PyCharm等
- Docker(可选, 如果使用Docker部署, 暂时没上线)
-
下载本项目
注意本项目没有release, 需要自行下载所有代码。
git clone https://github.com/tsinglinrain/WeChatPay_to_Notion.git
或者
下载本项目代码,右上角点击绿色的"code"按钮,选择"Download ZIP"下载压缩包,然后解压。
-
安装所需库
进入文件夹,注意如果是压缩包一定是解压过的。
pip install -r requirements.txt
-
环境变量配置: 使用环境变量配置
本项目现在支持环境变量配置,更适合Docker部署:
-
复制环境变量模板文件
windows下复制粘贴
.env.template,把文件名改成.env或者Linux下
cp .env.template .env
-
编辑
.env文件,填入您的配置信息[email protected] EMAIL_PASSWORD=your_email_password EMAIL_IMAP_URL=imap.example.com NOTION_DATABASE_ID=your_notion_database_id NOTION_TOKEN=your_notion_token
-
data_source_id获取请注意,Notion在2025年9月3日发布了新版本的Notion API, 新增data source的理念。简单来说, 现在database数据库的概念是能够包含多个数据源data source的容器, data source不能单独存在,必须依赖database这个容器来展现。 所以我们现在需要对数据源data source进行内容的填充。 具体获取方式请先参看官方链接。
-
-
账单发送到邮箱后,会有消息告知密码。请复制此密码,自己邮箱发送密码给自己,格式必须如下:(110110只是示例,图片中的也只是示例,输入自己的微信支付那个服务号发过来的和支付宝服务消息发过来解压密码)
wechatpay解压密码110110 alipay解压密码110110格式具体示例
即自己发给自己且标题必须形为
alipay解压密码123456或者wechatpay解压密码123456,原因是代码规定如此,改了必报错。def get_passwd(self): # 检查邮件发件邮箱是否是自己的邮箱 flag = False if self.from_addr == self.username: print("Subject,from get_passwd:", self.subject) if self.payment_platform == "alipay": if re.match("^alipay解压密码[0-9]{6}$", self.subject): print("Subject:", self.subject) self.paswd = self.subject[-6:] print("Password:", self.paswd) flag = True elif self.payment_platform == "wechatpay": if re.match("^wechatpay解压密码[0-9]{6}$", self.subject): print("Subject:", self.subject) self.paswd = self.subject[-6:] print("Password:", self.paswd) flag = True return flag
-
运行
main.pypython main.py
然后根据提示选择,输入
0表示导入微信支付账单,输入1表示导入支付宝账单。输入2代表全部。暂时不支持异步,后续会支持的。
-
使用 docker compose(推荐)
# 1. 确保已配置 .env 文件 cp .env.template .env # 编辑 .env 文件填入配置信息 # 2. 构建并运行 docker compose up --build
-
直接使用 Docker
# 构建镜像 docker build -t wechatpay-to-notion . # 运行容器 docker run --rm \ -e EMAIL_USERNAME="[email protected]" \ -e EMAIL_PASSWORD="your_email_password" \ -e EMAIL_IMAP_URL="imap.example.com" \ -e NOTION_DATA_SOURCE_ID="your_notion_data_source_id" \ -e NOTION_TOKEN="your_notion_token" \ -v $(pwd)/attachment:/app/attachment \ -v $(pwd)/bill_csv_raw:/app/bill_csv_raw \ wechatpay-to-notion
pass
-
Linux环境下自动化 -
导入成功后邮件返回提醒
-
可以设置每月自动导出提醒





