gopay (Agent Skills)

GitHub

微信、支付宝、抖音、通联支付、拉卡拉、PayPal、Apple 的Go版本SDK。【极简、易用的聚合支付SDK】

CLAUDE.md

# GoPay 项目说明

## 代码探索约定

探索/索引本项目代码时,**默认优先使用 `codebase-memory` MCP**,未安装则降级到默认工具:

1. **首选**:`mcp__codebase-memory-mcp__*` 工具(若可用)
   - `search_graph` — 按名称/标签/限定名查找函数、类型、路由
   - `trace_path` — 调用链、数据流、跨服务追踪
   - `get_code_snippet` — 按限定名获取精确源码片段
   - `query_graph` — 复杂 Cypher 查询
   - `get_architecture` — 项目结构总览
   - `search_code` — 图增强的文本搜索
   - 项目未索引时,先运行 `index_repository` 建立索引
2. **降级(MCP 未安装/不可用时)**:使用默认工具 `Grep` / `Glob` / `Read` / `Bash`(find、grep)进行文本与文件检索
3. 不管哪种方式,**编辑前必须先 `Read` 目标文件**

## 项目概述

GoPay 是一个 Go 语言的支付 SDK 项目,提供微信、支付宝、QQ、通联支付、拉卡拉、PayPal、扫呗、Apple 支付的统一接口。

- **仓库**: https://github.com/go-pay/gopay
- **Go 版本**: 1.24.0
- **许可证**: Apache 2.0

## 项目结构

```
gopay/
├── alipay/          # 支付宝支付 SDK
├── wechat/          # 微信支付 SDK
├── apple/           # Apple 支付校验
├── paypal/          # PayPal 支付 SDK
├── qq/              # QQ 支付 SDK
├── allinpay/        # 通联支付 SDK
├── lakala/          # 拉卡拉支付 SDK
├── saobei/          # 扫呗支付 SDK
├── pkg/             # 公共包
├── doc/             # 各支付方式文档
└── examples/        # 示例代码
```

## 开发约定

### 代码风格

1. **遵循 Go 标准规范**
   - 使用 `gofmt` 格式化代码
   - 遵循 Go 命名约定(驼峰命名)
   - 导出的函数、类型、常量首字母大写

2. **测试文件**
   - 每个模块都有对应的 `*_test.go` 文件
   - 测试文件包含实际使用示例
   - 建议使用正式环境 1 分钱测试法

3. **日志处理**
   - 使用项目依赖的 `github.com/go-pay/xlog` 包
   - 支持自定义 Logger(实现 `xlog.XLogger` interface)

### 支付平台版本

- **支付宝**: 优先使用 V3 版本
- **微信**: 优先使用 V3 版本(V2 版本不推荐)
- 其他平台参考 `doc/` 目录下的文档

### 重要注意事项

1. **安全性优先**
   - 处理支付相关代码时特别注意安全性
   - 不要在代码中硬编码敏感信息(密钥、证书等)
   - 注意参数验证和签名校验

2. **向后兼容**
   - 这是一个公开的 SDK,修改时注意 API 兼容性
   - 重大变更需要在 `release_note.md` 中记录

3. **文档同步**
   - 新增功能需要更新对应的 `doc/*.md` 文档
   - 保持代码示例和文档的一致性

## 依赖管理

项目使用 Go Modules,主要依赖:
- `github.com/go-pay/crypto` - 加密工具
- `github.com/go-pay/xlog` - 日志工具
- `github.com/go-pay/util` - 通用工具
- `golang.org/x/crypto` - Go 官方加密库

## 参考资源

- 各支付方式文档: `doc/` 目录
- 测试用例: 各模块的 `*_test.go` 文件
- 示例项目: https://github.com/go-pay/gopay-platform