IapClient(const IapClient &)=delete
virtual void set_observer(PurchaseObserver observer)=0
Register a callback that fires for any backend-resolved purchase (including out-of-band transactions ...
virtual ~IapClient()=default
virtual void restore(RestoreCallback callback)=0
Ask the backend to re-issue every previously-completed purchase.
IapClient & operator=(const IapClient &)=delete
virtual void request_products(const std::vector< std::string > &skus, ProductLookupCallback callback)=0
Ask the backend for metadata + localized pricing of the given SKUs.
virtual bool is_available() const =0
Returns true when a real IAP backend is wired up on this build.
virtual void purchase(const std::string &sku, PurchaseCallback callback)=0
Initiate a purchase flow for sku.
static IapClient & instance()
virtual bool finish_transaction(const std::string &transaction_id)=0
Acknowledge / finish a purchase so the backend stops re-delivering it.
virtual std::string backend_id() const =0
Short identifier of the active backend.
Definition child_process_manager.hpp:18
std::function< void(const ProductLookupResult &)> ProductLookupCallback
Definition in_app_purchase.hpp:94
std::function< void(const Purchase &)> PurchaseObserver
Definition in_app_purchase.hpp:97
std::function< void(const std::vector< Purchase > &)> RestoreCallback
Definition in_app_purchase.hpp:96
std::function< void(const Purchase &)> PurchaseCallback
Definition in_app_purchase.hpp:95
ProductLookupStatus
Outcome of a product lookup.
Definition in_app_purchase.hpp:59
@ PartiallyOk
Some SKUs resolved; unknown_skus lists the misses.
Definition in_app_purchase.hpp:61
@ Unavailable
No IAP backend on this build.
Definition in_app_purchase.hpp:63
@ Ok
All requested SKUs resolved.
Definition in_app_purchase.hpp:60
PurchaseState
Lifecycle state of a Purchase returned by the backend.
Definition in_app_purchase.hpp:47
@ Unavailable
No IAP backend on this build / SKU not configured.
Definition in_app_purchase.hpp:55
@ Deferred
Awaiting external action (Ask-to-Buy / parental approval).
Definition in_app_purchase.hpp:54
@ Purchasing
User has been prompted; payment in flight.
Definition in_app_purchase.hpp:49
@ Restored
Re-issued via restore(); entitlement should be granted.
Definition in_app_purchase.hpp:51
@ Unknown
Backend hasn't resolved the transaction yet.
Definition in_app_purchase.hpp:48
@ Cancelled
User cancelled the purchase prompt.
Definition in_app_purchase.hpp:53
@ Purchased
Payment cleared; entitlement should be granted.
Definition in_app_purchase.hpp:50
@ Failed
Backend reported an error (see Purchase::error).
Definition in_app_purchase.hpp:52
Outcome of a single product lookup invocation.
Definition in_app_purchase.hpp:78
std::vector< std::string > unknown_skus
SKUs the backend didn't recognize.
Definition in_app_purchase.hpp:81
std::string error
Empty on Ok / PartiallyOk.
Definition in_app_purchase.hpp:82
std::vector< Product > products
Definition in_app_purchase.hpp:80
ProductLookupStatus status
Definition in_app_purchase.hpp:79
Resolved product metadata.
Definition in_app_purchase.hpp:67
bool is_subscription
True for auto-renewing subscriptions.
Definition in_app_purchase.hpp:74
std::string price_currency_code
ISO 4217 (e.g. "USD").
Definition in_app_purchase.hpp:72
std::string title
Localized product title.
Definition in_app_purchase.hpp:69
std::string price_formatted
Localized price string ("$0.99", "€0,99").
Definition in_app_purchase.hpp:71
double price_amount
Numeric price in price_currency_code units.
Definition in_app_purchase.hpp:73
std::string sku
Caller-supplied identifier.
Definition in_app_purchase.hpp:68
std::string description
Localized long description.
Definition in_app_purchase.hpp:70
Single transaction record.
Definition in_app_purchase.hpp:86
std::string transaction_id
Backend-assigned transaction identifier.
Definition in_app_purchase.hpp:89
std::string receipt
Opaque receipt bytes from a host backend, if any.
Definition in_app_purchase.hpp:90
std::string sku
Matches the SKU passed to purchase().
Definition in_app_purchase.hpp:87
std::string error
Empty unless state == Failed.
Definition in_app_purchase.hpp:91
PurchaseState state
Definition in_app_purchase.hpp:88