api

package
v1.39.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 15, 2024 License: MIT Imports: 20 Imported by: 3

Documentation

Index

Constants

View Source
const (
	TransactionReasonPurchase = "PURCHASE"
	TransactionReasonRenewal  = "RENEWAL"
)
View Source
const (
	UndeclaredExtendReasonCode = iota
	CustomerSatisfaction
	OtherReasons
	ServiceIssueOrOutage
)
View Source
const (
	SubscriptionActive      AutoRenewSubscriptionStatus = 1
	SubscriptionExpired     AutoRenewSubscriptionStatus = 2
	SubscriptionRetryPeriod AutoRenewSubscriptionStatus = 3
	SubscriptionGracePeriod AutoRenewSubscriptionStatus = 4
	SubscriptionRevoked     AutoRenewSubscriptionStatus = 5

	AutoRenewStatusOff AutoRenewStatus = 0
	AutoRenewStatusOn  AutoRenewStatus = 1
)
View Source
const (
	HostSandBox    = "https://api.storekit-sandbox.itunes.apple.com"
	HostProduction = "https://api.storekit.itunes.apple.com"

	PathLookUp                              = "/inApps/v1/lookup/{orderId}"
	PathTransactionHistory                  = "/inApps/v2/history/{originalTransactionId}"
	PathTransactionHistoryV1                = "/inApps/v1/history/{originalTransactionId}"
	PathTransactionInfo                     = "/inApps/v1/transactions/{transactionId}"
	PathRefundHistory                       = "/inApps/v2/refund/lookup/{originalTransactionId}"
	PathGetALLSubscriptionStatus            = "/inApps/v1/subscriptions/{originalTransactionId}"
	PathConsumptionInfo                     = "/inApps/v1/transactions/consumption/{originalTransactionId}"
	PathExtendSubscriptionRenewalDate       = "/inApps/v1/subscriptions/extend/{originalTransactionId}"
	PathExtendSubscriptionRenewalDateForAll = "/inApps/v1/subscriptions/extend/mass/"
	PathGetStatusOfSubscriptionRenewalDate  = "/inApps/v1/subscriptions/extend/mass/{productId}/{requestIdentifier}"
	PathGetNotificationHistory              = "/inApps/v1/notifications/history"
	PathRequestTestNotification             = "/inApps/v1/notifications/test"
	PathGetTestNotificationStatus           = "/inApps/v1/notifications/test/{testNotificationToken}"
)

Variables

View Source
var (
	// Retryable errors
	AccountNotFoundRetryableError               = newError(4040002, "Account not found. Please try again.")
	AppNotFoundRetryableError                   = newError(4040004, "App not found. Please try again.")
	GeneralInternalRetryableError               = newError(5000001, "An unknown error occurred. Please try again.")
	OriginalTransactionIdNotFoundRetryableError = newError(4040006, "Original transaction id not found. Please try again.")
	// Errors
	AccountNotFoundError                             = newError(4040001, "Account not found.")
	AppNotFoundError                                 = newError(4040003, "App not found.")
	FamilySharedSubscriptionExtensionIneligibleError = newError(4030007, "Subscriptions that users obtain through Family Sharing can't get a renewal date extension directly.")
	GeneralInternalError                             = newError(5000000, "An unknown error occurred.")
	GeneralBadRequestError                           = newError(4000000, "Bad request.")
	InvalidAppIdentifierError                        = newError(4000002, "Invalid request app identifier.")
	InvalidEmptyStorefrontCountryCodeListError       = newError(4000027, "Invalid request. If provided, the list of storefront country codes must not be empty.")
	InvalidExtendByDaysError                         = newError(4000009, "Invalid extend by days value.")
	InvalidExtendReasonCodeError                     = newError(4000010, "Invalid extend reason code.")
	InvalidOriginalTransactionIdError                = newError(4000008, "Invalid original transaction id.")
	InvalidRequestIdentifierError                    = newError(4000011, "Invalid request identifier.")
	InvalidRequestRevisionError                      = newError(4000005, "Invalid request revision.")
	InvalidRevokedError                              = newError(4000030, "Invalid request. The revoked parameter is invalid.")
	InvalidStatusError                               = newError(4000031, "Invalid request. The status parameter is invalid.")
	InvalidStorefrontCountryCodeError                = newError(4000028, "Invalid request. A storefront country code was invalid.")
	InvalidTransactionIdError                        = newError(4000006, "Invalid transaction id.")
	OriginalTransactionIdNotFoundError               = newError(4040005, "Original transaction id not found.")
	RateLimitExceededError                           = newError(4290000, "Rate limit exceeded.")
	StatusRequestNotFoundError                       = newError(4040009, "The server didn't find a subscription-renewal-date extension request for this requestIdentifier and productId combination.")
	SubscriptionExtensionIneligibleError             = newError(4030004, "Forbidden - subscription state ineligible for extension.")
	SubscriptionMaxExtensionError                    = newError(4030005, "Forbidden - subscription has reached maximum extension count.")
	TransactionIdNotFoundError                       = newError(4040010, "Transaction id not found.")
	// Notification test and history errors
	InvalidEndDateError                     = newError(4000016, "Invalid request. The end date is not a timestamp value represented in milliseconds.")
	InvalidNotificationTypeError            = newError(4000018, "Invalid request. The notification type or subtype is invalid.")
	InvalidPaginationTokenError             = newError(4000014, "Invalid request. The pagination token is invalid.")
	InvalidStartDateError                   = newError(4000015, "Invalid request. The start date is not a timestamp value represented in milliseconds.")
	InvalidTestNotificationTokenError       = newError(4000020, "Invalid request. The test notification token is invalid.")
	InvalidInAppOwnershipTypeError          = newError(4000026, "Invalid request. The in-app ownership type parameter is invalid.")
	InvalidProductIdError                   = newError(4000023, "Invalid request. The product id parameter is invalid.")
	InvalidProductTypeError                 = newError(4000022, "Invalid request. The product type parameter is invalid.")
	InvalidSortError                        = newError(4000021, "Invalid request. The sort parameter is invalid.")
	InvalidSubscriptionGroupIdentifierError = newError(4000024, "Invalid request. The subscription group identifier parameter is invalid.")
	MultipleFiltersSuppliedError            = newError(4000019, "Invalid request. Supply either a transaction id or a notification type, but not both.")
	PaginationTokenExpiredError             = newError(4000017, "Invalid request. The pagination token is expired.")
	ServerNotificationURLNotFoundError      = newError(4040007, "No App Store Server Notification URL found for provided app. Check that a URL is configured in App Store Connect for this environment.")
	StartDateAfterEndDateError              = newError(4000013, "Invalid request. The end date precedes the start date or the dates are the same.")
	StartDateTooFarInPastError              = newError(4000012, "Invalid request. The start date is earlier than the allowed start date.")
	TestNotificationNotFoundError           = newError(4040008, "Either the test notification token is expired or the notification and status are not yet available.")
	InvalidAccountTenureError               = newError(4000032, "Invalid request. The account tenure field is invalid.")
	InvalidAppAccountTokenError             = newError(4000033, "Invalid request. The app account token field must contain a valid UUID or an empty string.")
	InvalidConsumptionStatusError           = newError(4000034, "Invalid request. The consumption status field is invalid.")
	InvalidCustomerConsentedError           = newError(4000035, "Invalid request. The customer consented field is required and must indicate the customer consented")
	InvalidDeliveryStatusError              = newError(4000036, "Invalid request. The delivery status field is invalid")
	InvalidLifetimeDollarsPurchasedError    = newError(4000037, "Invalid request. The lifetime dollars purchased field is invalid")
	InvalidLifetimeDollarsRefundedError     = newError(4000038, "Invalid request. The lifetime dollars refunded field is invalid")
	InvalidPlatformError                    = newError(4000039, "Invalid request. The platform field is invalid")
	InvalidPlayTimeError                    = newError(4000040, "Invalid request. The playtime field is invalid")
	InvalidSampleContentProvidedError       = newError(4000041, "Invalid request. The sample content provided field is invalid")
	InvalidUserStatusError                  = newError(4000042, "Invalid request. The user status field is invalid")
	InvalidTransactionNotConsumableError    = newError(4000043, "Invalid request. The transaction id parameter must represent a consumable in-app purchase")
	InvalidTransactionTypeNotSupportedError = newError(4000047, "Invalid request. The transaction id doesn't represent a supported in-app purchase type")
)

All Error lists in https://developer.apple.com/documentation/appstoreserverapi/error_codes.

View Source
var (
	ErrAuthKeyInvalidPem  = errors.New("token: AuthKey must be a valid .p8 PEM file")
	ErrAuthKeyInvalidType = errors.New("token: AuthKey must be of type ecdsa.PrivateKey")
)

Authorize Tokens For App Store Server API Request Doc: https://developer.apple.com/documentation/appstoreserverapi/generating_tokens_for_api_requests

Functions

This section is empty.

Types

type APIClient added in v1.38.0

type APIClient struct {
	// contains filtered or unexported fields
}

func NewAPIClient added in v1.38.0

func NewAPIClient(config StoreConfig) *APIClient

func (*APIClient) Verify added in v1.38.0

func (c *APIClient) Verify(ctx context.Context, transactionId string) (*TransactionInfoResponse, error)

type AutoRenewStatus added in v1.21.4

type AutoRenewStatus int32

type AutoRenewSubscriptionStatus added in v1.21.4

type AutoRenewSubscriptionStatus int32

type Cert

type Cert struct {
}

type ConsumptionRequestBody added in v1.3.22

type ConsumptionRequestBody struct {
	AccountTenure            int32  `json:"accountTenure"`
	AppAccountToken          string `json:"appAccountToken"`
	ConsumptionStatus        int32  `json:"consumptionStatus"`
	CustomerConsented        bool   `json:"customerConsented"`
	DeliveryStatus           int32  `json:"deliveryStatus"`
	LifetimeDollarsPurchased int32  `json:"lifetimeDollarsPurchased"`
	LifetimeDollarsRefunded  int32  `json:"lifetimeDollarsRefunded"`
	Platform                 int32  `json:"platform"`
	PlayTime                 int32  `json:"playTime"`
	SampleContentProvided    bool   `json:"sampleContentProvided"`
	UserStatus               int32  `json:"userStatus"`
	RefundPreference         int32  `json:"refundPreference"`
}

ConsumptionRequestBody https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest

type ConsumptionSender added in v1.22.0

type ConsumptionSender interface {
	SendConsumptionInfo(ctx context.Context, originalTransactionId string, body ConsumptionRequestBody) (statusCode int, err error)
}

type Environment added in v1.17.0

type Environment string
const (
	Sandbox    Environment = "Sandbox"
	Production Environment = "Production"
)

Environment https://developer.apple.com/documentation/appstoreserverapi/environment

type Error added in v1.12.0

type Error struct {
	// contains filtered or unexported fields
}

func (*Error) As added in v1.12.0

func (e *Error) As(target interface{}) bool

func (*Error) Error added in v1.12.0

func (e *Error) Error() string

func (*Error) ErrorCode added in v1.12.0

func (e *Error) ErrorCode() int

func (*Error) ErrorMessage added in v1.12.0

func (e *Error) ErrorMessage() string

func (*Error) Is added in v1.12.0

func (e *Error) Is(target error) bool

func (*Error) RetryAfter added in v1.19.0

func (e *Error) RetryAfter() int64

func (*Error) Retryable added in v1.12.0

func (e *Error) Retryable() bool

type ExtendRenewalDateRequest added in v1.3.23

type ExtendRenewalDateRequest struct {
	ExtendByDays      int32            `json:"extendByDays"`
	ExtendReasonCode  ExtendReasonCode `json:"extendReasonCode"`
	RequestIdentifier string           `json:"requestIdentifier"`
}

ExtendRenewalDateRequest https://developer.apple.com/documentation/appstoreserverapi/extendrenewaldaterequest

type FirstSendAttemptResult added in v1.3.23

type FirstSendAttemptResult string

https://developer.apple.com/documentation/appstoreserverapi/firstsendattemptresult

const (
	FirstSendAttemptResultSuccess                     FirstSendAttemptResult = "SUCCESS"
	FirstSendAttemptResultCircularRedirect            FirstSendAttemptResult = "CIRCULAR_REDIRECT"
	FirstSendAttemptResultInvalidResponse             FirstSendAttemptResult = "INVALID_RESPONSE"
	FirstSendAttemptResultNoResponse                  FirstSendAttemptResult = "NO_RESPONSE"
	FirstSendAttemptResultOther                       FirstSendAttemptResult = "OTHER"
	FirstSendAttemptResultPrematureClose              FirstSendAttemptResult = "PREMATURE_CLOSE"
	FirstSendAttemptResultSocketIssue                 FirstSendAttemptResult = "SOCKET_ISSUE"
	FirstSendAttemptResultTimedOut                    FirstSendAttemptResult = "TIMED_OUT"
	FirstSendAttemptResultTlsIssue                    FirstSendAttemptResult = "TLS_ISSUE"
	FirstSendAttemptResultUnsupportedCharset          FirstSendAttemptResult = "UNSUPPORTED_CHARSET"
	FirstSendAttemptResultUnsupportedHTTPRESPONSECODE FirstSendAttemptResult = "UNSUCCESSFUL_HTTP_RESPONSE_CODE"
)

type HistoryResponse

type HistoryResponse struct {
	AppAppleId         int64       `json:"appAppleId"`
	BundleId           string      `json:"bundleId"`
	Environment        Environment `json:"environment"`
	HasMore            bool        `json:"hasMore"`
	Revision           string      `json:"revision"`
	SignedTransactions []string    `json:"signedTransactions"`
}

HistoryResponse https://developer.apple.com/documentation/appstoreserverapi/historyresponse

type IAPAPIClient added in v1.38.0

type IAPAPIClient interface {
	Verify(ctx context.Context, transactionId string) (*TransactionInfoResponse, error)
}

IAPAPIClient is an interface to call validation API in App Store Server API

type IAPType added in v1.14.0

type IAPType string

IAPType https://developer.apple.com/documentation/appstoreserverapi/type

const (
	AutoRenewable IAPType = "Auto-Renewable Subscription"
	NonConsumable IAPType = "Non-Consumable"
	Consumable    IAPType = "Consumable"
	NonRenewable  IAPType = "Non-Renewing Subscription"
)

type JWSDecodedHeader

type JWSDecodedHeader struct {
	Alg string   `json:"alg,omitempty"`
	Kid string   `json:"kid,omitempty"`
	X5C []string `json:"x5c,omitempty"`
}

JWSDecodedHeader https://developer.apple.com/documentation/appstoreserverapi/jwsdecodedheader

type JWSRenewalInfoDecodedPayload

type JWSRenewalInfoDecodedPayload struct {
	AutoRenewProductId          string            `json:"autoRenewProductId"`
	AutoRenewStatus             AutoRenewStatus   `json:"autoRenewStatus"`
	Environment                 Environment       `json:"environment"`
	ExpirationIntent            int32             `json:"expirationIntent"`
	GracePeriodExpiresDate      int64             `json:"gracePeriodExpiresDate"`
	IsInBillingRetryPeriod      *bool             `json:"isInBillingRetryPeriod"`
	OfferIdentifier             string            `json:"offerIdentifier"`
	OfferType                   int32             `json:"offerType"`
	OriginalTransactionId       string            `json:"originalTransactionId"`
	PriceIncreaseStatus         *int32            `json:"priceIncreaseStatus"`
	ProductId                   string            `json:"productId"`
	RecentSubscriptionStartDate int64             `json:"recentSubscriptionStartDate"`
	RenewalDate                 int64             `json:"renewalDate"`
	SignedDate                  int64             `json:"signedDate"`
	RenewalPrice                int64             `json:"renewalPrice,omitempty"`
	Currency                    string            `json:"currency,omitempty"`
	OfferDiscountType           OfferDiscountType `json:"offerDiscountType,omitempty"`
	EligibleWinBackOfferIds     []string          `json:"eligibleWinBackOfferIds,omitempty"`
}

JWSRenewalInfoDecodedPayload https://developer.apple.com/documentation/appstoreserverapi/jwsrenewalinfodecodedpayload

func (JWSRenewalInfoDecodedPayload) Valid added in v1.21.0

type JWSTransaction

type JWSTransaction struct {
	TransactionID               string            `json:"transactionId,omitempty"`
	OriginalTransactionId       string            `json:"originalTransactionId,omitempty"`
	WebOrderLineItemId          string            `json:"webOrderLineItemId,omitempty"`
	BundleID                    string            `json:"bundleId,omitempty"`
	ProductID                   string            `json:"productId,omitempty"`
	SubscriptionGroupIdentifier string            `json:"subscriptionGroupIdentifier,omitempty"`
	PurchaseDate                int64             `json:"purchaseDate,omitempty"`
	OriginalPurchaseDate        int64             `json:"originalPurchaseDate,omitempty"`
	ExpiresDate                 int64             `json:"expiresDate,omitempty"`
	Quantity                    int32             `json:"quantity,omitempty"`
	Type                        IAPType           `json:"type,omitempty"`
	AppAccountToken             string            `json:"appAccountToken,omitempty"`
	InAppOwnershipType          string            `json:"inAppOwnershipType,omitempty"`
	SignedDate                  int64             `json:"signedDate,omitempty"`
	OfferType                   int32             `json:"offerType,omitempty"`
	OfferIdentifier             string            `json:"offerIdentifier,omitempty"`
	RevocationDate              int64             `json:"revocationDate,omitempty"`
	RevocationReason            *int32            `json:"revocationReason,omitempty"`
	IsUpgraded                  bool              `json:"isUpgraded,omitempty"`
	Storefront                  string            `json:"storefront,omitempty"`
	StorefrontId                string            `json:"storefrontId,omitempty"`
	TransactionReason           TransactionReason `json:"transactionReason,omitempty"`
	Environment                 Environment       `json:"environment,omitempty"`
	Price                       int64             `json:"price,omitempty"`
	Currency                    string            `json:"currency,omitempty"`
	OfferDiscountType           OfferDiscountType `json:"offerDiscountType,omitempty"`
}

JWSTransaction https://developer.apple.com/documentation/appstoreserverapi/jwstransaction

func (JWSTransaction) Valid

func (J JWSTransaction) Valid() error

type LastTransactionsItem

type LastTransactionsItem struct {
	OriginalTransactionId string                      `json:"originalTransactionId"`
	Status                AutoRenewSubscriptionStatus `json:"status"`
	SignedRenewalInfo     string                      `json:"signedRenewalInfo"`
	SignedTransactionInfo string                      `json:"signedTransactionInfo"`
}

type MassExtendRenewalDateRequest added in v1.11.0

type MassExtendRenewalDateRequest struct {
	RequestIdentifier      string   `json:"requestIdentifier"`
	ExtendByDays           int32    `json:"extendByDays"`
	ExtendReasonCode       int32    `json:"extendReasonCode"`
	ProductId              string   `json:"productId"`
	StorefrontCountryCodes []string `json:"storefrontCountryCodes"`
}

MassExtendRenewalDateRequest https://developer.apple.com/documentation/appstoreserverapi/massextendrenewaldaterequest

type MassExtendRenewalDateStatusResponse added in v1.17.0

type MassExtendRenewalDateStatusResponse struct {
	RequestIdentifier string `json:"requestIdentifier"`
	Complete          bool   `json:"complete"`
	CompleteDate      int64  `json:"completeDate,omitempty"`
	FailedCount       int64  `json:"failedCount,omitempty"`
	SucceededCount    int64  `json:"succeededCount,omitempty"`
}

MassExtendRenewalDateStatusResponse https://developer.apple.com/documentation/appstoreserverapi/massextendrenewaldatestatusresponse

type NotificationGetter added in v1.22.0

type NotificationGetter interface {
	GetAllNotificationHistory(ctx context.Context, body NotificationHistoryRequest, duration time.Duration) (responses []NotificationHistoryResponseItem, err error)
	GetNotificationHistory(ctx context.Context, body NotificationHistoryRequest, paginationToken string) (rsp *NotificationHistoryResponses, err error)
	GetTestNotificationStatus(ctx context.Context, testNotificationToken string) (int, []byte, error)
}

type NotificationHistoryRequest added in v1.3.23

type NotificationHistoryRequest struct {
	StartDate           int64                       `json:"startDate"`
	EndDate             int64                       `json:"endDate"`
	NotificationType    appstore.NotificationTypeV2 `json:"notificationType,omitempty"`
	NotificationSubtype appstore.SubtypeV2          `json:"notificationSubtype,omitempty"`
	OnlyFailures        bool                        `json:"onlyFailures"`
	TransactionId       string                      `json:"transactionId,omitempty"`
	// Use transactionId instead.
	// Deprecated.
	OriginalTransactionId string `json:"originalTransactionId,omitempty"`
}

NotificationHistoryRequest https://developer.apple.com/documentation/appstoreserverapi/notificationhistoryrequest

type NotificationHistoryResponseItem added in v1.3.23

type NotificationHistoryResponseItem struct {
	SignedPayload          string                 `json:"signedPayload"`
	FirstSendAttemptResult FirstSendAttemptResult `json:"firstSendAttemptResult"`
	SendAttempts           []SendAttemptItem      `json:"sendAttempts"`
}

NotificationHistoryResponseItem https://developer.apple.com/documentation/appstoreserverapi/notificationhistoryresponseitem

type NotificationHistoryResponses added in v1.3.23

type NotificationHistoryResponses struct {
	HasMore             bool                              `json:"hasMore"`
	PaginationToken     string                            `json:"paginationToken"`
	NotificationHistory []NotificationHistoryResponseItem `json:"notificationHistory"`
}

NotificationHistoryResponses https://developer.apple.com/documentation/appstoreserverapi/notificationhistoryresponse

type NotificationSender added in v1.22.0

type NotificationSender interface {
	SendRequestTestNotification(ctx context.Context) (int, []byte, error)
}

type OfferDiscountType added in v1.25.0

type OfferDiscountType string
const (
	OfferDiscountTypeFreeTrial  OfferDiscountType = "FREE_TRIAL"
	OfferDiscountTypePayAsYouGo OfferDiscountType = "PAY_AS_YOU_GO"
	OfferDiscountTypePayUpFront OfferDiscountType = "PAY_UP_FRONT"
)

type OrderLookupResponse

type OrderLookupResponse struct {
	Status             int      `json:"status"`
	SignedTransactions []string `json:"signedTransactions"`
}

OrderLookupResponse https://developer.apple.com/documentation/appstoreserverapi/orderlookupresponse

type RefundLookupResponse

type RefundLookupResponse struct {
	HasMore            bool     `json:"hasMore"`
	Revision           string   `json:"revision"`
	SignedTransactions []string `json:"signedTransactions"`
}

RefundLookupResponse same as the RefundHistoryResponse https://developer.apple.com/documentation/appstoreserverapi/refundhistoryresponse

type SendAttemptItem added in v1.16.0

type SendAttemptItem struct {
	AttemptDate       int64                  `json:"attemptDate"`
	SendAttemptResult FirstSendAttemptResult `json:"sendAttemptResult"`
}

SendAttemptItem https://developer.apple.com/documentation/appstoreserverapi/sendattemptitem

type SendTestNotificationResponse added in v1.3.23

type SendTestNotificationResponse struct {
	TestNotificationToken string `json:"testNotificationToken"`
}

SendTestNotificationResponse https://developer.apple.com/documentation/appstoreserverapi/sendtestnotificationresponse

type StatusResponse

type StatusResponse struct {
	Environment Environment                       `json:"environment"`
	AppAppleId  int64                             `json:"appAppleId"`
	BundleId    string                            `json:"bundleId"`
	Data        []SubscriptionGroupIdentifierItem `json:"data"`
}

StatusResponse https://developer.apple.com/documentation/appstoreserverapi/get_all_subscription_statuses

type StoreClient

type StoreClient struct {
	Token *Token
	// contains filtered or unexported fields
}

func NewStoreClient

func NewStoreClient(config *StoreConfig) *StoreClient

NewStoreClient create a appstore server api client

func NewStoreClientWithHTTPClient added in v1.3.23

func NewStoreClientWithHTTPClient(config *StoreConfig, httpClient *http.Client) *StoreClient

NewStoreClientWithHTTPClient NewWithClient creates an App Store server api client with a custom http client.

func (*StoreClient) Do

func (a *StoreClient) Do(ctx context.Context, method string, url string, body io.Reader) (int, []byte, error)

Do Per doc: https://developer.apple.com/documentation/appstoreserverapi#topics

func (*StoreClient) ExtendSubscriptionRenewalDate added in v1.3.23

func (a *StoreClient) ExtendSubscriptionRenewalDate(ctx context.Context, originalTransactionId string, body ExtendRenewalDateRequest) (statusCode int, err error)

ExtendSubscriptionRenewalDate https://developer.apple.com/documentation/appstoreserverapi/extend_a_subscription_renewal_date

func (*StoreClient) ExtendSubscriptionRenewalDateForAll added in v1.11.0

func (a *StoreClient) ExtendSubscriptionRenewalDateForAll(ctx context.Context, body MassExtendRenewalDateRequest) (statusCode int, err error)

ExtendSubscriptionRenewalDateForAll https://developer.apple.com/documentation/appstoreserverapi/extend_subscription_renewal_dates_for_all_active_subscribers

func (*StoreClient) GetALLSubscriptionStatuses

func (a *StoreClient) GetALLSubscriptionStatuses(ctx context.Context, originalTransactionId string, query *url.Values) (rsp *StatusResponse, err error)

GetALLSubscriptionStatuses https://developer.apple.com/documentation/appstoreserverapi/get_all_subscription_statuses

func (*StoreClient) GetAllNotificationHistory added in v1.20.0

func (a *StoreClient) GetAllNotificationHistory(ctx context.Context, body NotificationHistoryRequest, duration time.Duration) (responses []NotificationHistoryResponseItem, err error)

GetAllNotificationHistory returns all the NotificationHistoryResponseItem using the paginationToken on behalf of you.

func (*StoreClient) GetNotificationHistory added in v1.3.23

func (a *StoreClient) GetNotificationHistory(ctx context.Context, body NotificationHistoryRequest, paginationToken string) (rsp *NotificationHistoryResponses, err error)

GetNotificationHistory https://developer.apple.com/documentation/appstoreserverapi/get_notification_history Note: Notification history is available starting on June 6, 2022. Use a startDate of June 6, 2022 or later in your request.

func (*StoreClient) GetRefundHistory

func (a *StoreClient) GetRefundHistory(ctx context.Context, originalTransactionId string) (responses []*RefundLookupResponse, err error)

GetRefundHistory https://developer.apple.com/documentation/appstoreserverapi/get_refund_history

func (*StoreClient) GetSubscriptionRenewalDataStatus added in v1.11.0

func (a *StoreClient) GetSubscriptionRenewalDataStatus(ctx context.Context, productId, requestIdentifier string) (statusCode int, rsp *MassExtendRenewalDateStatusResponse, err error)

GetSubscriptionRenewalDataStatus https://developer.apple.com/documentation/appstoreserverapi/get_status_of_subscription_renewal_date_extensions

func (*StoreClient) GetTestNotificationStatus added in v1.3.23

func (a *StoreClient) GetTestNotificationStatus(ctx context.Context, testNotificationToken string) (int, []byte, error)

GetTestNotificationStatus https://developer.apple.com/documentation/appstoreserverapi/get_test_notification_status

func (*StoreClient) GetTransactionHistory

func (a *StoreClient) GetTransactionHistory(ctx context.Context, originalTransactionId string, query *url.Values) (responses []*HistoryResponse, err error)

GetTransactionHistory https://developer.apple.com/documentation/appstoreserverapi/get_transaction_history

func (*StoreClient) GetTransactionInfo added in v1.10.0

func (a *StoreClient) GetTransactionInfo(ctx context.Context, transactionId string) (rsp *TransactionInfoResponse, err error)

GetTransactionInfo https://developer.apple.com/documentation/appstoreserverapi/get_transaction_info

func (*StoreClient) ParseJWSEncodeString added in v1.21.0

func (a *StoreClient) ParseJWSEncodeString(jwsEncode string) (interface{}, error)

ParseJWSEncodeString parse the jws encode string, such as JWSTransaction and JWSRenewalInfoDecodedPayload

func (*StoreClient) ParseSignedTransaction added in v1.14.1

func (a *StoreClient) ParseSignedTransaction(transaction string) (*JWSTransaction, error)

ParseSignedTransaction parse one jws singed transaction for API like GetTransactionInfo

func (*StoreClient) ParseSignedTransactions

func (a *StoreClient) ParseSignedTransactions(transactions []string) ([]*JWSTransaction, error)

ParseSignedTransactions parse the jws singed transactions Per doc: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.6

func (*StoreClient) SendConsumptionInfo added in v1.3.22

func (a *StoreClient) SendConsumptionInfo(ctx context.Context, originalTransactionId string, body ConsumptionRequestBody) (statusCode int, err error)

SendConsumptionInfo https://developer.apple.com/documentation/appstoreserverapi/send_consumption_information

func (*StoreClient) SendRequestTestNotification added in v1.3.23

func (a *StoreClient) SendRequestTestNotification(ctx context.Context) (int, []byte, error)

SendRequestTestNotification https://developer.apple.com/documentation/appstoreserverapi/request_a_test_notification

type StoreConfig added in v1.3.22

type StoreConfig struct {
	KeyContent         []byte       // Loads a .p8 certificate
	KeyID              string       // Your private key ID from App Store Connect (Ex: 2X9R4HXF34)
	BundleID           string       // Your app’s bundle ID
	Issuer             string       // Your issuer ID from the Keys page in App Store Connect (Ex: "57246542-96fe-1a63-e053-0824d011072a")
	Sandbox            bool         // default is Production
	TokenIssuedAtFunc  func() int64 // The token’s creation time func. Default is current timestamp.
	TokenExpiredAtFunc func() int64 // The token’s expiration time func. Default is one hour later.
}

type SubscriptionExtender added in v1.22.0

type SubscriptionExtender interface {
	ExtendSubscriptionRenewalDate(ctx context.Context, originalTransactionId string, body ExtendRenewalDateRequest) (statusCode int, err error)
	ExtendSubscriptionRenewalDateForAll(ctx context.Context, body MassExtendRenewalDateRequest) (statusCode int, err error)
}

type SubscriptionGetter added in v1.22.0

type SubscriptionGetter interface {
	GetALLSubscriptionStatuses(ctx context.Context, originalTransactionId string, query *url.Values) (rsp *StatusResponse, err error)
	GetRefundHistory(ctx context.Context, originalTransactionId string) (responses []*RefundLookupResponse, err error)
	GetSubscriptionRenewalDataStatus(ctx context.Context, productId, requestIdentifier string) (statusCode int, rsp *MassExtendRenewalDateStatusResponse, err error)
	GetTransactionHistory(ctx context.Context, originalTransactionId string, query *url.Values) (responses []*HistoryResponse, err error)
	GetTransactionInfo(ctx context.Context, transactionId string) (rsp *TransactionInfoResponse, err error)
	LookupOrderID(ctx context.Context, orderId string) (rsp *OrderLookupResponse, err error)
}

type SubscriptionGroupIdentifierItem

type SubscriptionGroupIdentifierItem struct {
	SubscriptionGroupIdentifier string                 `json:"subscriptionGroupIdentifier"`
	LastTransactions            []LastTransactionsItem `json:"lastTransactions"`
}

type Token

type Token struct {
	sync.Mutex

	KeyContent    []byte       // Loads a .p8 certificate
	KeyID         string       // Your private key ID from App Store Connect (Ex: 2X9R4HXF34)
	BundleID      string       // Your app’s bundle ID
	Issuer        string       // Your issuer ID from the Keys page in App Store Connect (Ex: "57246542-96fe-1a63-e053-0824d011072a")
	Sandbox       bool         // default is Production
	IssuedAtFunc  func() int64 // The token’s creation time func. Default is current timestamp.
	ExpiredAtFunc func() int64 // The token’s expiration time func.

	// internal variables
	AuthKey   *ecdsa.PrivateKey // .p8 private key
	Bearer    string            // Authorized bearer token
	ExpiredAt int64             // The token’s expiration time, in UNIX time
}

Token represents an Apple Provider Authentication Token (JSON Web Token).

func (*Token) Expired

func (t *Token) Expired() bool

Expired checks to see if the token has expired.

func (*Token) Generate

func (t *Token) Generate() error

Generate creates a new token.

func (*Token) GenerateIfExpired

func (t *Token) GenerateIfExpired() (string, error)

GenerateIfExpired checks to see if the token is about to expire and generates a new token.

func (*Token) WithConfig added in v1.3.22

func (t *Token) WithConfig(c *StoreConfig)

type TransactionInfoResponse added in v1.10.0

type TransactionInfoResponse struct {
	SignedTransactionInfo string `json:"signedTransactionInfo"`
}

TransactionInfoResponse https://developer.apple.com/documentation/appstoreserverapi/transactioninforesponse

type TransactionParser added in v1.22.0

type TransactionParser interface {
	ParseSignedTransactions(transactions []string) ([]*JWSTransaction, error)
	ParseJWSEncodeString(jwsEncode string) (interface{}, error)
	ParseSignedTransaction(transaction string) (*JWSTransaction, error)
}

type TransactionReason added in v1.14.0

type TransactionReason string

TransactionReason indicates the cause of a purchase transaction, https://developer.apple.com/documentation/appstoreservernotifications/transactionreason

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL