Skip to content

Commit

Permalink
feat: AvailablePaymentMethods now supports offline, unknown and wire_…
Browse files Browse the repository at this point in the history
…transfer
  • Loading branch information
davidgrayston-paddle committed Sep 24, 2024
1 parent 7bf4baa commit 52b7f7f
Show file tree
Hide file tree
Showing 8 changed files with 106 additions and 17 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Check our main [developer changelog](https://developer.paddle.com/?utm_source=dx
- `TransactionsClient.get_invoice_pdf` now supports `disposition` parameter, see [related changelog](https://developer.paddle.com/changelog/2024/invoice-pdf-open-in-browser)
- `SubscriptionClient` `preview_update` and `preview_one_time_charge` responses now have `import_meta` property
- Support for `tax_rates_used` on Adjustments
- `AvailablePaymentMethods` now supports `offline`, `unknown` and `wire_transfer`

### Changed

Expand Down
17 changes: 10 additions & 7 deletions paddle_billing/Entities/Shared/AvailablePaymentMethods.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@


class AvailablePaymentMethods(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
Alipay: "AvailablePaymentMethods" = 'alipay'
ApplePay: "AvailablePaymentMethods" = 'apple_pay'
Bancontact: "AvailablePaymentMethods" = 'bancontact'
Card: "AvailablePaymentMethods" = 'card'
GooglePay: "AvailablePaymentMethods" = 'google_pay'
Ideal: "AvailablePaymentMethods" = 'ideal'
Paypal: "AvailablePaymentMethods" = 'paypal'
Alipay: "AvailablePaymentMethods" = 'alipay'
ApplePay: "AvailablePaymentMethods" = 'apple_pay'
Bancontact: "AvailablePaymentMethods" = 'bancontact'
Card: "AvailablePaymentMethods" = 'card'
GooglePay: "AvailablePaymentMethods" = 'google_pay'
Ideal: "AvailablePaymentMethods" = 'ideal'
Offline: "AvailablePaymentMethods" = 'offline'
Paypal: "AvailablePaymentMethods" = 'paypal'
Unknown: "AvailablePaymentMethods" = 'unknown'
WireTransfer: "AvailablePaymentMethods" = 'wire_transfer'
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@


class AvailablePaymentMethods(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
Alipay: "AvailablePaymentMethods" = 'alipay'
ApplePay: "AvailablePaymentMethods" = 'apple_pay'
Bancontact: "AvailablePaymentMethods" = 'bancontact'
Card: "AvailablePaymentMethods" = 'card'
GooglePay: "AvailablePaymentMethods" = 'google_pay'
Ideal: "AvailablePaymentMethods" = 'ideal'
Paypal: "AvailablePaymentMethods" = 'paypal'
Alipay: "AvailablePaymentMethods" = 'alipay'
ApplePay: "AvailablePaymentMethods" = 'apple_pay'
Bancontact: "AvailablePaymentMethods" = 'bancontact'
Card: "AvailablePaymentMethods" = 'card'
GooglePay: "AvailablePaymentMethods" = 'google_pay'
Ideal: "AvailablePaymentMethods" = 'ideal'
Offline: "AvailablePaymentMethods" = 'offline'
Paypal: "AvailablePaymentMethods" = 'paypal'
Unknown: "AvailablePaymentMethods" = 'unknown'
WireTransfer: "AvailablePaymentMethods" = 'wire_transfer'
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from paddle_billing.Entities.Notification import Notification
from paddle_billing.Entities.Notifications import NotificationStatus

from paddle_billing.Notifications.Entities.Adjustment import Adjustment
from paddle_billing.Notifications.Entities.Adjustment import Adjustment

from paddle_billing.Notifications.Entities.Adjustments.AdjustmentTaxRatesUsed import AdjustmentTaxRatesUsed

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,19 @@
"custom_data": {
"key": "value"
}
}
},
"available_payment_methods": [
"alipay",
"apple_pay",
"bancontact",
"card",
"google_pay",
"ideal",
"offline",
"paypal",
"unknown",
"wire_transfer"
]
},
"meta": {
"request_id": "e4747324-738b-4707-ac7a-7eaabb7c7a26"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
CustomData,
TaxMode,
Money,
PaymentMethodType,
PriceQuantity,
CustomData,
TimePeriod,
Expand Down Expand Up @@ -617,6 +618,34 @@ def test_get_payment_method_change_transaction_returns_transaction_with_discount
assert discount.custom_data.data.get('key') == 'value'


def test_get_payment_method_change_transaction_returns_transaction_with_available_payment_methods(
self,
test_client,
mock_requests,
):
mock_requests.get(
f"{test_client.base_url}/subscriptions/sub_01h7zcgmdc6tmwtjehp3sh7azf/update-payment-method-transaction",
status_code=200,
text=ReadsFixtures.read_raw_json_fixture('response/get_payment_method_change_transaction_entity'),
)

response = test_client.client.subscriptions.get_payment_method_change_transaction('sub_01h7zcgmdc6tmwtjehp3sh7azf')

assert isinstance(response, Transaction)

available_payment_methods = response.available_payment_methods
assert available_payment_methods[0] == PaymentMethodType.Alipay
assert available_payment_methods[1] == PaymentMethodType.ApplePay
assert available_payment_methods[2] == PaymentMethodType.Bancontact
assert available_payment_methods[3] == PaymentMethodType.Card
assert available_payment_methods[4] == PaymentMethodType.GooglePay
assert available_payment_methods[5] == PaymentMethodType.Ideal
assert available_payment_methods[6] == PaymentMethodType.Offline
assert available_payment_methods[7] == PaymentMethodType.Paypal
assert available_payment_methods[8] == PaymentMethodType.Unknown
assert available_payment_methods[9] == PaymentMethodType.WireTransfer


@mark.parametrize(
'subscription_id, expected_response_status, expected_response_body, expected_url',
[(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,19 @@
"custom_data": {
"key": "value"
}
}
},
"available_payment_methods": [
"alipay",
"apple_pay",
"bancontact",
"card",
"google_pay",
"ideal",
"offline",
"paypal",
"unknown",
"wire_transfer"
]
},
"meta": {
"request_id": "0daa7c59-f2eb-41b6-bf2e-bb3b070873a5"
Expand Down
29 changes: 29 additions & 0 deletions tests/Functional/Resources/Transactions/test_TransactionsClient.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from paddle_billing.Entities.Discount import Discount, DiscountStatus

from paddle_billing.Entities.Shared import (
AvailablePaymentMethods,
BillingDetails,
CollectionMode,
CurrencyCode,
Expand Down Expand Up @@ -530,6 +531,34 @@ def test_get_transaction_returns_transaction_with_discount(
assert discount.custom_data.data.get('key') == 'value'


def test_get_transaction_returns_transaction_with_available_payment_methods(
self,
test_client,
mock_requests,
):
mock_requests.get(
f"{test_client.base_url}/transactions/txn_01hen7bxc1p8ep4yk7n5jbzk9r",
status_code=200,
text=ReadsFixtures.read_raw_json_fixture('response/full_entity'),
)

response = test_client.client.transactions.get('txn_01hen7bxc1p8ep4yk7n5jbzk9r')

assert isinstance(response, Transaction)

available_payment_methods = response.available_payment_methods
assert available_payment_methods[0] == AvailablePaymentMethods.Alipay
assert available_payment_methods[1] == AvailablePaymentMethods.ApplePay
assert available_payment_methods[2] == AvailablePaymentMethods.Bancontact
assert available_payment_methods[3] == AvailablePaymentMethods.Card
assert available_payment_methods[4] == AvailablePaymentMethods.GooglePay
assert available_payment_methods[5] == AvailablePaymentMethods.Ideal
assert available_payment_methods[6] == AvailablePaymentMethods.Offline
assert available_payment_methods[7] == AvailablePaymentMethods.Paypal
assert available_payment_methods[8] == AvailablePaymentMethods.Unknown
assert available_payment_methods[9] == AvailablePaymentMethods.WireTransfer


@mark.parametrize(
'operation, expected_request_body, expected_response_status, expected_response_body, expected_url',
[
Expand Down

0 comments on commit 52b7f7f

Please sign in to comment.