Kamixitong/docs/testing_guide.md
2025-12-12 11:35:14 +08:00

5.6 KiB
Raw Permalink Blame History

支付宝支付功能测试指南

测试环境准备

1. 安装依赖

pip install -r requirements.txt

2. 初始化数据库

flask db upgrade

3. 创建测试数据

在管理后台创建:

  • 测试产品
  • 测试套餐
  • 设置套餐库存

测试步骤

1. 配置支付宝沙箱环境(推荐)

使用支付宝沙箱环境进行测试:

  1. 登录支付宝开放平台
  2. 进入沙箱环境
  3. 创建应用并获取测试参数
  4. 配置环境变量:
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测试

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
  }'

预期响应:

{
    "success": true,
    "message": "订单创建成功",
    "data": {
        "order_number": "ORD123456789",
        "amount": 99.00
    }
}

3. 测试支付宝支付

API测试

curl -X POST http://localhost:5000/api/v1/user/pay/alipay \
  -H "Content-Type: application/json" \
  -d '{
    "order_number": "ORD123456789",
    "payment_type": "pc"
  }'

预期响应:

{
    "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类是否正常
  • 数据库连接是否正常
  • 日志文件是否有错误信息

测试数据

示例订单数据

{
    "product_id": "PROD_TEST_001",
    "package_id": "PKG_MONTHLY",
    "contact_person": "测试用户",
    "phone": "13800138000",
    "quantity": 1
}

示例套餐数据

{
    "name": "月卡套餐",
    "price": 99.00,
    "duration": 30,
    "max_devices": 3,
    "stock": 100
}

日志查看

实时查看日志

tail -f logs/kamaxitong.log

搜索特定订单日志

grep "ORD123456789" logs/kamaxitong.log

搜索支付宝通知日志

grep "ALIPAY_NOTIFY" logs/kamaxitong.log

性能测试

并发测试

使用工具如 abwrk 进行并发测试:

ab -n 100 -c 10 -H "Content-Type: application/json" \
   -p test_data.json \
   http://localhost:5000/api/v1/user/orders

数据库压力测试

检查数据库连接池配置:

# config.py
SQLALCHEMY_ENGINE_OPTIONS = {
    "pool_size": 10,        # 连接池大小
    "max_overflow": 20,     # 最大溢出连接数
    "pool_recycle": 3600,   # 连接回收时间
}

安全测试

1. 签名验证测试

  • 修改异步通知参数
  • 验证签名验证是否正常
  • 检查非法通知是否被拒绝

2. 金额篡改测试

  • 修改异步通知中的金额
  • 验证金额检查是否正常
  • 检查篡改金额的订单是否被拒绝

3. 订单重复通知测试

  • 多次发送相同的异步通知
  • 验证订单状态是否正确处理
  • 检查重复通知不会重复生成许可证

总结

完成以上测试后,支付宝支付功能即可投入使用。在生产环境中,请注意:

  1. 使用HTTPS协议
  2. 定期备份数据库
  3. 监控日志文件
  4. 定期检查订单状态
  5. 及时处理异常订单