# 支付宝支付功能集成指南 ## 概述 本系统已集成支付宝支付功能,支持PC网站支付和手机网站支付。支付成功后系统会自动生成许可证。 ## 功能特性 - ✅ 支持PC网站支付(电脑端) - ✅ 支持手机网站支付(移动端) - ✅ 支付成功后自动生成许可证 - ✅ 异步通知处理,确保支付状态准确 - ✅ 订单状态实时查询 - ✅ 完整的支付结果页面 ## 依赖安装 ```bash pip install -r requirements.txt ``` 需要安装 `alipay-sdk-python3==3.7.4` ## 配置支付宝参数 ### 1. 获取支付宝应用信息 1. 登录[支付宝开放平台](https://open.alipay.com/) 2. 创建应用(网站支付类型) 3. 获取以下信息: - APP_ID(应用ID) - 应用私钥(APP_PRIVATE_KEY) - 支付宝公钥(ALIPAY_PUBLIC_KEY) - 支付宝平台公钥(ALIPAY_ALIPAY_PUBLIC_KEY) ### 2. 配置环境变量 在生产环境中,建议通过环境变量配置支付宝参数: ```bash export ALIPAY_APP_ID="your_app_id" export ALIPAY_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----" export ALIPAY_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----" export ALIPAY_ALIPAY_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----" ``` ### 3. 配置文件(开发环境) 也可以在 `.env` 文件中配置: ```env ALIPAY_APP_ID=your_app_id ALIPAY_PRIVATE_KEY=-----BEGIN PRIVATE KEY----- your_private_key_content -----END PRIVATE KEY----- ALIPAY_PUBLIC_KEY=-----BEGIN PUBLIC KEY----- your_public_key_content -----END PUBLIC KEY----- ALIPAY_ALIPAY_PUBLIC_KEY=-----BEGIN PUBLIC KEY----- alipay_public_key_content -----END PUBLIC KEY----- ``` ## API接口 ### 1. 创建订单 **接口:** `POST /api/v1/user/orders` **请求参数:** ```json { "product_id": "产品ID", "package_id": "套餐ID", "contact_person": "联系人姓名", "phone": "手机号", "quantity": 1 } ``` **响应示例:** ```json { "success": true, "message": "订单创建成功", "data": { "order_number": "ORD123456789", "amount": 99.00 } } ``` ### 2. 创建支付宝支付 **接口:** `POST /api/v1/user/pay/alipay` **请求参数:** ```json { "order_number": "订单号", "payment_type": "pc" // 或 "wap" } ``` **响应示例:** ```json { "success": true, "message": "支付链接创建成功", "data": { "payment_url": "https://openapi.alipay.com/...", "order_number": "ORD123456789", "amount": 99.00 } } ``` ### 3. 查询订单 **接口:** `GET /api/v1/user/orders/query?order_number=订单号&phone=手机号` **响应示例:** ```json { "success": true, "data": { "order_number": "ORD123456789", "status": 1, "status_name": "已支付", "amount": 99.00, "payment_time": "2024-01-01 12:00:00" } } ``` ### 4. 支付宝异步通知 **接口:** `POST /api/v1/pay/alipay1/user/notify` 支付宝会向此接口发送异步通知,系统会自动处理支付状态更新和许可证生成。 ## 前端页面 ### 1. 购买页面 用户访问 `/user/licenses/purchase` 页面购买许可证。 页面功能: - 选择产品和套餐 - 填写联系信息 - 选择支付方式(支付宝/微信) - 创建订单并跳转到支付 ### 2. 支付结果页面 支付完成后跳转到 `/payment/result?order_number=订单号` 页面功能: - 显示支付结果 - 显示订单信息 - 显示生成的许可证密钥 - 支持复制许可证密钥 ## 支付流程 ``` 用户选择产品 → 创建订单 → 创建支付链接 → 跳转到支付宝 → 支付完成 ↓ 生成许可证 ← 更新订单状态 ← 支付宝异步通知 ← ← ← ← ← ← ← ← ← ← ← ← ← ← ``` ## 重要说明 ### 1. 异步通知处理 支付宝异步通知是支付状态更新的主要方式,系统会: - 验证通知的签名 - 检查订单状态 - 更新订单状态为"已支付" - 自动生成许可证 - 记录操作日志 ### 2. 支付链接生成 根据客户端类型自动选择支付方式: - PC端:使用 `alipay.trade.page.pay` 接口 - 移动端:使用 `alipay.trade.wap.pay` 接口 ### 3. 许可证生成 支付成功后系统会自动: - 查询订单信息 - 根据套餐配置生成许可证 - 设置有效期和最大设备数 - 保存许可证到数据库 ## 错误处理 ### 1. 常见错误 | 错误信息 | 原因 | 解决方法 | |---------|------|----------| | 支付配置错误 | 支付宝参数未配置 | 检查环境变量和配置文件 | | 订单不存在 | 订单号错误 | 检查订单号是否正确 | | 套餐库存不足 | 套餐库存为0 | 联系管理员补充库存 | | 订单金额不匹配 | 金额被篡改 | 检查订单和支付金额 | ### 2. 日志查看 系统会在 `logs/kamaxitong.log` 中记录: - 订单创建日志 - 支付流程日志 - 支付宝通知日志 - 许可证生成日志 ## 安全建议 1. **生产环境配置** - 使用HTTPS协议 - 设置 `SESSION_COOKIE_SECURE=True` - 定期更换密钥 2. **签名验证** - 系统会自动验证支付宝通知签名 - 签名验证失败的通知会被拒绝 3. **订单金额验证** - 系统会验证通知中的金额与订单金额一致 - 不匹配的订单会被拒绝 ## 故障排除 ### 1. 支付链接无法打开 **可能原因:** - 支付宝配置错误 - 订单状态不正确 - 支付金额格式错误 **解决方法:** - 检查支付宝配置 - 确认订单状态为"待支付" - 检查订单金额是否为有效数字 ### 2. 支付成功但订单状态未更新 **可能原因:** - 异步通知未收到 - 异步通知处理失败 **解决方法:** - 查看日志文件,检查异步通知记录 - 可以通过订单查询接口手动检查状态 - 联系支付宝客服查询支付记录 ### 3. 许可证未生成 **可能原因:** - 许可证生成逻辑出错 - 数据库连接异常 **解决方法:** - 查看日志文件中的错误信息 - 检查数据库连接 - 手动重新触发许可证生成(需要管理员操作) ## 技术支持 如有技术问题,请: 1. 查看日志文件:`logs/kamaxitong.log` 2. 检查支付宝配置是否正确 3. 确认网络连接和防火墙设置 4. 联系开发团队 ## 更新日志 ### v1.0.0 (2024-12-11) - 初始版本 - 支持支付宝PC网站支付和手机网站支付 - 自动生成许可证 - 异步通知处理 - 支付结果页面