# 支付宝第三方接口API测试文档 ## 测试环境准备 ### 1. 启动支付模块服务 ```bash cd dryad-payment mvn spring-boot:run ``` 服务默认端口:`8080`(根据实际配置调整) ## 接口测试 ### 接口信息 - **请求地址**: `POST http://localhost:8080/api/pay/alipay/thirdparty/precreate` - **Content-Type**: `application/json` ### Postman测试步骤 #### 1. 创建新请求 - 方法:`POST` - URL:`http://localhost:8080/api/pay/alipay/thirdparty/precreate` #### 2. 设置请求头 ``` Content-Type: application/json ``` #### 3. 设置请求体(Body -> raw -> JSON) ```json { "bizOrderId": "BF20250012-1", "amount": 10000, "subject": "急救转运服务费", "description": "急救转运任务支付", "callbackUrl": "https://dsp.966120.com.cn/alipay/pay_notify" } ``` #### 4. 发送请求 预期响应: ```json { "code": 200, "msg": "操作成功", "data": { "orderId": 1234567890123456789, "transactionId": 9876543210987654321, "status": "PENDING", "qrBase64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...", "expireAt": "2025-11-24T18:00:00" } } ``` ## cURL测试命令 ### 基本测试 ```bash curl --location --request POST 'http://localhost:8080/api/pay/alipay/thirdparty/precreate' \ --header 'Content-Type: application/json' \ --data-raw '{ "bizOrderId": "BF20250012-1", "amount": 10000, "subject": "急救转运服务费", "description": "急救转运任务支付", "callbackUrl": "https://dsp.966120.com.cn/alipay/pay_notify" }' ``` ### 测试不同金额 ```bash # 测试1元(100分) curl --location --request POST 'http://localhost:8080/api/pay/alipay/thirdparty/precreate' \ --header 'Content-Type: application/json' \ --data-raw '{ "bizOrderId": "TEST001", "amount": 100, "subject": "测试订单", "description": "测试1元支付", "callbackUrl": "https://dsp.966120.com.cn/alipay/pay_notify" }' ``` ## 测试场景 ### 场景1:正常支付流程 1. 发送支付请求 2. 获取订单ID和二维码 3. 前端展示二维码 4. 用户扫码支付 5. 接收支付回调通知 ### 场景2:重复订单测试 ```bash # 第一次请求 curl --location --request POST 'http://localhost:8080/api/pay/alipay/thirdparty/precreate' \ --header 'Content-Type: application/json' \ --data-raw '{ "bizOrderId": "DUPLICATE_TEST_001", "amount": 100, "subject": "重复订单测试", "callbackUrl": "https://dsp.966120.com.cn/alipay/pay_notify" }' # 第二次请求(相同bizOrderId)- 应该返回相同的订单信息 curl --location --request POST 'http://localhost:8080/api/pay/alipay/thirdparty/precreate' \ --header 'Content-Type: application/json' \ --data-raw '{ "bizOrderId": "DUPLICATE_TEST_001", "amount": 100, "subject": "重复订单测试", "callbackUrl": "https://dsp.966120.com.cn/alipay/pay_notify" }' ``` ### 场景3:参数校验测试 #### 缺少必填参数 ```bash curl --location --request POST 'http://localhost:8080/api/pay/alipay/thirdparty/precreate' \ --header 'Content-Type: application/json' \ --data-raw '{ "bizOrderId": "TEST001", "subject": "测试订单" }' ``` 预期:返回400错误,提示"金额不能为空" #### 金额为0 ```bash curl --location --request POST 'http://localhost:8080/api/pay/alipay/thirdparty/precreate' \ --header 'Content-Type: application/json' \ --data-raw '{ "bizOrderId": "TEST001", "amount": 0, "subject": "测试订单", "callbackUrl": "https://dsp.966120.com.cn/alipay/pay_notify" }' ``` 预期:返回400错误,提示"金额必须大于0" ## 查询订单接口测试 ### 根据订单ID查询 ```bash curl --location --request GET 'http://localhost:8080/api/pay/orders/{orderId}' ``` 示例: ```bash curl --location --request GET 'http://localhost:8080/api/pay/orders/1234567890123456789' ``` ### 查询最新交易记录 ```bash curl --location --request GET 'http://localhost:8080/api/pay/orders/{orderId}/transactions/latest' ``` 示例: ```bash curl --location --request GET 'http://localhost:8080/api/pay/orders/1234567890123456789/transactions/latest' ``` ## 第三方接口直接测试 如果需要单独测试第三方接口是否可用: ```bash curl --location --request POST 'https://sys.966120.com.cn/alipay_pay_QR_NotifyUrl.php' \ --header 'Cookie: CAMEName=' \ --form 'notify_url="https://dsp.966120.com.cn/alipay/pay_notify"' \ --form 'out_trade_no="T202511240001"' \ --form 'total_fee="10000"' \ --form 'ServiceOrdID="BF20250012-1"' ``` ## 日志查看 查看服务日志,关注以下关键日志: ``` # 接口调用 发起支付宝当面付(第三方接口),请求参数: {...} # 第三方接口调用 调用第三方支付宝当面付接口,订单号: xxx, 金额: xxx分, 业务订单ID: xxx 发送请求到第三方接口: https://sys.966120.com.cn/alipay_pay_QR_NotifyUrl.php # 第三方接口响应 第三方接口响应,状态码: 200, 响应内容: xxx 第三方支付宝当面付URL生成成功: xxx # 订单创建成功 支付宝当面付(第三方接口)创建成功,订单ID: xxx, 交易ID: xxx ``` ## 常见问题排查 ### 1. 第三方接口调用失败 - 检查网络连接 - 验证第三方接口是否可访问 - 检查请求参数格式是否正确 ### 2. 未返回有效的支付URL - 检查第三方接口返回内容 - 调整 `parseQrCodeUrl()` 方法以适配实际返回格式 ### 3. 二维码生成失败 - 检查支付URL格式是否正确 - 验证ZXing库是否正常工作 ## 数据库验证 ### 查询订单表 ```sql SELECT * FROM pay_order WHERE biz_order_id = 'BF20250012-1' ORDER BY created_at DESC; ``` ### 查询交易表 ```sql SELECT * FROM pay_transaction WHERE order_id = '订单ID' ORDER BY created_at DESC; ``` ## 性能测试 ### 并发测试(使用Apache Bench) ```bash # 100个请求,10个并发 ab -n 100 -c 10 -p payload.json -T application/json \ http://localhost:8080/api/pay/alipay/thirdparty/precreate ``` payload.json: ```json { "bizOrderId": "PERF_TEST_${RANDOM}", "amount": 100, "subject": "性能测试", "callbackUrl": "https://dsp.966120.com.cn/alipay/pay_notify" } ``` ## 前端集成示例 ### HTML + JavaScript ```html 支付宝支付测试

支付宝支付测试

``` ## 环境配置检查清单 - [ ] 支付模块服务已启动 - [ ] 数据库连接正常 - [ ] 第三方接口可访问 - [ ] 回调地址已配置 - [ ] 日志级别设置为DEBUG(开发环境) - [ ] 网络防火墙允许访问第三方接口 ## 下一步 测试通过后,可以进行以下工作: 1. 集成到主应用中 2. 完善错误处理 3. 添加监控和告警 4. 性能优化 5. 安全加固