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

54 阅读2分钟

简述

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

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

在线演示

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

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

截图

0.png

1.png

2.png

3.png

4.png

5.png

设置配置

快速开始

使用已经构建好的镜像

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

Copy

本地构建运行

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

Copy

如果需要挂载数据

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账号 tokenusers.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 - 我们非常期待您的反馈!