Skip to content

Commit b07e081

Browse files
feat: Added additional support for local Korean payment methods (#129)
1 parent a79a479 commit b07e081

35 files changed

+265
-9
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,18 @@ Check our main [developer changelog](https://developer.paddle.com/?utm_source=dx
1010

1111
### Added
1212

13+
- Added additional support for local Korean payment methods. See [related changelog](https://developer.paddle.com/changelog/2025/improved-korean-payment-methods?utm_source=dx&utm_medium=paddle-python-sdk)
1314
- Support for payout reconciliation reports and `remittance_reference`, see [changelog](https://developer.paddle.com/changelog/2025/payout-reconciliation-report?utm_source=dx&utm_medium=paddle-python-sdk)
1415
- Added `location` value for `price.tax_mode`, see [changelog](https://developer.paddle.com/changelog/2025/default-automatic-tax-setting?utm_source=dx&utm_medium=paddle-python-sdk)
1516

1617
### Fixed
1718
- Fixed `ReportsClient.create()` operation type
1819

20+
### Deprecated
21+
22+
- `korea_local` payment method type is deprecated. Use `south_korea_local_card`, `kakao_pay`, `naver_pay`, `payco`, or `samsung_pay` instead.
23+
- `underlying_details` is deprecated on `method_details` and saved `payment_method` responses. Use specific payment method fields such as `south_korea_local_card`.
24+
1925
## 1.11.0 - 2025-10-07
2026

2127
### Added

paddle_billing/Entities/PaymentMethod.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
Paypal,
1111
SavedPaymentMethodOrigin,
1212
SavedPaymentMethodType,
13+
SouthKoreaLocalCard,
1314
)
1415

1516

@@ -24,7 +25,8 @@ class PaymentMethod(Entity):
2425
origin: SavedPaymentMethodOrigin
2526
saved_at: datetime
2627
updated_at: datetime
27-
underlying_details: PaymentMethodUnderlyingDetails | None
28+
underlying_details: PaymentMethodUnderlyingDetails | None # deprecated
29+
south_korea_local_card: SouthKoreaLocalCard | None
2830

2931
@staticmethod
3032
def from_dict(data: dict[str, Any]) -> PaymentMethod:
@@ -43,4 +45,9 @@ def from_dict(data: dict[str, Any]) -> PaymentMethod:
4345
origin=SavedPaymentMethodOrigin(data["origin"]),
4446
saved_at=datetime.fromisoformat(data["saved_at"]),
4547
updated_at=datetime.fromisoformat(data["updated_at"]),
48+
south_korea_local_card=(
49+
SouthKoreaLocalCard.from_dict(data["south_korea_local_card"])
50+
if data.get("south_korea_local_card")
51+
else None
52+
),
4653
)

paddle_billing/Entities/Shared/MethodDetails.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
from paddle_billing.Entities.Shared.Card import Card
66
from paddle_billing.Entities.Shared.PaymentMethodType import PaymentMethodType
77
from paddle_billing.Entities.Shared.PaymentMethodUnderlyingDetails import PaymentMethodUnderlyingDetails
8+
from paddle_billing.Entities.Shared.SouthKoreaLocalCard import SouthKoreaLocalCard
89

910

1011
@dataclass
1112
class MethodDetails:
1213
type: PaymentMethodType
1314
card: Card | None
14-
underlying_details: PaymentMethodUnderlyingDetails | None
15+
underlying_details: PaymentMethodUnderlyingDetails | None # deprecated
16+
south_korea_local_card: SouthKoreaLocalCard | None
1517

1618
@staticmethod
1719
def from_dict(data: dict[str, Any]) -> MethodDetails:
@@ -23,4 +25,9 @@ def from_dict(data: dict[str, Any]) -> MethodDetails:
2325
if data.get("underlying_details")
2426
else None
2527
),
28+
(
29+
SouthKoreaLocalCard.from_dict(data["south_korea_local_card"])
30+
if data.get("south_korea_local_card")
31+
else None
32+
),
2633
)

paddle_billing/Entities/Shared/PaymentMethodType.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,16 @@ class PaymentMethodType(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
99
Card: "PaymentMethodType" = "card"
1010
GooglePay: "PaymentMethodType" = "google_pay"
1111
Ideal: "PaymentMethodType" = "ideal"
12+
KakaoPay: "PaymentMethodType" = "kakao_pay"
1213
KoreaLocal: "PaymentMethodType" = "korea_local"
1314
MbWay: "PaymentMethodType" = "mb_way"
15+
NaverPay: "PaymentMethodType" = "naver_pay"
1416
Offline: "PaymentMethodType" = "offline"
17+
Payco: "PaymentMethodType" = "payco"
1518
Paypal: "PaymentMethodType" = "paypal"
1619
Pix: "PaymentMethodType" = "pix"
20+
SamsungPay: "PaymentMethodType" = "samsung_pay"
21+
SouthKoreaLocalCard: "PaymentMethodType" = "south_korea_local_card"
1722
Unknown: "PaymentMethodType" = "unknown"
1823
Upi: "PaymentMethodType" = "upi"
1924
WireTransfer: "PaymentMethodType" = "wire_transfer"

paddle_billing/Entities/Shared/SavedPaymentMethodType.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,13 @@ class SavedPaymentMethodType(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
77
Blik: "SavedPaymentMethodType" = "blik"
88
Card: "SavedPaymentMethodType" = "card"
99
GooglePay: "SavedPaymentMethodType" = "google_pay"
10+
KakaoPay: "SavedPaymentMethodType" = "kakao_pay"
1011
KoreaLocal: "SavedPaymentMethodType" = "korea_local"
1112
MbWay: "SavedPaymentMethodType" = "mb_way"
13+
NaverPay: "SavedPaymentMethodType" = "naver_pay"
14+
Payco: "SavedPaymentMethodType" = "payco"
1215
Paypal: "SavedPaymentMethodType" = "paypal"
1316
Pix: "SavedPaymentMethodType" = "pix"
17+
SamsungPay: "SavedPaymentMethodType" = "samsung_pay"
18+
SouthKoreaLocalCard: "SavedPaymentMethodType" = "south_korea_local_card"
1419
Upi: "SavedPaymentMethodType" = "upi"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from __future__ import annotations
2+
from dataclasses import dataclass
3+
from typing import Any
4+
5+
from paddle_billing.Entities.Shared.SouthKoreaLocalCardType import SouthKoreaLocalCardType
6+
7+
8+
@dataclass
9+
class SouthKoreaLocalCard:
10+
type: SouthKoreaLocalCardType
11+
last4: str
12+
13+
@staticmethod
14+
def from_dict(data: dict[str, Any]) -> SouthKoreaLocalCard:
15+
return SouthKoreaLocalCard(
16+
type=SouthKoreaLocalCardType(data["type"]),
17+
last4=data["last4"],
18+
)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from paddle_billing.PaddleStrEnum import PaddleStrEnum, PaddleStrEnumMeta
2+
3+
4+
class SouthKoreaLocalCardType(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
5+
BC: "SouthKoreaLocalCardType" = "bc"
6+
Citi: "SouthKoreaLocalCardType" = "citi"
7+
Hana: "SouthKoreaLocalCardType" = "hana"
8+
Hyundai: "SouthKoreaLocalCardType" = "hyundai"
9+
Jeju: "SouthKoreaLocalCardType" = "jeju"
10+
Jeonbuk: "SouthKoreaLocalCardType" = "jeonbuk"
11+
KakaoBank: "SouthKoreaLocalCardType" = "kakaobank"
12+
KBank: "SouthKoreaLocalCardType" = "kbank"
13+
KDBBank: "SouthKoreaLocalCardType" = "kdbbank"
14+
Kookmin: "SouthKoreaLocalCardType" = "kookmin"
15+
Kwangju: "SouthKoreaLocalCardType" = "kwangju"
16+
Lotte: "SouthKoreaLocalCardType" = "lotte"
17+
MG: "SouthKoreaLocalCardType" = "mg"
18+
NH: "SouthKoreaLocalCardType" = "nh"
19+
Post: "SouthKoreaLocalCardType" = "post"
20+
Samsung: "SouthKoreaLocalCardType" = "samsung"
21+
SavingsBank: "SouthKoreaLocalCardType" = "savingsbank"
22+
Shinhan: "SouthKoreaLocalCardType" = "shinhan"
23+
Shinhyup: "SouthKoreaLocalCardType" = "shinhyup"
24+
Suhyup: "SouthKoreaLocalCardType" = "suhyup"
25+
TossBank: "SouthKoreaLocalCardType" = "tossbank"
26+
Unknown: "SouthKoreaLocalCardType" = "unknown"
27+
Woori: "SouthKoreaLocalCardType" = "woori"

paddle_billing/Entities/Shared/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
from paddle_billing.Entities.Shared.PaymentAttemptStatus import PaymentAttemptStatus
3636
from paddle_billing.Entities.Shared.PaymentMethodType import PaymentMethodType
3737
from paddle_billing.Entities.Shared.PaymentMethodUnderlyingDetails import PaymentMethodUnderlyingDetails
38+
from paddle_billing.Entities.Shared.SouthKoreaLocalCard import SouthKoreaLocalCard
39+
from paddle_billing.Entities.Shared.SouthKoreaLocalCardType import SouthKoreaLocalCardType
3840
from paddle_billing.Entities.Shared.PayoutTotalsAdjustment import PayoutTotalsAdjustment
3941
from paddle_billing.Entities.Shared.Paypal import Paypal
4042
from paddle_billing.Entities.Shared.PriceQuantity import PriceQuantity

paddle_billing/Notifications/Entities/Shared/MethodDetails.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
from paddle_billing.Notifications.Entities.Shared.Card import Card
66
from paddle_billing.Notifications.Entities.Shared.PaymentMethodType import PaymentMethodType
77
from paddle_billing.Notifications.Entities.Shared.PaymentMethodUnderlyingDetails import PaymentMethodUnderlyingDetails
8+
from paddle_billing.Notifications.Entities.Shared.SouthKoreaLocalCard import SouthKoreaLocalCard
89

910

1011
@dataclass
1112
class MethodDetails:
1213
type: PaymentMethodType
1314
card: Card | None
14-
underlying_details: PaymentMethodUnderlyingDetails | None
15+
underlying_details: PaymentMethodUnderlyingDetails | None # deprecated
16+
south_korea_local_card: SouthKoreaLocalCard | None
1517

1618
@staticmethod
1719
def from_dict(data: dict[str, Any]) -> MethodDetails:
@@ -23,4 +25,9 @@ def from_dict(data: dict[str, Any]) -> MethodDetails:
2325
if data.get("underlying_details")
2426
else None
2527
),
28+
(
29+
SouthKoreaLocalCard.from_dict(data["south_korea_local_card"])
30+
if data.get("south_korea_local_card")
31+
else None
32+
),
2633
)

paddle_billing/Notifications/Entities/Shared/PaymentMethodType.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,16 @@ class PaymentMethodType(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
99
Card: "PaymentMethodType" = "card"
1010
GooglePay: "PaymentMethodType" = "google_pay"
1111
Ideal: "PaymentMethodType" = "ideal"
12+
KakaoPay: "PaymentMethodType" = "kakao_pay"
1213
KoreaLocal: "PaymentMethodType" = "korea_local"
1314
MbWay: "PaymentMethodType" = "mb_way"
15+
NaverPay: "PaymentMethodType" = "naver_pay"
1416
Offline: "PaymentMethodType" = "offline"
17+
Payco: "PaymentMethodType" = "payco"
1518
Paypal: "PaymentMethodType" = "paypal"
1619
Pix: "PaymentMethodType" = "pix"
20+
SamsungPay: "PaymentMethodType" = "samsung_pay"
21+
SouthKoreaLocalCard: "PaymentMethodType" = "south_korea_local_card"
1722
Unknown: "PaymentMethodType" = "unknown"
1823
Upi: "PaymentMethodType" = "upi"
1924
WireTransfer: "PaymentMethodType" = "wire_transfer"

0 commit comments

Comments
 (0)