5.6 KiB
5.6 KiB
支付宝支付功能测试指南
测试环境准备
1. 安装依赖
pip install -r requirements.txt
2. 初始化数据库
flask db upgrade
3. 创建测试数据
在管理后台创建:
- 测试产品
- 测试套餐
- 设置套餐库存
测试步骤
1. 配置支付宝沙箱环境(推荐)
使用支付宝沙箱环境进行测试:
- 登录支付宝开放平台
- 进入沙箱环境
- 创建应用并获取测试参数
- 配置环境变量:
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. 测试支付流程
- 访问购买页面:
http://localhost:5000/user/licenses/purchase - 选择产品和套餐
- 填写联系信息
- 点击"立即支付"
- 在支付宝沙箱环境中完成支付
- 查看支付结果页面
功能测试检查清单
✅ 订单创建
- 订单成功写入数据库
- 订单号生成正确
- 订单金额计算正确
- 库存检查正常
✅ 支付链接生成
- 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
性能测试
并发测试
使用工具如 ab 或 wrk 进行并发测试:
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. 订单重复通知测试
- 多次发送相同的异步通知
- 验证订单状态是否正确处理
- 检查重复通知不会重复生成许可证
总结
完成以上测试后,支付宝支付功能即可投入使用。在生产环境中,请注意:
- 使用HTTPS协议
- 定期备份数据库
- 监控日志文件
- 定期检查订单状态
- 及时处理异常订单