- 配置PayPal Webhook URL和Webhook ID用于支付回调处理 - 移除PayPal对CNY和MYR货币的支持,添加特殊转换处理逻辑 - 实现用户信息获取、更新和密码修改的API接口 - 添加Token验证和用户身份认证机制 - 实现用户信息更新时的手机号和邮箱唯一性校验 - 添加密码修改时的旧密码验证功能
3.3 KiB
3.3 KiB
PayPal Webhook 配置说明
内网穿透配置
当前使用内网穿透服务(cpolar)将本地服务暴露到公网:
- 内网地址:
http://localhost:8082 - 公网地址:
https://2646b437.r33.cpolar.top - Webhook URL:
https://2646b437.r33.cpolar.top/api/paypal/webhook
配置文件
Webhook URL 已配置在 application-dev.yml 中:
paypal:
webhook-url: https://2646b437.r33.cpolar.top/api/paypal/webhook
PayPal 控制台配置步骤
-
登录 PayPal 开发者控制台
- 沙箱环境:https://developer.paypal.com/dashboard/
- 使用你的 PayPal 开发者账号登录
-
选择应用
- 进入 "My Apps & Credentials"
- 选择你的沙箱应用(Sandbox App)
-
配置 Webhook
- 在应用详情页面,找到 "Webhooks" 部分
- 点击 "Add Webhook" 或 "Edit Webhook"
- 输入 Webhook URL:
https://2646b437.r33.cpolar.top/api/paypal/webhook - 选择要监听的事件类型:
PAYMENT.CAPTURE.COMPLETED- 支付捕获完成PAYMENT.CAPTURE.DENIED- 支付捕获被拒绝PAYMENT.CAPTURE.REFUNDED- 支付退款CHECKOUT.ORDER.APPROVED- 订单已批准CHECKOUT.ORDER.COMPLETED- 订单已完成CHECKOUT.ORDER.CANCELLED- 订单已取消
- 保存配置
-
获取 Webhook ID
- 配置完成后,PayPal 会生成一个 Webhook ID
- 将此 Webhook ID 配置到
application-dev.yml中的paypal.webhook-id
注意事项
-
内网穿透地址变化
- 免费版 cpolar 的地址可能会变化
- 如果地址变化,需要:
- 更新
application-dev.yml中的webhook-url - 在 PayPal 控制台更新 Webhook URL
- 更新
-
HTTPS 要求
- PayPal Webhook 要求使用 HTTPS
- cpolar 提供的地址默认支持 HTTPS
-
测试 Webhook
- 在 PayPal 控制台可以测试 Webhook
- 选择 "Send test event" 发送测试事件
- 检查后端日志确认是否收到事件
-
生产环境
- 生产环境需要使用固定的域名
- 建议使用自己的域名配置 SSL 证书
- 更新
application-prod.yml中的webhook-url
验证配置
启动应用后,查看日志中的 PayPal 配置信息:
═══════════════════════════════════════════════════════════
PayPal配置加载验证:
- Client ID: ✅ 已配置 (...)
- Client Secret: ✅ 已配置 (...)
- Mode: sandbox
- Enabled: true
- Base URL: https://api-m.sandbox.paypal.com
- Webhook URL: ✅ https://2646b437.r33.cpolar.top/api/paypal/webhook
═══════════════════════════════════════════════════════════
如果 Webhook URL 显示为 "❌ 未配置",请检查配置文件。
后端接口
Webhook 回调接口路径:/api/paypal/webhook
- 方法: POST
- 路径:
/api/paypal/webhook - 完整URL:
https://2646b437.r33.cpolar.top/api/paypal/webhook
前端配置
前端不需要修改,因为:
- 前端使用
window.location.origin自动获取当前域名 - 用户访问的是前端地址,不是后端地址
- 支付成功/取消回调使用前端路由,不涉及 Webhook