2017-11-30 13:27:33 +00:00
|
|
|
// Copyright (c) 2017 Amaplex Software, Inc.
|
|
|
|
// Use of this source code is governed by the MIT license that can be
|
|
|
|
// found in the LICENSE file.
|
|
|
|
|
2021-11-22 07:34:31 +00:00
|
|
|
#ifndef ELECTRON_SHELL_BROWSER_MAC_IN_APP_PURCHASE_OBSERVER_H_
|
|
|
|
#define ELECTRON_SHELL_BROWSER_MAC_IN_APP_PURCHASE_OBSERVER_H_
|
2017-11-30 13:27:33 +00:00
|
|
|
|
|
|
|
#include <string>
|
2018-01-10 08:18:23 +00:00
|
|
|
#include <vector>
|
2017-11-30 13:27:33 +00:00
|
|
|
|
|
|
|
#include "base/callback.h"
|
2018-01-10 07:55:49 +00:00
|
|
|
#include "base/memory/weak_ptr.h"
|
2022-01-24 16:55:18 +00:00
|
|
|
#include "third_party/abseil-cpp/absl/types/optional.h"
|
2018-01-10 07:55:49 +00:00
|
|
|
|
|
|
|
#if defined(__OBJC__)
|
|
|
|
@class InAppTransactionObserver;
|
2018-04-18 01:44:10 +00:00
|
|
|
#else // __OBJC__
|
2018-01-10 07:55:49 +00:00
|
|
|
class InAppTransactionObserver;
|
2018-01-10 08:18:23 +00:00
|
|
|
#endif // __OBJC__
|
2017-11-30 13:27:33 +00:00
|
|
|
|
|
|
|
namespace in_app_purchase {
|
|
|
|
|
|
|
|
// --------------------------- Structures ---------------------------
|
|
|
|
|
2022-01-24 16:55:18 +00:00
|
|
|
struct PaymentDiscount {
|
|
|
|
std::string identifier;
|
|
|
|
std::string keyIdentifier;
|
|
|
|
std::string nonce;
|
|
|
|
std::string signature;
|
|
|
|
int timestamp;
|
|
|
|
|
|
|
|
PaymentDiscount();
|
|
|
|
PaymentDiscount(const PaymentDiscount&);
|
|
|
|
~PaymentDiscount();
|
|
|
|
};
|
|
|
|
|
2017-11-30 13:27:33 +00:00
|
|
|
struct Payment {
|
|
|
|
std::string productIdentifier = "";
|
|
|
|
int quantity = 1;
|
2022-01-24 16:55:18 +00:00
|
|
|
std::string applicationUsername;
|
|
|
|
absl::optional<PaymentDiscount> paymentDiscount;
|
|
|
|
|
|
|
|
Payment();
|
|
|
|
Payment(const Payment&);
|
|
|
|
~Payment();
|
2017-11-30 13:27:33 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct Transaction {
|
|
|
|
std::string transactionIdentifier = "";
|
|
|
|
std::string transactionDate = "";
|
|
|
|
std::string originalTransactionIdentifier = "";
|
|
|
|
int errorCode = 0;
|
|
|
|
std::string errorMessage = "";
|
|
|
|
std::string transactionState = "";
|
2018-01-10 08:06:27 +00:00
|
|
|
Payment payment;
|
2018-04-17 23:37:22 +00:00
|
|
|
|
|
|
|
Transaction();
|
|
|
|
Transaction(const Transaction&);
|
|
|
|
~Transaction();
|
2017-11-30 13:27:33 +00:00
|
|
|
};
|
|
|
|
|
2018-01-10 07:55:49 +00:00
|
|
|
// --------------------------- Classes ---------------------------
|
|
|
|
|
|
|
|
class TransactionObserver {
|
|
|
|
public:
|
|
|
|
TransactionObserver();
|
|
|
|
virtual ~TransactionObserver();
|
2017-11-30 13:27:33 +00:00
|
|
|
|
2021-11-03 11:41:45 +00:00
|
|
|
// disable copy
|
|
|
|
TransactionObserver(const TransactionObserver&) = delete;
|
|
|
|
TransactionObserver& operator=(const TransactionObserver&) = delete;
|
|
|
|
|
2018-01-10 08:18:23 +00:00
|
|
|
virtual void OnTransactionsUpdated(
|
|
|
|
const std::vector<Transaction>& transactions) = 0;
|
2017-11-30 13:27:33 +00:00
|
|
|
|
2018-01-10 07:55:49 +00:00
|
|
|
private:
|
2019-12-17 15:07:11 +00:00
|
|
|
InAppTransactionObserver* observer_;
|
2017-11-30 13:27:33 +00:00
|
|
|
|
2021-01-26 18:16:21 +00:00
|
|
|
base::WeakPtrFactory<TransactionObserver> weak_ptr_factory_{this};
|
2018-01-10 07:55:49 +00:00
|
|
|
};
|
2017-11-30 13:27:33 +00:00
|
|
|
|
|
|
|
} // namespace in_app_purchase
|
|
|
|
|
2021-11-22 07:34:31 +00:00
|
|
|
#endif // ELECTRON_SHELL_BROWSER_MAC_IN_APP_PURCHASE_OBSERVER_H_
|