V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
SethShi
0.01D
V2EX  ›  分享创造

一个零依赖, 多语言, 多币种, 多租户的 apple 退款管理助手

  •  1
     
  •   SethShi ·
    seth-shi · 23 小时 33 分钟前 · 557 次点击

    本服务构建于 Laravel / Filament 多租户架构之上, 通过即时处理 Apple 的 CONSUMPTION_REQUEST 通知并异步回传消费数据,有效帮助开发者防范欺诈退款。

    • 多租户支持
    • 多语言支持 (中文 / English / Español / हिन्दी / العربية / Português / Русский / 日本語 / Français)
    • 多币种支持
    • 零依赖 File+SQLite or upgrade to Redis+MySQL
    • 100% 测试覆盖率
    • 应用密钥自持 私钥仅保存在你的数据库apps表中(会进行对称加密,密钥由你的应用生成)
    • 12 个消费字段 - 计算所有必需的 Apple 字段
    • notification 消息转发 苹果服务器发送到当前服务,当前服务转发到你的正式服务器

    在线演示

    🌐 演示地址: https://apple-refund-assistant.shiguopeng.cn/

    ⚠️ 注意: 系统每 30 分钟会重置一次。

    截图

    image image image image

    快速开始

    使用已经构建好的镜像

    docker run -d \
      -p 8080:8080 \
      --name apple-refund-assistant \
      --restart=always \
      ghcr.io/seth-shi/apple-refund-assistant:latest
    

    本地构建运行

    git clone https://github.com/seth-shi/apple-refund-assistant
    cd apple-refund-assistant
    ## 构建镜像并部署
    ./deploy.sh
    

    如果需要挂载数据

    touch database.sqlite
    docker run -d \
      -p 8080:8080 \
      -v $(pwd)/database.sqlite:/var/www/html/database/database.sqlite \
      --name apple-refund-assistant \
      --restart=always \
      ghcr.io/seth-shi/apple-refund-assistant:latest
    

    消费字段策略

    字段 描述 数据表来源 计算规则
    accountTenure 用户注册天数 users.register_at 当前时间减去注册时间
    appAccountToken 账号 token users.app_account_token 需要客户端创建订单时传递
    consumptionStatus 消费状况 transactions.expiration_date 对比当前时间,如果已到期返回消费完
    customerConsented 用户同意提供数据 写死true
    deliveryStatus 是否成功交付了一个功能正常的内购。 写死0(正常交付)
    lifetimeDollarsPurchased 内购总金额 users.purchased_dollars 根据苹果交易事件累加这个字段,你也可以自行累加
    lifetimeDollarsRefunded 退款总金额 users.refunded_dollars 根据苹果退款事件累加这个字段,你也可以自行累加
    platform 平台 写死1(apple)
    playTime 客户使用应用时间的值 users.play_seconds 需要你的系统支持更新这个字段,否则是0
    refundPreference 退款请求的期望结果 transactions.expiration_date 对比当前时间,如果已到期希望拒绝退款
    sampleContentProvided 是否提供试用 apps.sample_content_provided 创建应用时配置应用
    userStatus 用户状态 写死是1(正常用户)

    未来计划

    • 有其它想法或对合作感兴趣?请在 GitHub 上提交 issue - 我们非常期待您的反馈!

    感谢

    第 1 条附言  ·  22 小时 36 分钟前

    GitHub Actions Workflow Status Codecov CodeRabbit Pull Request Reviews

    2 条回复    2025-10-08 21:16:10 +08:00
    shoaly
        1
    shoaly  
       16 小时 3 分钟前
    有没有大佬解释一下 , 这个是做啥的?
    SethShi
        2
    SethShi  
    OP
       15 小时 52 分钟前
    @shoaly 防止恶意退款的,比如用户一直在苹果申请退款,用这个可以告诉苹果,不让他退款,减少你们公司的损失
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3529 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:08 · PVG 13:08 · LAX 22:08 · JFK 01:08
    ♥ Do have faith in what you're doing.