Links

Purchases

SDK configuration to send purchases info to Appflow.ai

This part of SDK is important for subscriptions information
Ready to work Configure product information in Google Play

Displaying Products

To fetch the products, you have to call method:
/**
* parameter1:skus,The product id list
*/
Appflow.getSkuDetails(skus: List<String>, listener: SkuDetailsListener)
Example
val skus = listOf("SKU_WEEKLY", "SKU_MONTHLY", "SKU_YEARLY")
Appflow.getSkuDetails(skus, object : SkuDetailsListener {
override fun onError(error: PurchasesError) {}
override fun onReceived(map: HashMap<String, ProductDetails>) {
for (product in map) {
val skuDetails = product.value
Log.d(TAG,"productId:${skuDetails.productId}")
Log.d(TAG,"title:${skuDetails.title}")
Log.d(TAG,"description:${skuDetails.description}")
Log.d(TAG,"name:${skuDetails.name}")
Log.d(TAG,"subscriptionOfferDetails:${skuDetails.subscriptionOfferDetails}")
}
}
})

API Reference

SkuDetailsListener
Text
onReceived(map: HashMap<String, ProductDetails>)
Success callback
onError(error : PurchasesError)
Failure callback
PurchasesError
Text
code
error code
message
error message
ProductDetails
Text
getDescription() : String
Returns the description of the product.
getName() : String
Returns the name of the product being sold.
getProductId() : String
Returns the product's Id.
getProductType() : String
Returns the BillingClient.ProductType of the product.
getTitle() : String
Returns the title of the product being sold.
getOneTimePurchaseOfferDetails : ProductDetails.OneTimePurchaseOfferDetails
eturns the offer details of an one-time purchase product.
getSubscriptionOfferDetails() : List<ProductDetails.SubscriptionOfferDetails>
returns a list containing all available offers to purchase a subscription product.
PurchaseType
Text
INAPP
A type of SKU for Android apps in-app products
SUBS
A type of SKU for Android apps subscriptions
ProductDetails.OneTimePurchaseOfferDetails
Text
getFormattedPrice() : String
Returns formatted price for the payment, including its currency sign.
getPriceAmountMicros() : Long
Returns the price for the payment in micro-units, where 1,000,000 micro-units equal one unit of the currency.
getPriceCurrencyCode() : String
Returns ISO 4217 currency code for price.
ProductDetails.SubscriptionOfferDetails
Text
getBasePlanId() : String
Returns the base plan id associated with the subscription product.
getOfferId() : String
Returns the offer id associated with the subscription product.
getOfferTags() : List
Returns the offer tags associated with this Subscription Offer.
getOfferToken() : String
Returns the offer token required to pass in launchBillingFlow to purchase the subscription product with these pricing phases.
getPricingPhases() : ProductDetails.PricingPhases
Returns the pricing phases for the subscription product.
ProductDetails.PricingPhases
Text
getPricingPhaseList() : List<ProductDetails.PricingPhase>
Returns the pricing phases as a time ordered list of Pricing phase.
ProductDetails.PricingPhase
Text
getBillingCycleCount() : Int
Number of cycles for which the billing period is applied.
getBillingPeriod() : String
Billing period for which the given price applies, specified in ISO 8601 format.
getFormattedPrice() : String
Returns formatted price for the payment cycle, including its currency sign.
getPriceAmountMicros() : Long
Returns the price for the payment cycle in micro-units, where 1,000,000 micro-units equal one unit of the currency.
getPriceCurrencyCode() : String
Returns ISO 4217 currency code for price.
getRecurrenceMode() : Int
Returns ProductDetails.RecurrenceMode for the pricing phase.

Making Purchases

Making Purchases, you have to call method:
/**
* parameter1:activity,The context must be of type Activity
* parameter2:productDetails,The ProductDetails object corresponding to the product
* parameter3:offerToken,to get an offer token, call ProductDetails.subscriptionOfferDetails() for a list of
* offers that are available to the user
*/
Appflow.purchasePackage(activity: Activity, productDetails: ProductDetails, offerToken: String, listener: MakePurchaseListener)
/**
* parameter1:activity,The context must be of type Activity
* parameter2:productDetails,The ProductDetails object corresponding to the product
* Notice:The first offer token is used by default
*/
Appflow.purchasePackage(activity: Activity, productDetails: ProductDetails, listener: MakePurchaseListener)
Example
Appflow.purchasePackage(activity, productDetails, offerToken, object : MakePurchaseListener{
override fun onCompleted(purchase: Purchase) {
//After the purchase is successful, you can obtain the order id,
//order token and other information through the Purchase object
}
override fun onError(error: PurchasesError, userCancelled: Boolean) {
//When userCancelled is true, it means that the user cancels the purchase;
//when userCancelled is true, it means that the purchase fails
//You can get specific failure information through PurchasesError
}
})

API Reference

Subscription Status

Get the subscription status of a product, you have to call method:
Appflow.getSubscriberInfo(listener: ReceivePurchaserInfoListener)

Example

Appflow.getSubscriberInfo(object : ReceivePurchaserInfoListener {
override fun onReceived(subscriber: IapIap.Subscriber) {
for (info in subscriber.entitlementsList) {
Log.d(TAG,"sku:${info.productId}")
Log.d(TAG,"isActive:${info.isActive}")
}
}
override fun onError(error: PurchasesError) {}
})
API Reference

Upgrade/Downgrade product

**To upgrade/downgrade a product, you have to call method:
/**
* parameter1:activity,The context must be of type Activity
* parameter2:packageToPurchase,The ProductDetails object corresponding to the product
* parameter3:offerToken,to get an offer token, call ProductDetails.subscriptionOfferDetails() for a list of
* offers that are available to the user
* parameter4:upgradeInfo,Upgrade/Downgrade Product Information Object
*/
Appflow.purchasePackage(
activity: Activity,
packageToPurchase: ProductDetails,
offerToken: String,
upgradeInfo: UpgradeInfo,
listener: MakePurchaseListener
)
/**
* parameter1:activity,The context must be of type Activity
* parameter2:packageToPurchase,The ProductDetails object corresponding to the product
* parameter3:upgradeInfo,Upgrade/Downgrade Product Information Object
* Notice:The first offer token is used by default
*/
Appflow.purchasePackage(
activity: Activity,
packageToPurchase: ProductDetails,
upgradeInfo: UpgradeInfo,
listener: MakePurchaseListener
)
Example
val upgradeInfo = UpgradeInfo(productId, BillingFlowParams.ProrationMode.DEFERRED)
Appflow.purchasePackage(activity, packageToPurchase, offerToken, upgradeInfo, object : MakePurchaseListener{
override fun onCompleted(purchase: Purchase) {}
override fun onError(error: PurchasesError, userCancelled: Boolean) {}
})

API Reference