# PayPal 支付功能测试步骤 本文档提供了测试 PayPal 支付功能的步骤,包括配置测试、支付流程测试和退款测试。 ## 准备工作 1. 确保已完成 PayPal 开发者账号注册和沙盒环境配置(参考 `paypal-developer-account-setup.md`) 2. 确保已安装 PayPal PHP SDK 并完成代码集成 3. 确保已配置 `.env` 文件中的 PayPal 相关环境变量(参考 `paypal-env-example.md`) 4. 准备好沙盒测试账号(商家账号和个人账号)的登录信息 ## 测试步骤 ### 1. 配置测试 1. 登录管理后台 2. 进入支付配置页面 3. 选择 PayPal 支付方式 4. 输入以下信息: - Client ID(使用沙盒应用的 Client ID) - Client Secret(使用沙盒应用的 Secret) - 勾选"沙盒模式" - 输入 Webhook ID - 勾选"启用" 5. 保存配置 6. 检查配置是否保存成功 **预期结果**:配置保存成功,PayPal 支付方式显示为已启用。 ### 2. 前端支付方式显示测试 1. 登录前端商城 2. 将商品添加到购物车 3. 进入结算页面 4. 查看支付方式列表 **预期结果**:支付方式列表中显示 PayPal 选项。 ### 3. 基本支付流程测试 1. 在前端商城创建一个测试订单 2. 选择 PayPal 支付方式 3. 点击"支付"按钮 4. 系统应该重定向到 PayPal 登录页面 5. 使用沙盒个人账号登录 PayPal 6. 确认支付信息 7. 点击"同意并继续"按钮 8. 系统应该重定向回商城并显示支付成功页面 **预期结果**: - 支付成功 - 订单状态更新为已支付 - 交易记录正确保存在数据库中 ### 4. 取消支付测试 1. 在前端商城创建一个测试订单 2. 选择 PayPal 支付方式 3. 点击"支付"按钮 4. 系统重定向到 PayPal 登录页面 5. 使用沙盒个人账号登录 PayPal 6. 在 PayPal 支付页面点击"取消并返回"链接 **预期结果**: - 系统重定向回商城并显示支付取消页面 - 订单状态保持为未支付 ### 5. 退款测试 1. 登录管理后台 2. 找到一个已使用 PayPal 支付的订单 3. 进入订单详情页面 4. 点击"退款"按钮 5. 输入退款金额(可以是部分退款或全额退款) 6. 提交退款请求 **预期结果**: - 退款成功 - 订单状态更新为已退款或部分退款 - 退款记录正确保存在数据库中 ### 6. Webhook 测试 1. 登录 PayPal 开发者控制台 2. 进入您的应用详情页面 3. 找到"Webhooks"部分 4. 点击"Simulator"按钮 5. 选择事件类型(如 PAYMENT.SALE.COMPLETED) 6. 输入相关参数 7. 点击"Send test webhook"按钮 **预期结果**: - 系统正确接收 Webhook 请求 - 系统验证 Webhook 签名 - 系统根据事件类型执行相应的业务逻辑 - 日志中记录 Webhook 处理过程 ## 问题排查 如果测试过程中遇到问题,请检查以下内容: 1. **支付创建失败**: - 检查 PayPal 配置是否正确(Client ID 和 Secret) - 查看日志文件 `storage/logs/paypal.log` 获取详细错误信息 2. **回调处理失败**: - 确保回调 URL 可以从外网访问 - 检查 PayerID 和 PaymentID 是否正确传递 3. **Webhook 验证失败**: - 确保 Webhook ID 配置正确 - 检查 Webhook URL 是否可以从外网访问 - 验证请求头中的签名信息是否完整 4. **支付成功但订单状态未更新**: - 检查数据库中的交易记录 - 查看日志文件,确认支付回调是否正确处理 ## 测试记录 | 测试项目 | 测试日期 | 测试结果 | 备注 | |---------|---------|---------|------| | 配置测试 | | | | | 前端支付方式显示 | | | | | 基本支付流程 | | | | | 取消支付 | | | | | 退款测试 | | | | | Webhook 测试 | | | | ## 注意事项 1. 所有测试应先在沙盒环境中完成,确认无误后再在生产环境中进行 2. 在生产环境中进行测试时,建议使用小额交易 3. 记录所有测试过程和结果,以便后续分析和改进