# 支付宝支付功能测试指南 ## 测试环境准备 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 初始化数据库 ```bash flask db upgrade ``` ### 3. 创建测试数据 在管理后台创建: - 测试产品 - 测试套餐 - 设置套餐库存 ## 测试步骤 ### 1. 配置支付宝沙箱环境(推荐) **使用支付宝沙箱环境进行测试:** 1. 登录[支付宝开放平台](https://open.alipay.com/) 2. 进入沙箱环境 3. 创建应用并获取测试参数 4. 配置环境变量: ```bash export ALIPAY_APP_ID="沙箱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-----" export ALIPAY_GATEWAY="https://openapi.alipaydev.com/gateway.do" ``` ### 2. 测试订单创建 **API测试:** ```bash curl -X POST http://localhost:5000/api/v1/user/orders \ -H "Content-Type: application/json" \ -d '{ "product_id": "产品ID", "package_id": "套餐ID", "contact_person": "测试用户", "phone": "13800138000", "quantity": 1 }' ``` **预期响应:** ```json { "success": true, "message": "订单创建成功", "data": { "order_number": "ORD123456789", "amount": 99.00 } } ``` ### 3. 测试支付宝支付 **API测试:** ```bash curl -X POST http://localhost:5000/api/v1/user/pay/alipay \ -H "Content-Type: application/json" \ -d '{ "order_number": "ORD123456789", "payment_type": "pc" }' ``` **预期响应:** ```json { "success": true, "message": "支付链接创建成功", "data": { "payment_url": "https://openapi.alipaydev.com/gateway.do?...", "order_number": "ORD123456789", "amount": 99.00 } } ``` ### 4. 测试支付结果页面 **浏览器访问:** ``` http://localhost:5000/payment/result?order_number=ORD123456789 ``` **预期结果:** - 显示"正在处理..."页面 - 订单信息正确显示 - 每3秒自动查询一次订单状态 ### 5. 测试支付流程 1. 访问购买页面:`http://localhost:5000/user/licenses/purchase` 2. 选择产品和套餐 3. 填写联系信息 4. 点击"立即支付" 5. 在支付宝沙箱环境中完成支付 6. 查看支付结果页面 ## 功能测试检查清单 ### ✅ 订单创建 - [ ] 订单成功写入数据库 - [ ] 订单号生成正确 - [ ] 订单金额计算正确 - [ ] 库存检查正常 ### ✅ 支付链接生成 - [ ] PC端支付链接生成正常 - [ ] 移动端支付链接生成正常 - [ ] 支付参数正确传递 - [ ] 异步通知URL配置正确 ### ✅ 支付宝异步通知 - [ ] 收到支付宝通知 - [ ] 签名验证通过 - [ ] 订单状态更新 - [ ] 许可证生成 - [ ] 操作日志记录 ### ✅ 支付结果页面 - [ ] 支付成功页面显示正确 - [ ] 许可证密钥显示正确 - [ ] 支付成功信息显示正确 - [ ] 复制功能正常 ### ✅ 订单查询 - [ ] 能够查询订单状态 - [ ] 订单信息显示正确 - [ ] 状态流转正确 ## 常见问题排查 ### 1. 订单创建失败 **检查项:** - [ ] 产品和套餐是否存在 - [ ] 套餐是否启用 - [ ] 套餐库存是否充足 - [ ] 数据库连接是否正常 ### 2. 支付链接生成失败 **检查项:** - [ ] 支付宝配置是否正确 - [ ] 订单是否存在 - [ ] 订单状态是否为"待支付" - [ ] 日志文件是否有错误信息 ### 3. 异步通知未收到 **检查项:** - [ ] 异步通知URL是否可访问 - [ ] 防火墙是否拦截 - [ ] 支付宝配置是否正确 - [ ] 日志文件中是否有通知记录 ### 4. 许可证未生成 **检查项:** - [ ] 异步通知是否正常处理 - [ ] LicenseGenerator类是否正常 - [ ] 数据库连接是否正常 - [ ] 日志文件是否有错误信息 ## 测试数据 ### 示例订单数据 ```json { "product_id": "PROD_TEST_001", "package_id": "PKG_MONTHLY", "contact_person": "测试用户", "phone": "13800138000", "quantity": 1 } ``` ### 示例套餐数据 ```json { "name": "月卡套餐", "price": 99.00, "duration": 30, "max_devices": 3, "stock": 100 } ``` ## 日志查看 ### 实时查看日志 ```bash tail -f logs/kamaxitong.log ``` ### 搜索特定订单日志 ```bash grep "ORD123456789" logs/kamaxitong.log ``` ### 搜索支付宝通知日志 ```bash grep "ALIPAY_NOTIFY" logs/kamaxitong.log ``` ## 性能测试 ### 并发测试 使用工具如 `ab` 或 `wrk` 进行并发测试: ```bash ab -n 100 -c 10 -H "Content-Type: application/json" \ -p test_data.json \ http://localhost:5000/api/v1/user/orders ``` ### 数据库压力测试 检查数据库连接池配置: ```python # config.py SQLALCHEMY_ENGINE_OPTIONS = { "pool_size": 10, # 连接池大小 "max_overflow": 20, # 最大溢出连接数 "pool_recycle": 3600, # 连接回收时间 } ``` ## 安全测试 ### 1. 签名验证测试 - 修改异步通知参数 - 验证签名验证是否正常 - 检查非法通知是否被拒绝 ### 2. 金额篡改测试 - 修改异步通知中的金额 - 验证金额检查是否正常 - 检查篡改金额的订单是否被拒绝 ### 3. 订单重复通知测试 - 多次发送相同的异步通知 - 验证订单状态是否正确处理 - 检查重复通知不会重复生成许可证 ## 总结 完成以上测试后,支付宝支付功能即可投入使用。在生产环境中,请注意: 1. 使用HTTPS协议 2. 定期备份数据库 3. 监控日志文件 4. 定期检查订单状态 5. 及时处理异常订单