InApps C++
InAppService.h
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 #include <map>
6 #include <functional>
7 
8 namespace ludei { namespace inapps {
9 
10  using std::string;
11 
15  struct InAppProduct {
19  string productId;
23  string title;
27  string description;
35  double price;
36  };
37 
41  struct InAppPurchase {
45  string transactionId;
49  string productId;
53  uint64_t purchaseDate;
57  int32_t quantity;
58  };
59 
64 
68  enum class InAppProvider {
72  AUTO,
76  APP_STORE,
80  GOOGLE_PLAY,
84  AMAZON_APPSTORE,
85 
86  };
87 
91  class InAppService {
92  public:
93 
97  struct Error {
98  Error() : code(0) {};
102  int32_t code;
106  string message;
112  inline bool empty() const { return code == 0 && message.empty();}
113  };
114 
121  typedef std::function<void(const std::vector<InAppProduct> & products, const InAppService::Error & error)> FetchCallback;
122 
128  typedef std::function<void(const InAppService::Error & error)> RestoreCallback;
129 
137  typedef std::function<void(const InAppPurchase & purchase, const InAppService::Error & error)> PurchaseCallback;
138 
145  typedef std::function<void(int32_t consumed, const InAppService::Error & error)> ConsumeCallback;
146 
147 
155  typedef std::function<void(const InAppService::Error & error)> ValidationCompletion;
156 
164  typedef std::function<void(const string & receipt, const string & productId, const ValidationCompletion & completion)>ValidationHandler;
165 
172  static InAppService * create(InAppProvider provider = InAppProvider::AUTO);
173 
180  static InAppService * create(const char * className);
181 
182  virtual ~InAppService() {};
183 
189  virtual void addPurchaseObserver(InAppPurchaseObserver * observer) = 0;
190 
196  virtual void removePurchaseObserver(InAppPurchaseObserver * observer) = 0;
197 
202  virtual void start() = 0;
203 
211  virtual void fetchProducts(const std::vector<string> & productIds, const FetchCallback & callback) = 0;
212 
218  virtual std::vector<InAppProduct> getProducts() const = 0;
219 
225  virtual void mapProductIds(const std::map<string, string> & productsMap) = 0;
226 
235  virtual bool productForId(const string & productId, InAppProduct * product) const = 0;
236 
244  virtual bool isPurchased(const string & productId) const = 0;
245 
253  virtual int32_t stockOfProduct(const string & productId) = 0;
254 
260  virtual void restorePurchases(const RestoreCallback & callback) = 0;
261 
267  virtual bool canPurchase() const = 0;
268 
276  virtual void purchase(const string & productId, int32_t quantity, const PurchaseCallback & callback) = 0;
277 
284  inline void purchase(const string & productId, const PurchaseCallback & callback) {
285  purchase(productId, 1, callback);
286  }
287 
295  virtual void consume(const string & productId, int32_t quantity, const ConsumeCallback & callback) = 0;
296 
302  virtual void finishPurchase(const string & transactionId) = 0;
303 
311  virtual void setValidationHandler(const ValidationHandler & handler) = 0;
312 
317  virtual void setLudeiServerValidationHandler() = 0;
318  };
319 
324  public:
325 
332  virtual void purchaseStarted(InAppService * service, const string & productId) = 0;
333 
341  virtual void purchaseFailed(InAppService * service, const string & productId, const InAppService::Error & error) = 0;
342 
349  virtual void purchaseCompleted(InAppService * service, const InAppPurchase & purchase) = 0;
350  };
351 
352 } }
353 
virtual void setLudeiServerValidationHandler()=0
string productId
Definition: InAppService.h:19
std::function< void(const string &receipt, const string &productId, const ValidationCompletion &completion)> ValidationHandler
Definition: InAppService.h:164
virtual bool isPurchased(const string &productId) const =0
virtual std::vector< InAppProduct > getProducts() const =0
bool empty() const
Definition: InAppService.h:112
std::function< void(const InAppService::Error &error)> RestoreCallback
Definition: InAppService.h:128
std::function< void(const std::vector< InAppProduct > &products, const InAppService::Error &error)> FetchCallback
Definition: InAppService.h:121
Definition: InAppService.h:41
Definition: InAppService.h:97
virtual void finishPurchase(const string &transactionId)=0
virtual int32_t stockOfProduct(const string &productId)=0
std::function< void(const InAppService::Error &error)> ValidationCompletion
Definition: InAppService.h:155
string title
Definition: InAppService.h:23
int32_t quantity
Definition: InAppService.h:57
virtual bool productForId(const string &productId, InAppProduct *product) const =0
int32_t code
Definition: InAppService.h:98
double price
Definition: InAppService.h:35
void purchase(const string &productId, const PurchaseCallback &callback)
Definition: InAppService.h:284
virtual void removePurchaseObserver(InAppPurchaseObserver *observer)=0
string description
Definition: InAppService.h:27
std::function< void(int32_t consumed, const InAppService::Error &error)> ConsumeCallback
Definition: InAppService.h:145
virtual void consume(const string &productId, int32_t quantity, const ConsumeCallback &callback)=0
static InAppService * create(InAppProvider provider=InAppProvider::AUTO)
virtual void purchaseStarted(InAppService *service, const string &productId)=0
string message
Definition: InAppService.h:106
string localizedPrice
Definition: InAppService.h:31
Definition: InAppService.h:91
string transactionId
Definition: InAppService.h:45
virtual void fetchProducts(const std::vector< string > &productIds, const FetchCallback &callback)=0
virtual bool canPurchase() const =0
virtual void setValidationHandler(const ValidationHandler &handler)=0
string productId
Definition: InAppService.h:49
virtual void addPurchaseObserver(InAppPurchaseObserver *observer)=0
virtual void purchaseFailed(InAppService *service, const string &productId, const InAppService::Error &error)=0
virtual void mapProductIds(const std::map< string, string > &productsMap)=0
std::function< void(const InAppPurchase &purchase, const InAppService::Error &error)> PurchaseCallback
Definition: InAppService.h:137
virtual void restorePurchases(const RestoreCallback &callback)=0
uint64_t purchaseDate
Definition: InAppService.h:53
virtual void purchase(const string &productId, int32_t quantity, const PurchaseCallback &callback)=0
Definition: InAppService.h:323
virtual void purchaseCompleted(InAppService *service, const InAppPurchase &purchase)=0
Definition: InAppService.h:15
Definition: InAppService.h:8