Documentation
¶
Index ¶
- Constants
- func HandleError(status int) error
- func ToBool(v string) bool
- func ToInt64(v string) int64
- func ToTime(msString string) time.Time
- type CancellationDate
- type Client
- type Config
- type ExpiresDate
- type IAPClient
- type IAPRequest
- type IAPResponseIOS6
- type IAPResponseIOS7
- type InApp
- type OriginalPurchaseDate
- type PendingRenewalInfo
- type PurchaseDate
- type Receipt
- func (r *Receipt) GetByTransactionID(id int64) *ReceiptInApp
- func (r *Receipt) GetEnvironment() string
- func (r *Receipt) GetLastExpiresByProductID(productID string) *ReceiptInApp
- func (r *Receipt) GetLastExpiresByTransactionIDs(ids []int64) *ReceiptInApp
- func (r *Receipt) GetStatus() int
- func (r *Receipt) GetTransactionIDs() []int64
- func (r *Receipt) GetTransactionIDsByProduct(product string) []int64
- func (r *Receipt) GetTransactionIDsByProductWithoutExpired(product string) []int64
- func (r *Receipt) GetTransactionIDsWithoutExpired() []int64
- func (r *Receipt) HasError() error
- func (r *Receipt) HasExpired() bool
- func (r *Receipt) IsAutoRenewable() bool
- func (r *Receipt) IsValidReceipt() bool
- func (r *Receipt) LatestReceiptString() string
- func (r *Receipt) ResponseVersion() int
- func (r *Receipt) ShouldSendToProductionEnvironment() bool
- func (r *Receipt) ShouldSendToTestEnvironment() bool
- func (r *Receipt) String() string
- type ReceiptIOS6
- type ReceiptIOS7
- type ReceiptInApp
- type ReceiptInApps
- func (r ReceiptInApps) ByProduct(productID string) ReceiptInApps
- func (r ReceiptInApps) ByTransactionID(id int64) *ReceiptInApp
- func (r ReceiptInApps) IsAutoRenewable() bool
- func (r ReceiptInApps) LastExpiresByProductID(productID string) *ReceiptInApp
- func (r ReceiptInApps) LastExpiresByProductIDForLatest(productID string) *ReceiptInApp
- func (r ReceiptInApps) LastExpiresByTransactionIDs(ids []int64) *ReceiptInApp
- func (r ReceiptInApps) LastExpiresByTransactionIDsForLatest(ids []int64) *ReceiptInApp
- func (r ReceiptInApps) TransactionIDs() []int64
- func (r ReceiptInApps) TransactionIDsByProduct(productID string) []int64
- type ReceiptPendingRenewalInfo
- type ReceiptPendingRenewalInfos
- type RequestDate
Constants ¶
const ( SandboxURL string = "https://sandbox.itunes.apple.com/verifyReceipt" ProductionURL string = "https://buy.itunes.apple.com/verifyReceipt" )
Variables ¶
This section is empty.
Functions ¶
func HandleError ¶
HandleError returns error message by status code
Types ¶
type CancellationDate ¶
type CancellationDate struct { CancellationDate string `json:"cancellation_date"` CancellationDateMS string `json:"cancellation_date_ms"` CancellationDatePST string `json:"cancellation_date_pst"` }
The CancellationDate type indicates the time and date of the cancellation by Apple customer support
type Client ¶
Client implements IAPClient
func NewWithConfig ¶
NewWithConfig creates a client with configuration
type ExpiresDate ¶
type ExpiresDate struct { ExpiresDate string `json:"expires_date"` ExpiresDateMS string `json:"expires_date_ms"` ExpiresDatePST string `json:"expires_date_pst"` }
The ExpiresDate type indicates the expiration date for the subscription
type IAPClient ¶
type IAPClient interface {
Verify(IAPRequest) (*Receipt, error)
}
IAPClient is an interface to call validation API in App Store
type IAPRequest ¶
type IAPRequest struct { ReceiptData string `json:"receipt-data"` Password string `json:"password,omitempty"` }
The IAPRequest type has the request parameter
type IAPResponseIOS6 ¶
type IAPResponseIOS6 struct { Status int `json:"status"` Receipt ReceiptIOS6 `json:"receipt"` LatestReceiptInfo ReceiptIOS6 `json:"latest_receipt_info"` LatestExpiredReceiptInfo ReceiptIOS6 `json:"latest_expired_receipt_info"` LatestReceipt string `json:"latest_receipt"` // pending_renewal_info in iOS 6 style receipt. AutoRenewStatus int `json:"auto_renew_status"` AutoRenewProductID string `json:"auto_renew_product_id"` ExpirationIntent string `json:"expiration_intent"` RetryFlag string `json:"is_in_billing_retry_period"` IsRetryable bool `json:"is_retryable"` // contains filtered or unexported fields }
The IAPResponse type has the response properties
func NewIAPResponseIOS6 ¶
func NewIAPResponseIOS6(rc string) *IAPResponseIOS6
func (*IAPResponseIOS6) ToIOS7 ¶
func (r *IAPResponseIOS6) ToIOS7() *IAPResponseIOS7
type IAPResponseIOS7 ¶
type IAPResponseIOS7 struct { Status int `json:"status"` Environment string `json:"environment"` Receipt ReceiptIOS7 `json:"receipt"` LatestReceiptInfo []InApp `json:"latest_receipt_info"` LatestReceipt string `json:"latest_receipt"` PendingRenewalInfo []PendingRenewalInfo `json:"pending_renewal_info"` IsRetryable bool `json:"is_retryable"` // contains filtered or unexported fields }
The IAPResponse type has the response properties
func NewIAPResponseIOS7 ¶
func NewIAPResponseIOS7(rc string) *IAPResponseIOS7
func (*IAPResponseIOS7) ToReceipt ¶
func (r *IAPResponseIOS7) ToReceipt() *Receipt
type InApp ¶
type InApp struct { Quantity string `json:"quantity"` ProductID string `json:"product_id"` TransactionID string `json:"transaction_id"` OriginalTransactionID string `json:"original_transaction_id"` IsTrialPeriod string `json:"is_trial_period"` IsInIntroOfferPeriod string `json:"is_in_intro_offer_period"` AppItemID string `json:"app_item_id"` VersionExternalIdentifier string `json:"version_external_identifier"` WebOrderLineItemID string `json:"web_order_line_item_id"` PurchaseDate OriginalPurchaseDate ExpiresDate CancellationDate }
The InApp type has the receipt attributes
type OriginalPurchaseDate ¶
type OriginalPurchaseDate struct { OriginalPurchaseDate string `json:"original_purchase_date"` OriginalPurchaseDateMS string `json:"original_purchase_date_ms"` OriginalPurchaseDatePST string `json:"original_purchase_date_pst"` }
The OriginalPurchaseDate type indicates the beginning of the subscription period
type PendingRenewalInfo ¶ added in v0.2.2
type PendingRenewalInfo struct { ExpirationIntent string `json:"expiration_intent"` AutoRenewProductID string `json:"auto_renew_product_id"` RetryFlag string `json:"is_in_billing_retry_period"` AutoRenewStatus string `json:"auto_renew_status"` PriceConsentStatus string `json:"price_consent_status"` ProductID string `json:"product_id"` }
PendingRenewalInfo auto-renewable subscriptions
type PurchaseDate ¶
type PurchaseDate struct { PurchaseDate string `json:"purchase_date"` PurchaseDateMS string `json:"purchase_date_ms"` PurchaseDatePST string `json:"purchase_date_pst"` }
The PurchaseDate type indicates the date and time that the item was purchased
type Receipt ¶
type Receipt struct { Status int Environment string ReceiptType string AdamID int64 AppItemID int64 BundleID string ApplicationVersion string DownloadID int64 OriginalApplicationVersion string RequestDate time.Time OriginalPurchaseDate time.Time InApps ReceiptInApps LatestReceiptInfo ReceiptInApps LatestReceipt string PendingRenewalInfo ReceiptPendingRenewalInfos // contains filtered or unexported fields }
Receipt is struct for iap receipt data
func (*Receipt) GetByTransactionID ¶
func (r *Receipt) GetByTransactionID(id int64) *ReceiptInApp
GetByTransactionID returns receipt data by `transaction_id`
func (*Receipt) GetEnvironment ¶
func (*Receipt) GetLastExpiresByProductID ¶
func (r *Receipt) GetLastExpiresByProductID(productID string) *ReceiptInApp
GetLastExpiresByProductID returns latest expires receipt data by `product_id`
func (*Receipt) GetLastExpiresByTransactionIDs ¶
func (r *Receipt) GetLastExpiresByTransactionIDs(ids []int64) *ReceiptInApp
GetLastExpiresByTransactionIDs returns latest expires receipt data from `transaction_id` list
func (*Receipt) GetStatus ¶
GetStatus returns status code of the receipt see: https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html
func (*Receipt) GetTransactionIDs ¶
GetTransactionIDs returns all of transaction_id from `in_app`
func (*Receipt) GetTransactionIDsByProduct ¶
GetTransactionIDsByProduct returns all of transaction_id from `in_app` filtered by `product_id`
func (*Receipt) GetTransactionIDsByProductWithoutExpired ¶ added in v0.2.0
GetTransactionIDsByProductWithoutExpired returns all of transaction_id filtered by `product_id` except expired
func (*Receipt) GetTransactionIDsWithoutExpired ¶ added in v0.2.0
GetTransactionIDsWithoutExpired returns all of transaction_id except expired
func (*Receipt) HasExpired ¶
HasExpired checks this receipt is expired or not (only for iOS6 style)
func (*Receipt) IsAutoRenewable ¶
IsAutoRenewable checks this receipt is auto-renewable subscription or not
func (*Receipt) IsValidReceipt ¶
IsValidReceipt checks this receipt is valid receipt or not if this receipt is auto-renewable and iOS6 style, expired one returns false
func (*Receipt) LatestReceiptString ¶
LatestReceiptString returns raw receipt of `latest_receipt`
func (*Receipt) ResponseVersion ¶
ResponseVersion returns receipt style; iOS6 style returns `6` iOS7 style returns `7`
func (*Receipt) ShouldSendToProductionEnvironment ¶ added in v0.2.6
ShouldSendToProductionEnvironment checks this receipt status is 21008 this receipt is from the production environment, but it was sent to the test environment for verification
func (*Receipt) ShouldSendToTestEnvironment ¶ added in v0.2.6
ShouldSendToTestEnvironment checks this receipt status is 21007 this receipt is from the test environment, but it was sent to the production environment for verification
type ReceiptIOS6 ¶
type ReceiptIOS6 struct { AppItemID string `json:"app_item_id"` BundleID string `json:"bid"` ApplicationVersion string `json:"bvrs"` OriginalApplicationVersion string `json:"original_application_version"` OriginalTransactionID string `json:"original_transaction_id"` ProductID string `json:"product_id"` Quantity string `json:"quantity"` TransactionID string `json:"transaction_id"` VersionExternalIdentifier string `json:"version_external_identifier"` WebOrderLineItemID string `json:"web_order_line_item_id"` ExpiresDate string `json:"expires_date_formatted"` ExpiresDateMS string `json:"expires_date"` ExpiresDatePST string `json:"expires_date_formatted_pst"` RequestDate PurchaseDate OriginalPurchaseDate IsTrialPeriod string `json:"is_trial_period"` IsInIntroOfferPeriod string `json:"is_in_intro_offer_period"` }
The Receipt type has whole data of receipt
func (*ReceiptIOS6) ToIOS7 ¶
func (rc *ReceiptIOS6) ToIOS7() ReceiptIOS7
func (*ReceiptIOS6) ToInApp ¶
func (rc *ReceiptIOS6) ToInApp() InApp
type ReceiptIOS7 ¶
type ReceiptIOS7 struct { ReceiptType string `json:"receipt_type"` AdamID int64 `json:"adam_id"` AppItemID int64 `json:"app_item_id"` BundleID string `json:"bundle_id"` ApplicationVersion string `json:"application_version"` DownloadID int64 `json:"download_id"` OriginalApplicationVersion string `json:"original_application_version"` InApp []InApp `json:"in_app"` RequestDate OriginalPurchaseDate }
The Receipt type has whole data of receipt
type ReceiptInApp ¶
type ReceiptInApp struct { Quantity int64 ProductID string TransactionID int64 OriginalTransactionID int64 IsTrialPeriod bool AppItemID int64 VersionExternalIdentifier int64 WebOrderLineItemID int64 PurchaseDate time.Time OriginalPurchaseDate time.Time ExpiresDate time.Time CancellationDate time.Time }
ReceiptInApp is struct for in_app field
func ToReceiptInApp ¶
func ToReceiptInApp(ap InApp) *ReceiptInApp
type ReceiptInApps ¶
type ReceiptInApps []*ReceiptInApp
func ToReceiptInApps ¶
func ToReceiptInApps(aps []InApp) ReceiptInApps
func (ReceiptInApps) ByProduct ¶
func (r ReceiptInApps) ByProduct(productID string) ReceiptInApps
func (ReceiptInApps) ByTransactionID ¶
func (r ReceiptInApps) ByTransactionID(id int64) *ReceiptInApp
func (ReceiptInApps) IsAutoRenewable ¶
func (r ReceiptInApps) IsAutoRenewable() bool
func (ReceiptInApps) LastExpiresByProductID ¶
func (r ReceiptInApps) LastExpiresByProductID(productID string) *ReceiptInApp
for auto-renewable
func (ReceiptInApps) LastExpiresByProductIDForLatest ¶
func (r ReceiptInApps) LastExpiresByProductIDForLatest(productID string) *ReceiptInApp
for LatestReceiptInfo
func (ReceiptInApps) LastExpiresByTransactionIDs ¶
func (r ReceiptInApps) LastExpiresByTransactionIDs(ids []int64) *ReceiptInApp
func (ReceiptInApps) LastExpiresByTransactionIDsForLatest ¶
func (r ReceiptInApps) LastExpiresByTransactionIDsForLatest(ids []int64) *ReceiptInApp
func (ReceiptInApps) TransactionIDs ¶
func (r ReceiptInApps) TransactionIDs() []int64
func (ReceiptInApps) TransactionIDsByProduct ¶
func (r ReceiptInApps) TransactionIDsByProduct(productID string) []int64
type ReceiptPendingRenewalInfo ¶ added in v0.2.2
type ReceiptPendingRenewalInfo struct { ExpirationIntent int64 `json:"expiration_intent"` AutoRenewProductID string `json:"auto_renew_product_id"` RetryFlag bool `json:"is_in_billing_retry_period"` AutoRenewStatus bool `json:"auto_renew_status"` PriceConsentStatus bool `json:"price_consent_status"` ProductID string `json:"product_id"` }
ReceiptPendingRenewalInfo is struct for pending_renewal_info field.
func ToReceiptPendingRenewalInfo ¶ added in v0.2.2
func ToReceiptPendingRenewalInfo(pri PendingRenewalInfo) *ReceiptPendingRenewalInfo
func (ReceiptPendingRenewalInfo) IsDifferentAutoRenewProductID ¶ added in v0.2.5
func (r ReceiptPendingRenewalInfo) IsDifferentAutoRenewProductID() bool
IsDifferentAutoRenewProductID checks that AutoRenewProductID is changed from ProductID.
type ReceiptPendingRenewalInfos ¶ added in v0.2.2
type ReceiptPendingRenewalInfos []*ReceiptPendingRenewalInfo
func ToReceiptPendingRenewalInfos ¶ added in v0.2.2
func ToReceiptPendingRenewalInfos(pris []PendingRenewalInfo) ReceiptPendingRenewalInfos
func (ReceiptPendingRenewalInfos) GetRenewalInfo ¶ added in v0.2.5
func (r ReceiptPendingRenewalInfos) GetRenewalInfo(productID string) *ReceiptPendingRenewalInfo
GetRenewalInfo returns ReceiptPendingRenewalInfo of given productID.
func (ReceiptPendingRenewalInfos) IsAutoRenewStatusOff ¶ added in v0.2.3
func (r ReceiptPendingRenewalInfos) IsAutoRenewStatusOff(productID string) bool
IsAutoRenewStatusOff confirms `auto_renew_status` is disabled for given product id.
func (ReceiptPendingRenewalInfos) IsAutoRenewStatusOn ¶ added in v0.2.3
func (r ReceiptPendingRenewalInfos) IsAutoRenewStatusOn(productID string) bool
IsAutoRenewStatusOn confirms `auto_renew_status` is enabled for given product id.
type RequestDate ¶
type RequestDate struct { RequestDate string `json:"request_date"` RequestDateMS string `json:"request_date_ms"` RequestDatePST string `json:"request_date_pst"` }
The RequestDate type indicates the date and time that the request was sent