Nami Public Documentation
SDK Reference
SDK Reference
  • NAMI
    • configure
    • NamiConfiguration
    • NamiLanguageCodes
  • NamiCampaignManager
    • launch
    • allCampaigns
    • isCampaignAvailable
    • refresh
    • registerAvailableCampaignsHandler
    • NamiCampaign
    • NamiCampaignRuleType
    • LaunchCampaignError
  • NamiCustomerManager
    • CustomerJourneyState
    • isLoggedIn
    • journeyState
    • loggedInId
    • login
    • logout
    • registerAccountStateHandler
    • registerJourneyStateHandler
    • setCustomerAttribute
    • getCustomerAttribute
    • clearCustomerAttribute
    • clearAllCustomerAttributes
  • NamiEntitlementManager
    • active
    • isEntitlementActive
    • NamiEntitlement
    • refresh
    • registerActiveEntitlementsHandler
  • NamiPaywallManager
    • dismiss
    • displayedViewController
    • registerSignInHandler
    • registerCloseHandler
    • registerBuySkuHandler
    • registerDeeplinkActionHandler
    • buySkuComplete
    • NamiPurchaseSuccess
    • NamiPaywallAction
    • NamiSKUType
  • NamiPurchaseManager
    • anySkuPurchased
    • consumePurchasedSku
    • NamiPurchase
    • NamiPurchaseState
    • NamiRestorePurchasesState
    • NamiSKU
    • presentCodeRedemptionSheet
    • registerPurchasesChangedHandler
    • registerRestorePurchasesHandler
    • restorePurchases
    • skuPurchased
  • NamiMLManager
    • coreAction
    • enterCoreContent
    • exitCoreContent
Powered by GitBook
On this page
  1. NamiPaywallManager

NamiPurchaseSuccess

PreviousbuySkuCompleteNextNamiPaywallAction

Last updated 11 months ago

For Paywalls-0nly Plans

This method is for customers who have implemented their own in-app purchases or subscription code directly with the App Store, Google Play, etc. or who are using another third-party for subscription or purchase management.

Your Nami account needs to be on a Paywalls only plan to use this interface. Contact for details.

@objc public class NamiPurchaseSuccess: NSObject, Codable {
    let product: NamiSKU
    let transactionID: String
    let originalTransactionID: String
    let originalPurchaseDate: Date
    let expiresDate: Date?
    let purchaseDate: Date
    let price: Decimal
    let currencyCode: String
    let locale: Locale
    let purchaseSource: NamiPurchaseSource
}

sealed class NamiPurchaseSuccess(
    open val product: NamiSKU,
    open val expiresDate: Date?,
    open val purchaseDate: Date,
    open val purchaseSource: NamiPurchaseSource,
    open val description: String?
) {
    data class GooglePlay(
        override val product: NamiSKU,
        override val expiresDate: Date?,
        override val purchaseDate: Date,
        override val purchaseSource: NamiPurchaseSource,
        override val description: String?,
        val orderId: String,
        val purchaseToken: String,
    ) : NamiPurchaseSuccess(product, expiresDate, purchaseDate, purchaseSource, description)

    data class Amazon(
        override val product: NamiSKU,
        override val expiresDate: Date?,
        override val purchaseDate: Date,
        override val purchaseSource: NamiPurchaseSource,
        override val description: String?,
        val receiptId: String,
        val localizedPrice: String,
        val userId: String,
        val marketplace: String
    ) : NamiPurchaseSuccess(product, expiresDate, purchaseDate, purchaseSource, description)
}

// coming soon
export type PurchaseSuccessIos = {
  product: PurchaseSuccessProduct;
  transactionID: string;
  originalTransactionID: string;
  originalPurchaseDate: number;
  purchaseDate: number;
  expiresDate?: number;
  price: string;
  currencyCode: string;
  locale: string;
};

export type PurchaseSuccessGooglePlay = {
  product: PurchaseSuccessProduct;
  orderId: string;
  purchaseDate: number;
  expiresDate?: number;
  purchaseToken: string;
  purchaseSource: "CAMPAIGN" | "MARKETPLACE" | "UNKNOWN";
};

export type PurchaseSuccessAmazon = {
  product: PurchaseSuccessProduct;
  purchaseDate: number;
  expiresDate?: number;
  purchaseSource: "CAMPAIGN" | "MARKETPLACE" | "UNKNOWN";
  receiptId: string;
  localizedPrice: string;
  userId: string;
  marketplace: string;
};
// coming soon
support@nami.ml