- 修改RealAIService.submitTextToImageTask使用nano-banana/nano-banana-hd模型 - 支持根据hdMode参数选择模型(标准/高清) - 修复数据库列类型:将result_url等字段改为TEXT类型以支持Base64图片 - 添加数据库修复SQL脚本(fix_database_columns.sql, update_database_schema.sql) - 改进StoryboardVideoService的错误处理和空值检查 - 添加GlobalExceptionHandler全局异常处理 - 优化图片URL提取逻辑,支持url和b64_json两种格式 - 改进响应格式验证,确保data字段不为空
6.4 KiB
6.4 KiB
支付宝支付集成准备指南
一、必需准备项
1. 支付宝商户账号
- 个人开发者:注册支付宝开放平台账号(https://open.alipay.com)
- 企业用户:需要营业执照等企业资质,申请企业支付宝账号
2. 创建应用并获取配置信息
登录支付宝开放平台后,需要创建应用并获取以下配置:
开发环境(沙箱测试)
- APPID(应用ID):
alipay.app-id - 应用私钥(Private Key):
alipay.private-key - 支付宝公钥(Public Key):
alipay.public-key - 网关地址:
https://openapi.alipaydev.com/gateway.do(沙箱) - 字符集:
UTF-8 - 签名方式:
RSA2
生产环境
- 网关地址:
https://openapi.alipay.com/gateway.do - 其他配置同开发环境
3. 密钥生成和配置
支付宝使用RSA2签名,需要生成密钥对:
方法1:使用支付宝密钥生成工具
- 下载支付宝官方密钥生成工具
- 生成密钥对(RSA2,2048位)
- 保存私钥(用于配置
alipay.private-key) - 将公钥上传到支付宝开放平台,获取支付宝公钥(用于配置
alipay.public-key)
方法2:使用OpenSSL生成
# 生成私钥
openssl genrsa -out app_private_key.pem 2048
# 生成公钥
openssl rsa -in app_private_key.pem -pubout -out app_public_key.pem
# 查看私钥内容(去除头尾,保留中间部分配置到private-key)
cat app_private_key.pem
# 将app_public_key.pem内容上传到支付宝开放平台
重要:
- 私钥需要去除
-----BEGIN RSA PRIVATE KEY-----和-----END RSA PRIVATE KEY----- - 私钥和公钥配置在配置文件中时,需要去掉换行符或使用转义
4. 配置回调地址
需要配置两个回调地址:
异步通知地址(notify-url)
- 用于接收支付宝的支付结果异步通知
- 必须是公网可访问的HTTPS地址
- 示例:
https://yourdomain.com/api/payments/alipay/notify - 注意:开发环境可以使用ngrok等内网穿透工具
同步返回地址(return-url)
- 用户支付完成后跳转的页面
- 可以是HTTP或HTTPS地址
- 示例:
https://yourdomain.com/api/payments/alipay/return
5. 数据库表准备
项目已经包含了Payment相关表,确保数据库已创建:
payments表orders表
6. Maven依赖(已配置)
项目已包含支付宝SDK依赖:
<dependency>
<groupId>com.github.javen205</groupId>
<artifactId>IJPay-AliPay</artifactId>
<version>2.9.12.1</version>
</dependency>
二、配置文件设置
开发环境配置(application-dev.properties)
# 支付宝配置 (开发环境 - 沙箱测试)
alipay.app-id=你的沙箱APPID
alipay.private-key=你的应用私钥(去除头尾和换行)
alipay.public-key=支付宝公钥(从开放平台获取)
alipay.gateway-url=https://openapi.alipaydev.com/gateway.do
alipay.charset=UTF-8
alipay.sign-type=RSA2
alipay.notify-url=https://your-ngrok-url.ngrok-free.dev/api/payments/alipay/notify
alipay.return-url=https://your-ngrok-url.ngrok-free.dev/api/payments/alipay/return
生产环境配置(application-prod.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}
三、测试步骤
1. 沙箱测试环境准备
- 登录支付宝开放平台:https://open.alipay.com
- 进入"沙箱环境"
- 获取沙箱APPID
- 下载"支付宝密钥生成工具",生成密钥对
- 上传公钥到支付宝,获取支付宝公钥
- 配置沙箱测试账号(买家账号和卖家账号)
2. 内网穿透配置(开发测试)
如果本地开发,需要使用ngrok等工具暴露本地服务:
# 安装ngrok
# 启动本地服务(端口8080)
# 使用ngrok暴露
ngrok http 8080
# 获取https地址,配置到notify-url和return-url
3. 功能测试
- 创建支付订单
- 生成支付宝二维码
- 使用沙箱账号扫码支付
- 验证异步通知接收
- 验证支付状态更新
四、已实现的功能
后端接口
✅ POST /api/payments/alipay/create - 创建支付宝支付并生成二维码
✅ POST /api/payments/alipay/notify - 接收支付宝异步通知
✅ GET /api/payments/alipay/return - 处理支付宝同步返回
前端页面
✅ 支付模态框组件(PaymentModal.vue) ✅ 订阅页面支付集成(Subscription.vue)
核心服务
✅ AlipayService - 支付宝服务封装
createPayment()- 创建支付订单handleNotify()- 处理异步通知handleReturn()- 处理同步返回
五、常见问题
1. 签名验证失败
- 检查私钥和公钥是否正确配置
- 确认私钥格式正确(去除头尾和换行)
- 确认使用RSA2签名方式
2. 回调地址无法访问
- 确保回调地址是公网可访问的HTTPS地址
- 开发环境可以使用ngrok等内网穿透工具
- 检查防火墙和服务器配置
3. 沙箱测试账号
- 在支付宝开放平台沙箱环境中获取测试账号
- 使用"沙箱买家"账号进行支付测试
- 注意:沙箱环境有金额限制
4. 生产环境上线
- 申请正式应用(需要审核)
- 配置正式环境的APPID和密钥
- 确保回调地址使用正式域名
- 完成商户资质认证
六、安全检查
-
密钥安全
- 私钥绝对不能泄露
- 生产环境使用环境变量或密钥管理服务
- 不要将密钥提交到代码仓库
-
回调验证
- 所有回调必须验证签名
- 验证订单金额和状态
- 防止重复处理
-
HTTPS要求
- 生产环境必须使用HTTPS
- 回调地址必须是HTTPS
七、当前项目状态
✅ 代码已实现 ✅ Maven依赖已配置 ⚠️ 需要配置支付宝账号和密钥 ⚠️ 需要配置回调地址(开发环境可用ngrok)
八、快速开始
- 注册支付宝开放平台账号
- 创建应用获取APPID
- 生成密钥对并配置
- 配置回调地址(开发环境使用ngrok)
- 更新application-dev.properties配置文件
- 启动项目测试支付功能
九、参考文档
- 支付宝开放平台:https://open.alipay.com
- 支付宝开发者文档:https://opendocs.alipay.com
- IJPay文档:https://github.com/Javen205/IJPay