100 lines
2.2 KiB
C++
100 lines
2.2 KiB
C++
/*
|
|
This file is part of Telegram Desktop,
|
|
the official desktop application for the Telegram messaging service.
|
|
|
|
For license and copyright information please follow this link:
|
|
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|
*/
|
|
#pragma once
|
|
|
|
#include <QtCore/QString>
|
|
|
|
class QJsonObject;
|
|
|
|
namespace Stripe {
|
|
|
|
enum class CardBrand {
|
|
Visa,
|
|
Amex,
|
|
MasterCard,
|
|
Discover,
|
|
JCB,
|
|
DinersClub,
|
|
UnionPay,
|
|
Unknown,
|
|
};
|
|
|
|
enum class CardFundingType {
|
|
Debit,
|
|
Credit,
|
|
Prepaid,
|
|
Other,
|
|
};
|
|
|
|
class Card final {
|
|
public:
|
|
Card(const Card &other) = default;
|
|
Card &operator=(const Card &other) = default;
|
|
Card(Card &&other) = default;
|
|
Card &operator=(Card &&other) = default;
|
|
~Card() = default;
|
|
|
|
[[nodiscard]] static Card Empty();
|
|
[[nodiscard]] static Card DecodedObjectFromAPIResponse(
|
|
QJsonObject object);
|
|
|
|
[[nodiscard]] QString cardId() const;
|
|
[[nodiscard]] QString name() const;
|
|
[[nodiscard]] QString last4() const;
|
|
[[nodiscard]] QString dynamicLast4() const;
|
|
[[nodiscard]] CardBrand brand() const;
|
|
[[nodiscard]] CardFundingType funding() const;
|
|
[[nodiscard]] QString fingerprint() const;
|
|
[[nodiscard]] QString country() const;
|
|
[[nodiscard]] QString currency() const;
|
|
[[nodiscard]] quint32 expMonth() const;
|
|
[[nodiscard]] quint32 expYear() const;
|
|
[[nodiscard]] QString addressLine1() const;
|
|
[[nodiscard]] QString addressLine2() const;
|
|
[[nodiscard]] QString addressCity() const;
|
|
[[nodiscard]] QString addressState() const;
|
|
[[nodiscard]] QString addressZip() const;
|
|
[[nodiscard]] QString addressCountry() const;
|
|
|
|
[[nodiscard]] bool empty() const;
|
|
[[nodiscard]] explicit operator bool() const {
|
|
return !empty();
|
|
}
|
|
|
|
private:
|
|
Card(
|
|
QString id,
|
|
QString last4,
|
|
CardBrand brand,
|
|
quint32 expMonth,
|
|
quint32 expYear);
|
|
|
|
QString _cardId;
|
|
QString _name;
|
|
QString _last4;
|
|
QString _dynamicLast4;
|
|
CardBrand _brand = CardBrand::Unknown;
|
|
CardFundingType _funding = CardFundingType::Other;
|
|
QString _fingerprint;
|
|
QString _country;
|
|
QString _currency;
|
|
quint32 _expMonth = 0;
|
|
quint32 _expYear = 0;
|
|
QString _addressLine1;
|
|
QString _addressLine2;
|
|
QString _addressCity;
|
|
QString _addressState;
|
|
QString _addressZip;
|
|
QString _addressCountry;
|
|
|
|
};
|
|
|
|
[[nodiscard]] QString CardBrandToString(CardBrand brand);
|
|
|
|
} // namespace Stripe
|