284 lines
5.6 KiB
Markdown
284 lines
5.6 KiB
Markdown
|
|
# 支付宝支付功能测试指南
|
|||
|
|
|
|||
|
|
## 测试环境准备
|
|||
|
|
|
|||
|
|
### 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. 及时处理异常订单
|