From fdcb90029744e0b0cc7f8274b92d26585b6ad781 Mon Sep 17 00:00:00 2001 From: Andre Medeiros Date: Thu, 30 Jun 2022 16:14:07 -0400 Subject: [PATCH] be more forgiving with itunes receipt verification outages --- internal/api/receipt.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/internal/api/receipt.go b/internal/api/receipt.go index bd74075..c4b3724 100644 --- a/internal/api/receipt.go +++ b/internal/api/receipt.go @@ -23,6 +23,19 @@ func (a *api) checkReceiptHandler(w http.ResponseWriter, r *http.Request) { iapr, err := itunes.NewIAPResponse(string(body), true) if err != nil { + // treat as if it's a valid subscription, given that this is not the user's fault + if apns != "" { + dev, err := a.deviceRepo.GetByAPNSToken(ctx, apns) + if err != nil { + a.errorResponse(w, r, 500, err) + return + } + + dev.ExpiresAt = time.Now().Add(domain.DeviceActiveAfterReceitCheckDuration) + dev.GracePeriodExpiresAt = dev.ExpiresAt.Add(domain.DeviceGracePeriodAfterReceiptExpiry) + _ = a.deviceRepo.Update(ctx, &dev) + } + a.logger.Info("failed to verify receipt", zap.Error(err)) a.errorResponse(w, r, 500, err) return