diff --git a/appstore/model.go b/appstore/model.go index c6a3615..c5ecd96 100644 --- a/appstore/model.go +++ b/appstore/model.go @@ -85,14 +85,18 @@ type ( // The InApp type has the receipt attributes InApp struct { - Quantity string `json:"quantity"` - ProductID string `json:"product_id"` - TransactionID string `json:"transaction_id"` - OriginalTransactionID string `json:"original_transaction_id"` - WebOrderLineItemID string `json:"web_order_line_item_id,omitempty"` + Quantity string `json:"quantity"` + ProductID string `json:"product_id"` + TransactionID string `json:"transaction_id"` + OriginalTransactionID string `json:"original_transaction_id"` + WebOrderLineItemID string `json:"web_order_line_item_id,omitempty"` + PromotionalOfferID string `json:"promotional_offer_id"` + SubscriptionGroupIdentifier string `json:"subscription_group_identifier"` IsTrialPeriod string `json:"is_trial_period"` IsInIntroOfferPeriod string `json:"is_in_intro_offer_period,omitempty"` + IsUpgraded string `json:"is_upgraded"` + ExpiresDate PurchaseDate diff --git a/appstore/notification.go b/appstore/notification.go index 4c3df6f..db41010 100644 --- a/appstore/notification.go +++ b/appstore/notification.go @@ -9,7 +9,10 @@ const ( // Subscription was canceled by Apple customer support. NotificationTypeCancel NotificationType = "CANCEL" // Automatic renewal was successful for an expired subscription. + // Deprecated: DID_RECOVER should be used instead of RENEWAL NotificationTypeRenewal NotificationType = "RENEWAL" + // Expired subscription recovered through a billing retry. + NotificationTypeDidRecover NotificationType = "DID_RECOVER" // Customer renewed a subscription interactively after it lapsed. NotificationTypeInteractiveRenewal NotificationType = "INTERACTIVE_RENEWAL" // Customer changed the plan that takes affect at the next subscription renewal. Current active plan is not affected. @@ -53,6 +56,14 @@ type NotificationReceipt struct { CancellationDate } +type NotificationUnifiedReceipt struct { + Status string `json:"status"` + Environment Environment `json:"environment"` + LatestReceipt string `json:"latest_receipt"` + LatestReceiptInfo []InApp `json:"latest_receipt_info"` + PendingRenewalInfo []PendingRenewalInfo `json:"pending_renewal_info,omitempty"` +} + type SubscriptionNotification struct { Environment NotificationEnvironment `json:"environment"` NotificationType NotificationType `json:"notification_type"` @@ -80,6 +91,9 @@ type SubscriptionNotification struct { LatestReceipt string `json:"latest_receipt"` LatestReceiptInfo NotificationReceipt `json:"latest_receipt_info"` + // In the new notifications above properties latest_receipt, latest_receipt_info are moved under this one + UnifiedReceipt NotificationUnifiedReceipt `json:"unified_receipt"` + // Posted only if the notification_type is RENEWAL or CANCEL or if renewal failed and subscription expired. LatestExpiredReceipt string `json:"latest_expired_receipt"` LatestExpiredReceiptInfo NotificationReceipt `json:"latest_expired_receipt_info"`