Kamixitong/docs/alipay_integration.md
2025-12-12 11:35:14 +08:00

6.5 KiB
Raw Permalink Blame History

支付宝支付功能集成指南

概述

本系统已集成支付宝支付功能支持PC网站支付和手机网站支付。支付成功后系统会自动生成许可证。

功能特性

  • 支持PC网站支付电脑端
  • 支持手机网站支付(移动端)
  • 支付成功后自动生成许可证
  • 异步通知处理,确保支付状态准确
  • 订单状态实时查询
  • 完整的支付结果页面

依赖安装

pip install -r requirements.txt

需要安装 alipay-sdk-python3==3.7.4

配置支付宝参数

1. 获取支付宝应用信息

  1. 登录支付宝开放平台
  2. 创建应用(网站支付类型)
  3. 获取以下信息:
    • APP_ID应用ID
    • 应用私钥APP_PRIVATE_KEY
    • 支付宝公钥ALIPAY_PUBLIC_KEY
    • 支付宝平台公钥ALIPAY_ALIPAY_PUBLIC_KEY

2. 配置环境变量

在生产环境中,建议通过环境变量配置支付宝参数:

export ALIPAY_APP_ID="your_app_id"
export ALIPAY_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
export ALIPAY_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
export ALIPAY_ALIPAY_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"

3. 配置文件(开发环境)

也可以在 .env 文件中配置:

ALIPAY_APP_ID=your_app_id
ALIPAY_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----
your_private_key_content
-----END PRIVATE KEY-----
ALIPAY_PUBLIC_KEY=-----BEGIN PUBLIC KEY-----
your_public_key_content
-----END PUBLIC KEY-----
ALIPAY_ALIPAY_PUBLIC_KEY=-----BEGIN PUBLIC KEY-----
alipay_public_key_content
-----END PUBLIC KEY-----

API接口

1. 创建订单

接口: POST /api/v1/user/orders

请求参数:

{
    "product_id": "产品ID",
    "package_id": "套餐ID",
    "contact_person": "联系人姓名",
    "phone": "手机号",
    "quantity": 1
}

响应示例:

{
    "success": true,
    "message": "订单创建成功",
    "data": {
        "order_number": "ORD123456789",
        "amount": 99.00
    }
}

2. 创建支付宝支付

接口: POST /api/v1/user/pay/alipay

请求参数:

{
    "order_number": "订单号",
    "payment_type": "pc"  // 或 "wap"
}

响应示例:

{
    "success": true,
    "message": "支付链接创建成功",
    "data": {
        "payment_url": "https://openapi.alipay.com/...",
        "order_number": "ORD123456789",
        "amount": 99.00
    }
}

3. 查询订单

接口: GET /api/v1/user/orders/query?order_number=订单号&phone=手机号

响应示例:

{
    "success": true,
    "data": {
        "order_number": "ORD123456789",
        "status": 1,
        "status_name": "已支付",
        "amount": 99.00,
        "payment_time": "2024-01-01 12:00:00"
    }
}

4. 支付宝异步通知

接口: POST /api/v1/pay/alipay1/user/notify

支付宝会向此接口发送异步通知,系统会自动处理支付状态更新和许可证生成。

前端页面

1. 购买页面

用户访问 /user/licenses/purchase 页面购买许可证。

页面功能:

  • 选择产品和套餐
  • 填写联系信息
  • 选择支付方式(支付宝/微信)
  • 创建订单并跳转到支付

2. 支付结果页面

支付完成后跳转到 /payment/result?order_number=订单号

页面功能:

  • 显示支付结果
  • 显示订单信息
  • 显示生成的许可证密钥
  • 支持复制许可证密钥

支付流程

用户选择产品 → 创建订单 → 创建支付链接 → 跳转到支付宝 → 支付完成
                                                               ↓
生成许可证 ← 更新订单状态 ← 支付宝异步通知 ← ← ← ← ← ← ← ← ← ← ← ← ← ←

重要说明

1. 异步通知处理

支付宝异步通知是支付状态更新的主要方式,系统会:

  • 验证通知的签名
  • 检查订单状态
  • 更新订单状态为"已支付"
  • 自动生成许可证
  • 记录操作日志

2. 支付链接生成

根据客户端类型自动选择支付方式:

  • PC端使用 alipay.trade.page.pay 接口
  • 移动端:使用 alipay.trade.wap.pay 接口

3. 许可证生成

支付成功后系统会自动:

  • 查询订单信息
  • 根据套餐配置生成许可证
  • 设置有效期和最大设备数
  • 保存许可证到数据库

错误处理

1. 常见错误

错误信息 原因 解决方法
支付配置错误 支付宝参数未配置 检查环境变量和配置文件
订单不存在 订单号错误 检查订单号是否正确
套餐库存不足 套餐库存为0 联系管理员补充库存
订单金额不匹配 金额被篡改 检查订单和支付金额

2. 日志查看

系统会在 logs/kamaxitong.log 中记录:

  • 订单创建日志
  • 支付流程日志
  • 支付宝通知日志
  • 许可证生成日志

安全建议

  1. 生产环境配置

    • 使用HTTPS协议
    • 设置 SESSION_COOKIE_SECURE=True
    • 定期更换密钥
  2. 签名验证

    • 系统会自动验证支付宝通知签名
    • 签名验证失败的通知会被拒绝
  3. 订单金额验证

    • 系统会验证通知中的金额与订单金额一致
    • 不匹配的订单会被拒绝

故障排除

1. 支付链接无法打开

可能原因:

  • 支付宝配置错误
  • 订单状态不正确
  • 支付金额格式错误

解决方法:

  • 检查支付宝配置
  • 确认订单状态为"待支付"
  • 检查订单金额是否为有效数字

2. 支付成功但订单状态未更新

可能原因:

  • 异步通知未收到
  • 异步通知处理失败

解决方法:

  • 查看日志文件,检查异步通知记录
  • 可以通过订单查询接口手动检查状态
  • 联系支付宝客服查询支付记录

3. 许可证未生成

可能原因:

  • 许可证生成逻辑出错
  • 数据库连接异常

解决方法:

  • 查看日志文件中的错误信息
  • 检查数据库连接
  • 手动重新触发许可证生成(需要管理员操作)

技术支持

如有技术问题,请:

  1. 查看日志文件:logs/kamaxitong.log
  2. 检查支付宝配置是否正确
  3. 确认网络连接和防火墙设置
  4. 联系开发团队

更新日志

v1.0.0 (2024-12-11)

  • 初始版本
  • 支持支付宝PC网站支付和手机网站支付
  • 自动生成许可证
  • 异步通知处理
  • 支付结果页面