# 支付接入功能配置说明 ## 功能概述 本项目已成功集成支付宝和PayPal两种支付方式,提供完整的支付解决方案。 ## 支付方式 ### 1. 支付宝 (Alipay) - **适用场景**: 中国大陆用户 - **支持货币**: 人民币 (CNY) - **支付流程**: 网页支付 - **回调机制**: 异步通知 + 同步返回 ### 2. PayPal - **适用场景**: 国际用户 - **支持货币**: 美元 (USD)、欧元 (EUR) 等 - **支付流程**: PayPal账户支付 - **回调机制**: Webhook通知 + 同步返回 ## 配置参数 ### 开发环境配置 (application-dev.properties) ```properties # 支付宝配置 (开发环境) alipay.app-id=your_app_id alipay.private-key=your_private_key alipay.public-key=your_public_key alipay.gateway-url=https://openapi.alipaydev.com/gateway.do alipay.charset=UTF-8 alipay.sign-type=RSA2 alipay.notify-url=http://localhost:8080/payment/alipay/notify alipay.return-url=http://localhost:8080/payment/alipay/return # PayPal配置 (开发环境) paypal.client-id=your_paypal_client_id paypal.client-secret=your_paypal_client_secret paypal.mode=sandbox paypal.return-url=http://localhost:8080/payment/paypal/return paypal.cancel-url=http://localhost:8080/payment/paypal/cancel ``` ### 生产环境配置 (application-prod.properties) ```properties # 支付宝配置 (生产环境) alipay.app-id=${ALIPAY_APP_ID} alipay.private-key=${ALIPAY_PRIVATE_KEY} alipay.public-key=${ALIPAY_PUBLIC_KEY} alipay.gateway-url=https://openapi.alipay.com/gateway.do alipay.charset=UTF-8 alipay.sign-type=RSA2 alipay.notify-url=${ALIPAY_NOTIFY_URL} alipay.return-url=${ALIPAY_RETURN_URL} # PayPal配置 (生产环境) paypal.client-id=${PAYPAL_CLIENT_ID} paypal.client-secret=${PAYPAL_CLIENT_SECRET} paypal.mode=live paypal.return-url=${PAYPAL_RETURN_URL} paypal.cancel-url=${PAYPAL_CANCEL_URL} ``` ## 数据库表结构 ### payments 表 ```sql CREATE TABLE payments ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_id VARCHAR(50) NOT NULL UNIQUE, amount DECIMAL(10,2) NOT NULL, currency VARCHAR(3) NOT NULL DEFAULT 'CNY', payment_method VARCHAR(20) NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'PENDING', description VARCHAR(500), external_transaction_id VARCHAR(100), callback_url VARCHAR(1000), return_url VARCHAR(1000), created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, paid_at TIMESTAMP NULL, user_id BIGINT, FOREIGN KEY (user_id) REFERENCES users(id) ); ``` ## API 端点 ### 支付相关端点 - `GET /payment/create` - 显示支付表单 - `POST /payment/create` - 创建支付订单 - `GET /payment/history` - 支付记录列表 - `GET /payment/detail/{id}` - 支付详情 ### 支付宝回调端点 - `POST /payment/alipay/notify` - 异步通知 - `GET /payment/alipay/return` - 同步返回 ### PayPal回调端点 - `GET /payment/paypal/return` - 支付返回 - `GET /payment/paypal/cancel` - 支付取消 - `POST /payment/paypal/webhook` - Webhook通知 ## 支付状态 - `PENDING` - 待支付 - `PROCESSING` - 处理中 - `SUCCESS` - 支付成功 - `FAILED` - 支付失败 - `CANCELLED` - 已取消 - `REFUNDED` - 已退款 ## 使用说明 ### 1. 配置支付参数 在 `application-dev.properties` 中配置您的支付参数: - 支付宝:需要申请支付宝开放平台应用 - PayPal:需要申请PayPal开发者账户 ### 2. 启动应用 ```bash mvn spring-boot:run ``` ### 3. 访问支付功能 - 登录后访问 `/payment/create` 创建支付 - 访问 `/payment/history` 查看支付记录 ## 安全注意事项 1. **密钥管理**: 生产环境使用环境变量存储敏感信息 2. **签名验证**: 所有回调都进行签名验证 3. **HTTPS**: 生产环境必须使用HTTPS 4. **权限控制**: 用户只能查看自己的支付记录 ## 测试建议 1. **支付宝测试**: 使用支付宝沙箱环境进行测试 2. **PayPal测试**: 使用PayPal沙箱模式进行测试 3. **回调测试**: 使用ngrok等工具测试本地回调 ## 扩展功能 可以进一步扩展的功能: - 退款功能 - 支付统计 - 支付报表 - 批量支付 - 分期付款