paddle-python-sdk 0.3.2__py3-none-any.whl → 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- paddle_billing/Client.py +9 -13
- paddle_billing/Entities/Collections/PaymentMethodCollection.py +13 -0
- paddle_billing/Entities/Collections/__init__.py +1 -0
- paddle_billing/Entities/CustomerAuthToken.py +18 -0
- paddle_billing/Entities/PaymentMethod.py +38 -0
- paddle_billing/Entities/Price.py +0 -4
- paddle_billing/Entities/Reports/ReportFilter.py +1 -4
- paddle_billing/Entities/Shared/CustomData.py +0 -3
- paddle_billing/Entities/Shared/Paypal.py +15 -0
- paddle_billing/Entities/Shared/SavedPaymentMethodOrigin.py +6 -0
- paddle_billing/Entities/Shared/SavedPaymentMethodType.py +9 -0
- paddle_billing/Entities/Shared/TransactionLineItemPreview.py +5 -5
- paddle_billing/Entities/Shared/TransactionPreviewProduct.py +37 -0
- paddle_billing/Entities/Shared/__init__.py +3 -0
- paddle_billing/Entities/Subscriptions/SubscriptionAdjustmentItem.py +2 -2
- paddle_billing/Entities/Subscriptions/__init__.py +0 -8
- paddle_billing/Entities/Transactions/TransactionItem.py +0 -2
- paddle_billing/Entities/Transactions/TransactionItemPreviewWithPrice.py +3 -3
- paddle_billing/Entities/Transactions/TransactionPreviewPrice.py +59 -0
- paddle_billing/Entities/Transactions/__init__.py +0 -12
- paddle_billing/Notifications/Entities/Entity.py +3 -1
- paddle_billing/Notifications/Entities/PaymentMethod.py +32 -0
- paddle_billing/Notifications/Entities/PaymentMethodDeleted.py +35 -0
- paddle_billing/Notifications/Entities/Price.py +0 -4
- paddle_billing/Notifications/Entities/Reports/ReportFilter.py +1 -4
- paddle_billing/Notifications/Entities/Shared/CustomData.py +1 -1
- paddle_billing/Notifications/Entities/Shared/Paypal.py +15 -0
- paddle_billing/Notifications/Entities/Shared/SavedPaymentMethodDeletionReason.py +6 -0
- paddle_billing/Notifications/Entities/Shared/SavedPaymentMethodOrigin.py +6 -0
- paddle_billing/Notifications/Entities/Shared/SavedPaymentMethodType.py +9 -0
- paddle_billing/Notifications/Entities/Shared/__init__.py +6 -0
- paddle_billing/Notifications/Events/PaymentMethodDeleted.py +17 -0
- paddle_billing/Notifications/Events/PaymentMethodSaved.py +17 -0
- paddle_billing/Resources/Addresses/AddressesClient.py +2 -4
- paddle_billing/Resources/Addresses/Operations/CreateAddress.py +3 -5
- paddle_billing/Resources/Addresses/Operations/UpdateAddress.py +3 -5
- paddle_billing/Resources/Adjustments/AdjustmentsClient.py +1 -1
- paddle_billing/Resources/Adjustments/Operations/CreateAdjustment.py +3 -18
- paddle_billing/Resources/Businesses/BusinessesClient.py +2 -4
- paddle_billing/Resources/Businesses/Operations/CreateBusiness.py +3 -5
- paddle_billing/Resources/Businesses/Operations/UpdateBusiness.py +3 -5
- paddle_billing/Resources/Customers/CustomersClient.py +14 -3
- paddle_billing/Resources/Customers/Operations/CreateCustomer.py +3 -5
- paddle_billing/Resources/Customers/Operations/UpdateCustomer.py +3 -5
- paddle_billing/Resources/Discounts/DiscountsClient.py +2 -2
- paddle_billing/Resources/Discounts/Operations/CreateDiscount.py +5 -6
- paddle_billing/Resources/Discounts/Operations/UpdateDiscount.py +5 -6
- paddle_billing/Resources/NotificationSettings/NotificationSettingsClient.py +2 -4
- paddle_billing/Resources/NotificationSettings/Operations/CreateNotificationSetting.py +3 -5
- paddle_billing/Resources/NotificationSettings/Operations/UpdateNotificationSetting.py +3 -5
- paddle_billing/Resources/PaymentMethods/Operations/ListPaymentMethods.py +32 -0
- paddle_billing/Resources/PaymentMethods/Operations/__init__.py +1 -0
- paddle_billing/Resources/PaymentMethods/PaymentMethodsClient.py +45 -0
- paddle_billing/Resources/PaymentMethods/__init__.py +0 -0
- paddle_billing/Resources/Prices/Operations/CreatePrice.py +3 -5
- paddle_billing/Resources/Prices/Operations/UpdatePrice.py +3 -5
- paddle_billing/Resources/Prices/PricesClient.py +2 -2
- paddle_billing/Resources/PricingPreviews/Operations/PreviewPrice.py +3 -5
- paddle_billing/Resources/PricingPreviews/PricingPreviewsClient.py +1 -1
- paddle_billing/Resources/Products/Operations/CreateProduct.py +3 -5
- paddle_billing/Resources/Products/Operations/UpdateProduct.py +3 -5
- paddle_billing/Resources/Products/ProductsClient.py +2 -2
- paddle_billing/Resources/Reports/Operations/CreateReport.py +5 -3
- paddle_billing/Resources/Reports/Operations/Filters/Filter.py +1 -1
- paddle_billing/Resources/Reports/ReportsClient.py +1 -1
- paddle_billing/Resources/Subscriptions/Operations/CancelSubscription.py +3 -5
- paddle_billing/{Entities/Transactions/TransactionUpdateTransactionItem.py → Resources/Subscriptions/Operations/Charge/SubscriptionChargeItem.py} +1 -1
- paddle_billing/Resources/Subscriptions/Operations/Charge/SubscriptionChargeItemWithPrice.py +13 -0
- paddle_billing/Resources/Subscriptions/Operations/Charge/__init__.py +4 -0
- paddle_billing/Resources/Subscriptions/Operations/CreateOneTimeCharge.py +9 -8
- paddle_billing/Resources/Subscriptions/Operations/PauseSubscription.py +3 -8
- paddle_billing/Resources/Subscriptions/Operations/PreviewOneTimeCharge.py +9 -8
- paddle_billing/Resources/Subscriptions/Operations/PreviewUpdateSubscription.py +3 -3
- paddle_billing/Resources/Subscriptions/Operations/Price/SubscriptionNonCatalogPrice.py +24 -0
- paddle_billing/Resources/Subscriptions/Operations/Price/SubscriptionNonCatalogPriceWithProduct.py +28 -0
- paddle_billing/Resources/Subscriptions/Operations/Price/SubscriptionNonCatalogProduct.py +15 -0
- paddle_billing/Resources/Subscriptions/Operations/Price/__init__.py +9 -0
- paddle_billing/Resources/Subscriptions/Operations/ResumeSubscription.py +2 -8
- paddle_billing/Resources/Subscriptions/Operations/Update/SubscriptionUpdateItem.py +9 -0
- paddle_billing/Resources/Subscriptions/Operations/Update/SubscriptionUpdateItemWithPrice.py +13 -0
- paddle_billing/Resources/Subscriptions/Operations/Update/__init__.py +4 -0
- paddle_billing/Resources/Subscriptions/Operations/UpdateSubscription.py +3 -3
- paddle_billing/Resources/Subscriptions/SubscriptionsClient.py +5 -7
- paddle_billing/Resources/Transactions/Operations/Create/TransactionCreateItem.py +8 -0
- paddle_billing/{Entities/Transactions → Resources/Transactions/Operations/Create}/TransactionCreateItemWithPrice.py +2 -2
- paddle_billing/Resources/Transactions/Operations/Create/__init__.py +4 -0
- paddle_billing/Resources/Transactions/Operations/CreateTransaction.py +5 -2
- paddle_billing/Resources/Transactions/Operations/Preview/TransactionItemPreviewWithNonCatalogPrice.py +15 -0
- paddle_billing/Resources/Transactions/Operations/Preview/TransactionItemPreviewWithPriceId.py +10 -0
- paddle_billing/Resources/Transactions/Operations/Preview/__init__.py +6 -0
- paddle_billing/Resources/Transactions/Operations/PreviewTransactionByAddress.py +4 -6
- paddle_billing/Resources/Transactions/Operations/PreviewTransactionByCustomer.py +4 -6
- paddle_billing/Resources/Transactions/Operations/PreviewTransactionByIP.py +4 -6
- paddle_billing/Resources/Transactions/Operations/Price/TransactionNonCatalogPrice.py +24 -0
- paddle_billing/Resources/Transactions/Operations/Price/TransactionNonCatalogPriceWithProduct.py +28 -0
- paddle_billing/Resources/Transactions/Operations/Price/TransactionNonCatalogProduct.py +15 -0
- paddle_billing/Resources/Transactions/Operations/Price/__init__.py +7 -0
- paddle_billing/Resources/Transactions/Operations/Update/TransactionUpdateItem.py +8 -0
- paddle_billing/Resources/Transactions/Operations/Update/TransactionUpdateItemWithPrice.py +13 -0
- paddle_billing/Resources/Transactions/Operations/Update/__init__.py +4 -0
- paddle_billing/Resources/Transactions/Operations/UpdateTransaction.py +6 -3
- paddle_billing/Resources/Transactions/TransactionsClient.py +1 -1
- {paddle_python_sdk-0.3.2.dist-info → paddle_python_sdk-1.1.0.dist-info}/METADATA +1 -1
- {paddle_python_sdk-0.3.2.dist-info → paddle_python_sdk-1.1.0.dist-info}/RECORD +113 -85
- {paddle_python_sdk-0.3.2.dist-info → paddle_python_sdk-1.1.0.dist-info}/WHEEL +1 -1
- tests/Functional/Resources/Customers/test_CustomersClient.py +34 -0
- tests/Functional/Resources/Discounts/test_DiscountsClient.py +3 -2
- tests/Functional/Resources/PaymentMethods/__init__.py +0 -0
- tests/Functional/Resources/PaymentMethods/test_PaymentMethodsClient.py +287 -0
- tests/Functional/Resources/Subscriptions/test_SubscriptionsClient.py +273 -75
- tests/Functional/Resources/Transactions/test_TransactionsClient.py +233 -13
- paddle_billing/Entities/Subscriptions/SubscriptionItems.py +0 -18
- paddle_billing/Entities/Subscriptions/SubscriptionItemsWithPrice.py +0 -23
- paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogPrice.py +0 -33
- paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogPriceWithProduct.py +0 -35
- paddle_billing/Entities/Subscriptions/SubscriptionNonCatalogProduct.py +0 -25
- paddle_billing/Entities/Subscriptions/SubscriptionUpdateItem.py +0 -15
- paddle_billing/Entities/Transactions/TransactionCreateItem.py +0 -15
- paddle_billing/Entities/Transactions/TransactionItemPreviewWithNonCatalogPrice.py +0 -29
- paddle_billing/Entities/Transactions/TransactionItemPreviewWithPriceId.py +0 -17
- paddle_billing/Entities/Transactions/TransactionNonCatalogPrice.py +0 -38
- paddle_billing/Entities/Transactions/TransactionNonCatalogPriceWithProduct.py +0 -40
- paddle_billing/Entities/Transactions/TransactionNonCatalogProduct.py +0 -24
- {paddle_python_sdk-0.3.2.dist-info → paddle_python_sdk-1.1.0.dist-info}/LICENSE +0 -0
- {paddle_python_sdk-0.3.2.dist-info → paddle_python_sdk-1.1.0.dist-info}/top_level.txt +0 -0
paddle_billing/Client.py
CHANGED
|
@@ -27,6 +27,7 @@ from paddle_billing.Resources.IPAddresses.IPAddressesClient import IPAddressesCl
|
|
|
27
27
|
from paddle_billing.Resources.Notifications.NotificationsClient import NotificationsClient
|
|
28
28
|
from paddle_billing.Resources.NotificationLogs.NotificationLogsClient import NotificationLogsClient
|
|
29
29
|
from paddle_billing.Resources.NotificationSettings.NotificationSettingsClient import NotificationSettingsClient
|
|
30
|
+
from paddle_billing.Resources.PaymentMethods.PaymentMethodsClient import PaymentMethodsClient
|
|
30
31
|
from paddle_billing.Resources.Prices.PricesClient import PricesClient
|
|
31
32
|
from paddle_billing.Resources.PricingPreviews.PricingPreviewsClient import PricingPreviewsClient
|
|
32
33
|
from paddle_billing.Resources.Products.ProductsClient import ProductsClient
|
|
@@ -37,6 +38,12 @@ from paddle_billing.Resources.Transactions.TransactionsClient import Transaction
|
|
|
37
38
|
|
|
38
39
|
class PayloadEncoder(JSONEncoder):
|
|
39
40
|
def default(self, z):
|
|
41
|
+
if isinstance(z, Undefined):
|
|
42
|
+
return None
|
|
43
|
+
|
|
44
|
+
if hasattr(z, "to_json") and callable(z.to_json):
|
|
45
|
+
return z.to_json()
|
|
46
|
+
|
|
40
47
|
if is_dataclass(z):
|
|
41
48
|
data = {}
|
|
42
49
|
for field in fields(z):
|
|
@@ -44,12 +51,6 @@ class PayloadEncoder(JSONEncoder):
|
|
|
44
51
|
|
|
45
52
|
return FiltersUndefined.filter_undefined_values(data)
|
|
46
53
|
|
|
47
|
-
if isinstance(z, Undefined):
|
|
48
|
-
return None
|
|
49
|
-
|
|
50
|
-
if hasattr(z, "to_json") and callable(z.to_json):
|
|
51
|
-
return z.to_json()
|
|
52
|
-
|
|
53
54
|
return super().default(z)
|
|
54
55
|
|
|
55
56
|
|
|
@@ -90,6 +91,7 @@ class Client:
|
|
|
90
91
|
self.notifications = NotificationsClient(self)
|
|
91
92
|
self.notification_logs = NotificationLogsClient(self)
|
|
92
93
|
self.notification_settings = NotificationSettingsClient(self)
|
|
94
|
+
self.payment_methods = PaymentMethodsClient(self)
|
|
93
95
|
self.prices = PricesClient(self)
|
|
94
96
|
self.pricing_previews = PricingPreviewsClient(self)
|
|
95
97
|
self.products = ProductsClient(self)
|
|
@@ -183,17 +185,11 @@ class Client:
|
|
|
183
185
|
def post_raw(
|
|
184
186
|
self, url: str, payload: dict | Operation | None = None, parameters: HasParameters | dict | None = None
|
|
185
187
|
) -> Response:
|
|
186
|
-
if isinstance(payload, dict):
|
|
187
|
-
payload = FiltersUndefined.filter_undefined_values(payload) # Strip Undefined items from the dict
|
|
188
|
-
|
|
189
188
|
url = Client.format_uri_parameters(url, parameters) if parameters else url
|
|
190
189
|
|
|
191
190
|
return self._make_request("POST", url, payload)
|
|
192
191
|
|
|
193
192
|
def patch_raw(self, url: str, payload: dict | Operation | None) -> Response:
|
|
194
|
-
if isinstance(payload, dict):
|
|
195
|
-
payload = FiltersUndefined.filter_undefined_values(payload) # Strip Undefined items from the dict
|
|
196
|
-
|
|
197
193
|
return self._make_request("PATCH", url, payload)
|
|
198
194
|
|
|
199
195
|
def delete_raw(self, url: str) -> Response:
|
|
@@ -206,7 +202,7 @@ class Client:
|
|
|
206
202
|
"Authorization": f"Bearer {self.__api_key}",
|
|
207
203
|
"Content-Type": "application/json",
|
|
208
204
|
"Paddle-Version": str(self.use_api_version),
|
|
209
|
-
"User-Agent": "PaddleSDK/python
|
|
205
|
+
"User-Agent": "PaddleSDK/python 1.1.0",
|
|
210
206
|
}
|
|
211
207
|
)
|
|
212
208
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from paddle_billing.Entities.Collections.Collection import Collection
|
|
4
|
+
from paddle_billing.Entities.Collections.Paginator import Paginator
|
|
5
|
+
from paddle_billing.Entities.PaymentMethod import PaymentMethod
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class PaymentMethodCollection(Collection[PaymentMethod]):
|
|
9
|
+
@classmethod
|
|
10
|
+
def from_list(cls, items_data: list, paginator: Paginator | None = None) -> PaymentMethodCollection:
|
|
11
|
+
items: list[PaymentMethod] = [PaymentMethod.from_dict(item) for item in items_data]
|
|
12
|
+
|
|
13
|
+
return PaymentMethodCollection(items, paginator)
|
|
@@ -11,6 +11,7 @@ from paddle_billing.Entities.Collections.NotificationCollection import Notificat
|
|
|
11
11
|
from paddle_billing.Entities.Collections.NotificationLogCollection import NotificationLogCollection
|
|
12
12
|
from paddle_billing.Entities.Collections.NotificationSettingCollection import NotificationSettingCollection
|
|
13
13
|
from paddle_billing.Entities.Collections.Paginator import Paginator
|
|
14
|
+
from paddle_billing.Entities.Collections.PaymentMethodCollection import PaymentMethodCollection
|
|
14
15
|
from paddle_billing.Entities.Collections.PriceCollection import PriceCollection
|
|
15
16
|
from paddle_billing.Entities.Collections.ProductCollection import ProductCollection
|
|
16
17
|
from paddle_billing.Entities.Collections.ReportCollection import ReportCollection
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Entities.Entity import Entity
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@dataclass
|
|
9
|
+
class CustomerAuthToken(Entity):
|
|
10
|
+
customer_auth_token: str
|
|
11
|
+
expires_at: datetime
|
|
12
|
+
|
|
13
|
+
@staticmethod
|
|
14
|
+
def from_dict(data: dict) -> CustomerAuthToken:
|
|
15
|
+
return CustomerAuthToken(
|
|
16
|
+
customer_auth_token=data["customer_auth_token"],
|
|
17
|
+
expires_at=datetime.fromisoformat(data["expires_at"]),
|
|
18
|
+
)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Entities.Entity import Entity
|
|
6
|
+
from paddle_billing.Entities.Shared import (
|
|
7
|
+
Card,
|
|
8
|
+
Paypal,
|
|
9
|
+
SavedPaymentMethodOrigin,
|
|
10
|
+
SavedPaymentMethodType,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass
|
|
15
|
+
class PaymentMethod(Entity):
|
|
16
|
+
id: str
|
|
17
|
+
customer_id: str
|
|
18
|
+
address_id: str
|
|
19
|
+
type: SavedPaymentMethodType | None
|
|
20
|
+
card: Card | None
|
|
21
|
+
paypal: Paypal | None
|
|
22
|
+
origin: SavedPaymentMethodOrigin
|
|
23
|
+
saved_at: datetime
|
|
24
|
+
updated_at: datetime
|
|
25
|
+
|
|
26
|
+
@staticmethod
|
|
27
|
+
def from_dict(data: dict) -> PaymentMethod:
|
|
28
|
+
return PaymentMethod(
|
|
29
|
+
id=data["id"],
|
|
30
|
+
customer_id=data["customer_id"],
|
|
31
|
+
address_id=data["address_id"],
|
|
32
|
+
type=SavedPaymentMethodType(data["type"]),
|
|
33
|
+
card=Card.from_dict(data["card"]) if data.get("card") else None,
|
|
34
|
+
paypal=Paypal.from_dict(data["paypal"]) if data.get("paypal") else None,
|
|
35
|
+
origin=SavedPaymentMethodOrigin(data["origin"]),
|
|
36
|
+
saved_at=datetime.fromisoformat(data["saved_at"]),
|
|
37
|
+
updated_at=datetime.fromisoformat(data["updated_at"]),
|
|
38
|
+
)
|
paddle_billing/Entities/Price.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
from dataclasses import
|
|
2
|
+
from dataclasses import dataclass
|
|
3
3
|
|
|
4
4
|
from paddle_billing.Entities.Reports import ReportFilterName, ReportFilterOperator
|
|
5
5
|
|
|
@@ -13,6 +13,3 @@ class ReportFilter:
|
|
|
13
13
|
@staticmethod
|
|
14
14
|
def from_dict(data: dict) -> ReportFilter:
|
|
15
15
|
return ReportFilter(**data)
|
|
16
|
-
|
|
17
|
-
def get_parameters(self) -> dict:
|
|
18
|
-
return asdict(self)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class Paypal:
|
|
7
|
+
email: str
|
|
8
|
+
reference: str
|
|
9
|
+
|
|
10
|
+
@staticmethod
|
|
11
|
+
def from_dict(data: dict) -> Paypal:
|
|
12
|
+
return Paypal(
|
|
13
|
+
email=data["email"],
|
|
14
|
+
reference=data["reference"],
|
|
15
|
+
)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
from paddle_billing.PaddleStrEnum import PaddleStrEnum, PaddleStrEnumMeta
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class SavedPaymentMethodOrigin(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
|
|
5
|
+
SavedDuringPurchase: "SavedPaymentMethodOrigin" = "saved_during_purchase"
|
|
6
|
+
Subscription: "SavedPaymentMethodOrigin" = "subscription"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from paddle_billing.PaddleStrEnum import PaddleStrEnum, PaddleStrEnumMeta
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class SavedPaymentMethodType(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
|
|
5
|
+
Alipay: "SavedPaymentMethodType" = "alipay"
|
|
6
|
+
ApplePay: "SavedPaymentMethodType" = "apple_pay"
|
|
7
|
+
Card: "SavedPaymentMethodType" = "card"
|
|
8
|
+
GooglePay: "SavedPaymentMethodType" = "google_pay"
|
|
9
|
+
Paypal: "SavedPaymentMethodType" = "paypal"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
from dataclasses import dataclass
|
|
3
3
|
|
|
4
|
-
from paddle_billing.Entities.
|
|
4
|
+
from paddle_billing.Entities.Shared.TransactionPreviewProduct import TransactionPreviewProduct
|
|
5
5
|
from paddle_billing.Entities.Shared.Totals import Totals
|
|
6
6
|
from paddle_billing.Entities.Shared.UnitTotals import UnitTotals
|
|
7
7
|
from paddle_billing.Entities.Shared.Proration import Proration
|
|
@@ -9,22 +9,22 @@ from paddle_billing.Entities.Shared.Proration import Proration
|
|
|
9
9
|
|
|
10
10
|
@dataclass
|
|
11
11
|
class TransactionLineItemPreview:
|
|
12
|
-
price_id: str
|
|
12
|
+
price_id: str | None
|
|
13
13
|
quantity: int
|
|
14
14
|
tax_rate: str
|
|
15
15
|
unit_totals: UnitTotals
|
|
16
16
|
totals: Totals
|
|
17
|
-
product:
|
|
17
|
+
product: TransactionPreviewProduct
|
|
18
18
|
proration: Proration | None
|
|
19
19
|
|
|
20
20
|
@staticmethod
|
|
21
21
|
def from_dict(data: dict) -> TransactionLineItemPreview:
|
|
22
22
|
return TransactionLineItemPreview(
|
|
23
|
-
price_id=data
|
|
23
|
+
price_id=data.get("price_id"),
|
|
24
24
|
quantity=data["quantity"],
|
|
25
25
|
tax_rate=data["tax_rate"],
|
|
26
26
|
unit_totals=UnitTotals.from_dict(data["unit_totals"]),
|
|
27
27
|
totals=Totals.from_dict(data["totals"]),
|
|
28
|
-
product=
|
|
28
|
+
product=TransactionPreviewProduct.from_dict(data["product"]),
|
|
29
29
|
proration=Proration.from_dict(data["proration"]) if data.get("proration") else None,
|
|
30
30
|
)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Entities.Entity import Entity
|
|
6
|
+
from paddle_billing.Entities.Shared import CatalogType, CustomData, ImportMeta, Status, TaxCategory
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class TransactionPreviewProduct(Entity):
|
|
11
|
+
id: str | None
|
|
12
|
+
name: str
|
|
13
|
+
description: str | None
|
|
14
|
+
tax_category: TaxCategory
|
|
15
|
+
image_url: str | None
|
|
16
|
+
status: Status
|
|
17
|
+
created_at: datetime
|
|
18
|
+
updated_at: datetime
|
|
19
|
+
type: CatalogType | None = None
|
|
20
|
+
custom_data: CustomData | None = None
|
|
21
|
+
import_meta: ImportMeta | None = None
|
|
22
|
+
|
|
23
|
+
@staticmethod
|
|
24
|
+
def from_dict(data: dict) -> TransactionPreviewProduct:
|
|
25
|
+
return TransactionPreviewProduct(
|
|
26
|
+
id=data.get("id"),
|
|
27
|
+
name=data["name"],
|
|
28
|
+
description=data.get("description"),
|
|
29
|
+
tax_category=TaxCategory(data["tax_category"]),
|
|
30
|
+
image_url=data.get("image_url"),
|
|
31
|
+
status=Status(data["status"]),
|
|
32
|
+
created_at=datetime.fromisoformat(data["created_at"]),
|
|
33
|
+
updated_at=datetime.fromisoformat(data["updated_at"]),
|
|
34
|
+
type=CatalogType(data["type"]) if data.get("type") else None,
|
|
35
|
+
custom_data=CustomData(data["custom_data"]) if data.get("custom_data") else None,
|
|
36
|
+
import_meta=ImportMeta.from_dict(data["import_meta"]) if data.get("import_meta") else None,
|
|
37
|
+
)
|
|
@@ -31,8 +31,11 @@ from paddle_billing.Entities.Shared.Pagination import Pagination
|
|
|
31
31
|
from paddle_billing.Entities.Shared.PaymentAttemptStatus import PaymentAttemptStatus
|
|
32
32
|
from paddle_billing.Entities.Shared.PaymentMethodType import PaymentMethodType
|
|
33
33
|
from paddle_billing.Entities.Shared.PayoutTotalsAdjustment import PayoutTotalsAdjustment
|
|
34
|
+
from paddle_billing.Entities.Shared.Paypal import Paypal
|
|
34
35
|
from paddle_billing.Entities.Shared.PriceQuantity import PriceQuantity
|
|
35
36
|
from paddle_billing.Entities.Shared.Proration import Proration
|
|
37
|
+
from paddle_billing.Entities.Shared.SavedPaymentMethodOrigin import SavedPaymentMethodOrigin
|
|
38
|
+
from paddle_billing.Entities.Shared.SavedPaymentMethodType import SavedPaymentMethodType
|
|
36
39
|
from paddle_billing.Entities.Shared.Status import Status
|
|
37
40
|
from paddle_billing.Entities.Shared.TransactionStatus import TransactionStatus
|
|
38
41
|
from paddle_billing.Entities.Shared.TaxCategory import TaxCategory
|
|
@@ -9,7 +9,7 @@ class SubscriptionAdjustmentItem:
|
|
|
9
9
|
item_id: str
|
|
10
10
|
type: AdjustmentType
|
|
11
11
|
amount: str | None
|
|
12
|
-
proration: Proration
|
|
12
|
+
proration: Proration | None
|
|
13
13
|
totals: AdjustmentItemTotals
|
|
14
14
|
|
|
15
15
|
@staticmethod
|
|
@@ -18,6 +18,6 @@ class SubscriptionAdjustmentItem:
|
|
|
18
18
|
item_id=data["item_id"],
|
|
19
19
|
type=AdjustmentType(data["type"]),
|
|
20
20
|
amount=data.get("amount"),
|
|
21
|
-
proration=Proration.from_dict(data["proration"]),
|
|
21
|
+
proration=Proration.from_dict(data["proration"]) if data.get("proration") else None,
|
|
22
22
|
totals=AdjustmentItemTotals.from_dict(data["totals"]),
|
|
23
23
|
)
|
|
@@ -6,15 +6,8 @@ from paddle_billing.Entities.Subscriptions.SubscriptionDiscount import Subscript
|
|
|
6
6
|
from paddle_billing.Entities.Subscriptions.SubscriptionEffectiveFrom import SubscriptionEffectiveFrom
|
|
7
7
|
from paddle_billing.Entities.Subscriptions.SubscriptionItem import SubscriptionItem
|
|
8
8
|
from paddle_billing.Entities.Subscriptions.SubscriptionItemStatus import SubscriptionItemStatus
|
|
9
|
-
from paddle_billing.Entities.Subscriptions.SubscriptionItems import SubscriptionItems
|
|
10
|
-
from paddle_billing.Entities.Subscriptions.SubscriptionItemsWithPrice import SubscriptionItemsWithPrice
|
|
11
9
|
from paddle_billing.Entities.Subscriptions.SubscriptionManagementUrls import SubscriptionManagementUrls
|
|
12
10
|
from paddle_billing.Entities.Subscriptions.SubscriptionNextTransaction import SubscriptionNextTransaction
|
|
13
|
-
from paddle_billing.Entities.Subscriptions.SubscriptionNonCatalogPrice import SubscriptionNonCatalogPrice
|
|
14
|
-
from paddle_billing.Entities.Subscriptions.SubscriptionNonCatalogPriceWithProduct import (
|
|
15
|
-
SubscriptionNonCatalogPriceWithProduct,
|
|
16
|
-
)
|
|
17
|
-
from paddle_billing.Entities.Subscriptions.SubscriptionNonCatalogProduct import SubscriptionNonCatalogProduct
|
|
18
11
|
from paddle_billing.Entities.Subscriptions.SubscriptionOnPaymentFailure import SubscriptionOnPaymentFailure
|
|
19
12
|
from paddle_billing.Entities.Subscriptions.SubscriptionPreviewSubscriptionUpdateSummary import (
|
|
20
13
|
SubscriptionPreviewSubscriptionUpdateSummary,
|
|
@@ -26,4 +19,3 @@ from paddle_billing.Entities.Subscriptions.SubscriptionResumeEffectiveFrom impor
|
|
|
26
19
|
from paddle_billing.Entities.Subscriptions.SubscriptionScheduledChange import SubscriptionScheduledChange
|
|
27
20
|
from paddle_billing.Entities.Subscriptions.SubscriptionScheduledChangeAction import SubscriptionScheduledChangeAction
|
|
28
21
|
from paddle_billing.Entities.Subscriptions.SubscriptionStatus import SubscriptionStatus
|
|
29
|
-
from paddle_billing.Entities.Subscriptions.SubscriptionUpdateItem import SubscriptionUpdateItem
|
|
@@ -8,7 +8,6 @@ from paddle_billing.Entities.Shared.Proration import Proration
|
|
|
8
8
|
|
|
9
9
|
@dataclass
|
|
10
10
|
class TransactionItem:
|
|
11
|
-
price_id: str | None
|
|
12
11
|
price: Price
|
|
13
12
|
quantity: int
|
|
14
13
|
proration: Proration | None
|
|
@@ -16,7 +15,6 @@ class TransactionItem:
|
|
|
16
15
|
@staticmethod
|
|
17
16
|
def from_dict(data: dict) -> TransactionItem:
|
|
18
17
|
return TransactionItem(
|
|
19
|
-
price_id=data.get("price_id"),
|
|
20
18
|
price=Price.from_dict(data["price"]),
|
|
21
19
|
quantity=data["quantity"],
|
|
22
20
|
proration=Proration.from_dict(data["proration"]) if data.get("proration") else None,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
from dataclasses import dataclass
|
|
3
3
|
|
|
4
|
-
from paddle_billing.Entities.
|
|
4
|
+
from paddle_billing.Entities.Transactions.TransactionPreviewPrice import TransactionPreviewPrice
|
|
5
5
|
|
|
6
6
|
from paddle_billing.Entities.Shared.Proration import Proration
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
@dataclass
|
|
10
10
|
class TransactionItemPreviewWithPrice:
|
|
11
|
-
price:
|
|
11
|
+
price: TransactionPreviewPrice
|
|
12
12
|
quantity: int
|
|
13
13
|
include_in_totals: bool
|
|
14
14
|
proration: Proration | None
|
|
@@ -16,7 +16,7 @@ class TransactionItemPreviewWithPrice:
|
|
|
16
16
|
@staticmethod
|
|
17
17
|
def from_dict(data: dict) -> TransactionItemPreviewWithPrice:
|
|
18
18
|
return TransactionItemPreviewWithPrice(
|
|
19
|
-
price=
|
|
19
|
+
price=TransactionPreviewPrice.from_dict(data["price"]),
|
|
20
20
|
quantity=data["quantity"],
|
|
21
21
|
include_in_totals=data["include_in_totals"],
|
|
22
22
|
proration=Proration.from_dict(data["proration"]) if data.get("proration") else None,
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Entities.Entity import Entity
|
|
6
|
+
from paddle_billing.Entities.Shared import (
|
|
7
|
+
CatalogType,
|
|
8
|
+
CustomData,
|
|
9
|
+
Duration,
|
|
10
|
+
ImportMeta,
|
|
11
|
+
Money,
|
|
12
|
+
PriceQuantity,
|
|
13
|
+
Status,
|
|
14
|
+
TaxMode,
|
|
15
|
+
UnitPriceOverride,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@dataclass
|
|
20
|
+
class TransactionPreviewPrice(Entity):
|
|
21
|
+
id: str | None
|
|
22
|
+
product_id: str | None
|
|
23
|
+
name: str | None
|
|
24
|
+
description: str
|
|
25
|
+
type: CatalogType
|
|
26
|
+
billing_cycle: Duration | None
|
|
27
|
+
trial_period: Duration | None
|
|
28
|
+
tax_mode: TaxMode
|
|
29
|
+
unit_price: Money
|
|
30
|
+
unit_price_overrides: list[UnitPriceOverride]
|
|
31
|
+
quantity: PriceQuantity
|
|
32
|
+
status: Status
|
|
33
|
+
custom_data: CustomData | None
|
|
34
|
+
import_meta: ImportMeta | None
|
|
35
|
+
created_at: datetime
|
|
36
|
+
updated_at: datetime
|
|
37
|
+
|
|
38
|
+
@staticmethod
|
|
39
|
+
def from_dict(data: dict) -> TransactionPreviewPrice:
|
|
40
|
+
return TransactionPreviewPrice(
|
|
41
|
+
id=data.get("id"),
|
|
42
|
+
product_id=data.get("product_id"),
|
|
43
|
+
name=data.get("name"),
|
|
44
|
+
description=data["description"],
|
|
45
|
+
unit_price=Money.from_dict(data["unit_price"]),
|
|
46
|
+
quantity=PriceQuantity.from_dict(data["quantity"]),
|
|
47
|
+
status=Status(data["status"]),
|
|
48
|
+
tax_mode=TaxMode(data.get("tax_mode")),
|
|
49
|
+
created_at=datetime.fromisoformat(data["created_at"]),
|
|
50
|
+
updated_at=datetime.fromisoformat(data["updated_at"]),
|
|
51
|
+
unit_price_overrides=[
|
|
52
|
+
UnitPriceOverride.from_dict(override) for override in data.get("unit_price_overrides", [])
|
|
53
|
+
],
|
|
54
|
+
type=CatalogType(data.get("type")) if data.get("type") else None,
|
|
55
|
+
billing_cycle=Duration.from_dict(data["billing_cycle"]) if data.get("billing_cycle") else None,
|
|
56
|
+
trial_period=Duration.from_dict(data["trial_period"]) if data.get("trial_period") else None,
|
|
57
|
+
custom_data=CustomData(data["custom_data"]) if data.get("custom_data") else None,
|
|
58
|
+
import_meta=ImportMeta.from_dict(data["import_meta"]) if data.get("import_meta") else None,
|
|
59
|
+
)
|
|
@@ -1,19 +1,7 @@
|
|
|
1
1
|
from paddle_billing.Entities.Transactions.TransactionAdjustmentsTotals import TransactionAdjustmentsTotals
|
|
2
2
|
from paddle_billing.Entities.Transactions.TransactionBreakdown import TransactionBreakdown
|
|
3
3
|
from paddle_billing.Entities.Transactions.TransactionCardType import TransactionCardType
|
|
4
|
-
from paddle_billing.Entities.Transactions.TransactionCreateItem import TransactionCreateItem
|
|
5
|
-
from paddle_billing.Entities.Transactions.TransactionCreateItemWithPrice import TransactionCreateItemWithPrice
|
|
6
|
-
from paddle_billing.Entities.Transactions.TransactionItemPreviewWithNonCatalogPrice import (
|
|
7
|
-
TransactionItemPreviewWithNonCatalogPrice,
|
|
8
|
-
)
|
|
9
|
-
from paddle_billing.Entities.Transactions.TransactionItemPreviewWithPriceId import TransactionItemPreviewWithPriceId
|
|
10
|
-
from paddle_billing.Entities.Transactions.TransactionNonCatalogPrice import TransactionNonCatalogPrice
|
|
11
|
-
from paddle_billing.Entities.Transactions.TransactionNonCatalogPriceWithProduct import (
|
|
12
|
-
TransactionNonCatalogPriceWithProduct,
|
|
13
|
-
)
|
|
14
|
-
from paddle_billing.Entities.Transactions.TransactionNonCatalogProduct import TransactionNonCatalogProduct
|
|
15
4
|
from paddle_billing.Entities.Shared.TimePeriod import TimePeriod
|
|
16
|
-
from paddle_billing.Entities.Transactions.TransactionUpdateTransactionItem import TransactionUpdateTransactionItem
|
|
17
5
|
|
|
18
6
|
|
|
19
7
|
# These cause circular imports
|
|
@@ -44,10 +44,12 @@ class Entity(ABC, EntityDict):
|
|
|
44
44
|
def _resolve_event_class_name(event_type) -> str:
|
|
45
45
|
if event_type == "subscription.created":
|
|
46
46
|
return "SubscriptionCreated"
|
|
47
|
+
if event_type == "payment_method.deleted":
|
|
48
|
+
return "PaymentMethodDeleted"
|
|
47
49
|
|
|
48
50
|
event_entity = event_type.split(".")[0] or ""
|
|
49
51
|
|
|
50
|
-
return event_entity.lower().title()
|
|
52
|
+
return event_entity.lower().title().replace("_", "")
|
|
51
53
|
|
|
52
54
|
def to_dict(self) -> dict:
|
|
53
55
|
return asdict(self)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Notifications.Entities.Entity import Entity
|
|
6
|
+
from paddle_billing.Notifications.Entities.Shared import (
|
|
7
|
+
SavedPaymentMethodOrigin,
|
|
8
|
+
SavedPaymentMethodType,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class PaymentMethod(Entity):
|
|
14
|
+
id: str
|
|
15
|
+
customer_id: str
|
|
16
|
+
address_id: str
|
|
17
|
+
type: SavedPaymentMethodType | None
|
|
18
|
+
origin: SavedPaymentMethodOrigin
|
|
19
|
+
saved_at: datetime
|
|
20
|
+
updated_at: datetime
|
|
21
|
+
|
|
22
|
+
@staticmethod
|
|
23
|
+
def from_dict(data: dict) -> PaymentMethod:
|
|
24
|
+
return PaymentMethod(
|
|
25
|
+
id=data["id"],
|
|
26
|
+
customer_id=data["customer_id"],
|
|
27
|
+
address_id=data["address_id"],
|
|
28
|
+
type=SavedPaymentMethodType(data["type"]),
|
|
29
|
+
origin=SavedPaymentMethodOrigin(data["origin"]),
|
|
30
|
+
saved_at=datetime.fromisoformat(data["saved_at"]),
|
|
31
|
+
updated_at=datetime.fromisoformat(data["updated_at"]),
|
|
32
|
+
)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from paddle_billing.Notifications.Entities.Entity import Entity
|
|
6
|
+
from paddle_billing.Notifications.Entities.Shared import (
|
|
7
|
+
SavedPaymentMethodDeletionReason,
|
|
8
|
+
SavedPaymentMethodOrigin,
|
|
9
|
+
SavedPaymentMethodType,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclass
|
|
14
|
+
class PaymentMethodDeleted(Entity):
|
|
15
|
+
id: str
|
|
16
|
+
customer_id: str
|
|
17
|
+
address_id: str
|
|
18
|
+
type: SavedPaymentMethodType | None
|
|
19
|
+
origin: SavedPaymentMethodOrigin
|
|
20
|
+
saved_at: datetime
|
|
21
|
+
updated_at: datetime
|
|
22
|
+
deletion_reason: SavedPaymentMethodDeletionReason
|
|
23
|
+
|
|
24
|
+
@staticmethod
|
|
25
|
+
def from_dict(data: dict) -> PaymentMethodDeleted:
|
|
26
|
+
return PaymentMethodDeleted(
|
|
27
|
+
id=data["id"],
|
|
28
|
+
customer_id=data["customer_id"],
|
|
29
|
+
address_id=data["address_id"],
|
|
30
|
+
type=SavedPaymentMethodType(data["type"]),
|
|
31
|
+
origin=SavedPaymentMethodOrigin(data["origin"]),
|
|
32
|
+
saved_at=datetime.fromisoformat(data["saved_at"]),
|
|
33
|
+
updated_at=datetime.fromisoformat(data["updated_at"]),
|
|
34
|
+
deletion_reason=SavedPaymentMethodDeletionReason(data["deletion_reason"]),
|
|
35
|
+
)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
from dataclasses import
|
|
2
|
+
from dataclasses import dataclass
|
|
3
3
|
|
|
4
4
|
from paddle_billing.Notifications.Entities.Reports import ReportFilterName, ReportFilterOperator
|
|
5
5
|
|
|
@@ -13,6 +13,3 @@ class ReportFilter:
|
|
|
13
13
|
@staticmethod
|
|
14
14
|
def from_dict(data: dict) -> ReportFilter:
|
|
15
15
|
return ReportFilter(**data)
|
|
16
|
-
|
|
17
|
-
def get_parameters(self) -> dict:
|
|
18
|
-
return asdict(self)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class Paypal:
|
|
7
|
+
email: str
|
|
8
|
+
reference: str
|
|
9
|
+
|
|
10
|
+
@staticmethod
|
|
11
|
+
def from_dict(data: dict) -> Paypal:
|
|
12
|
+
return Paypal(
|
|
13
|
+
email=data["email"],
|
|
14
|
+
reference=data["reference"],
|
|
15
|
+
)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
from paddle_billing.PaddleStrEnum import PaddleStrEnum, PaddleStrEnumMeta
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class SavedPaymentMethodDeletionReason(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
|
|
5
|
+
ReplacedByNewerVersion: "SavedPaymentMethodDeletionReason" = "replaced_by_newer_version"
|
|
6
|
+
Api: "SavedPaymentMethodDeletionReason" = "api"
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
from paddle_billing.PaddleStrEnum import PaddleStrEnum, PaddleStrEnumMeta
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class SavedPaymentMethodOrigin(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
|
|
5
|
+
SavedDuringPurchase: "SavedPaymentMethodOrigin" = "saved_during_purchase"
|
|
6
|
+
Subscription: "SavedPaymentMethodOrigin" = "subscription"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from paddle_billing.PaddleStrEnum import PaddleStrEnum, PaddleStrEnumMeta
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class SavedPaymentMethodType(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
|
|
5
|
+
Alipay: "SavedPaymentMethodType" = "alipay"
|
|
6
|
+
ApplePay: "SavedPaymentMethodType" = "apple_pay"
|
|
7
|
+
Card: "SavedPaymentMethodType" = "card"
|
|
8
|
+
GooglePay: "SavedPaymentMethodType" = "google_pay"
|
|
9
|
+
Paypal: "SavedPaymentMethodType" = "paypal"
|
|
@@ -26,8 +26,14 @@ from paddle_billing.Notifications.Entities.Shared.Original import Original
|
|
|
26
26
|
from paddle_billing.Notifications.Entities.Shared.PaymentAttemptStatus import PaymentAttemptStatus
|
|
27
27
|
from paddle_billing.Notifications.Entities.Shared.PaymentMethodType import PaymentMethodType
|
|
28
28
|
from paddle_billing.Notifications.Entities.Shared.PayoutTotalsAdjustment import PayoutTotalsAdjustment
|
|
29
|
+
from paddle_billing.Notifications.Entities.Shared.Paypal import Paypal
|
|
29
30
|
from paddle_billing.Notifications.Entities.Shared.PriceQuantity import PriceQuantity
|
|
30
31
|
from paddle_billing.Notifications.Entities.Shared.Proration import Proration
|
|
32
|
+
from paddle_billing.Notifications.Entities.Shared.SavedPaymentMethodDeletionReason import (
|
|
33
|
+
SavedPaymentMethodDeletionReason,
|
|
34
|
+
)
|
|
35
|
+
from paddle_billing.Notifications.Entities.Shared.SavedPaymentMethodOrigin import SavedPaymentMethodOrigin
|
|
36
|
+
from paddle_billing.Notifications.Entities.Shared.SavedPaymentMethodType import SavedPaymentMethodType
|
|
31
37
|
from paddle_billing.Notifications.Entities.Shared.Status import Status
|
|
32
38
|
from paddle_billing.Notifications.Entities.Shared.TransactionStatus import TransactionStatus
|
|
33
39
|
from paddle_billing.Notifications.Entities.Shared.TaxCategory import TaxCategory
|