English | 简体中文 | Español | हिन्दी | العربية | Português | Русский | 日本語 | Français
Este servicio está construido sobre la arquitectura multi-tenant de Laravel / Filament, ayudando efectivamente a los desarrolladores a prevenir reembolsos fraudulentos procesando instantáneamente las notificaciones CONSUMPTION_REQUEST de Apple y devolviendo datos de consumo de forma asíncrona.
- Soporte Multi-tenant
- Soporte Multi-idioma (中文 / English / Español / हिन्दी / العربية / Português / Русский / 日本語 / Français)
- Soporte Multi-moneda
- Cero Dependencias File+SQLite
o actualizar a Redis+MySQL - 100% Cobertura de Pruebas
- Claves de Aplicación Auto-gestionadas Las claves privadas solo se almacenan en tu tabla de base de datos
apps(con cifrado simétrico, claves generadas por tu aplicación) - 12 Campos de Consumo - Calcular todos los campos requeridos de Apple
- Reenvío de Mensajes de Notificación El servidor de Apple envía al servicio actual, el servicio actual reenvía a tu servidor de producción
🌐 URL de Demo: https://apple-refund-assistant.shiguopeng.cn/
⚠️ Nota: El sistema se reinicia cada 30 minutos.
docker run -d \
-p 8080:8080 \
--name apple-refund-assistant \
--restart=always \
ghcr.io/seth-shi/apple-refund-assistant:latestgit clone https://github.com/seth-shi/apple-refund-assistant
cd apple-refund-assistant
## Construir imagen y desplegar
./deploy.shtouch 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- Documentación: https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
- Código de Estrategia: ConsumptionService.php
- Los campos de la tabla
userspueden ser actualizados por otros sistemas
| Campo | Descripción | Fuente de Datos | Regla de Cálculo |
|---|---|---|---|
| accountTenure | Días de registro del usuario | users.register_at |
Tiempo actual menos tiempo de registro |
| appAccountToken | Token de cuenta | users.app_account_token |
Necesita ser pasado cuando el cliente crea orden |
| consumptionStatus | Estado de consumo | transactions.expiration_date |
Comparar con tiempo actual, si expirado retornar consumido |
| customerConsented | Consentimiento del usuario para proporcionar datos | Ninguno | Codificado true |
| deliveryStatus | Si se entregó exitosamente una compra in-app funcional. | Ninguno | Codificado 0(entrega normal) |
| lifetimeDollarsPurchased | Cantidad total de compras in-app | users.purchased_dollars |
Acumular este campo basado en eventos de transacción de Apple, también puedes acumularlo tú mismo |
| lifetimeDollarsRefunded | Cantidad total de reembolsos | users.refunded_dollars |
Acumular este campo basado en eventos de reembolso de Apple, también puedes acumularlo tú mismo |
| platform | Plataforma | Ninguno | Codificado 1(apple) |
| playTime | Valor de tiempo de uso de la app del cliente | users.play_seconds |
Tu sistema necesita soportar actualizar este campo, de lo contrario es 0 |
| refundPreference | Resultado esperado de solicitud de reembolso | transactions.expiration_date |
Comparar con tiempo actual, si expirado esperar rechazar reembolso |
| sampleContentProvided | Si se proporciona prueba | apps.sample_content_provided |
Configurar app al crear app |
| userStatus | Estado del usuario | Ninguno | Codificado 1(usuario normal) |
- ¿Tienes otras ideas o estás interesado en colaboración? ¡Por favor envía un issue en GitHub - esperamos tu feedback!





