74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
"""
|
|
Payment Methods API
|
|
"""
|
|
|
|
from typing import Optional, Dict, Any
|
|
|
|
|
|
class PaymentMethodsAPI:
|
|
"""Payment Methods API client"""
|
|
|
|
def __init__(self, client):
|
|
self.client = client
|
|
|
|
def create(
|
|
self,
|
|
type: str,
|
|
bank_account: Optional[Dict[str, Any]] = None,
|
|
card: Optional[Dict[str, Any]] = None,
|
|
usdc_wallet: Optional[Dict[str, Any]] = None,
|
|
metadata: Optional[Dict[str, Any]] = None,
|
|
idempotency_key: Optional[str] = None
|
|
) -> dict:
|
|
"""
|
|
Create a payment method
|
|
|
|
Args:
|
|
type: 'bank_account', 'card', or 'usdc_wallet'
|
|
bank_account: Bank account details
|
|
card: Card details
|
|
usdc_wallet: USDC wallet details
|
|
metadata: Optional metadata
|
|
idempotency_key: Idempotency key
|
|
"""
|
|
data = {'type': type}
|
|
|
|
if bank_account:
|
|
data['bank_account'] = bank_account
|
|
if card:
|
|
data['card'] = card
|
|
if usdc_wallet:
|
|
data['usdc_wallet'] = usdc_wallet
|
|
if metadata:
|
|
data['metadata'] = metadata
|
|
|
|
return self.client._request(
|
|
'POST',
|
|
'/payment-methods',
|
|
json=data,
|
|
idempotency_key=idempotency_key
|
|
)
|
|
|
|
def retrieve(self, payment_method_id: str) -> dict:
|
|
"""Retrieve a payment method"""
|
|
return self.client._request('GET', f'/payment-methods/{payment_method_id}')
|
|
|
|
def list(
|
|
self,
|
|
limit: int = 25,
|
|
cursor: Optional[str] = None,
|
|
type: Optional[str] = None
|
|
) -> dict:
|
|
"""List payment methods"""
|
|
params = {'limit': limit}
|
|
if cursor:
|
|
params['cursor'] = cursor
|
|
if type:
|
|
params['type'] = type
|
|
|
|
return self.client._request('GET', '/payment-methods', params=params)
|
|
|
|
def delete(self, payment_method_id: str) -> None:
|
|
"""Delete a payment method"""
|
|
self.client._request('DELETE', f'/payment-methods/{payment_method_id}')
|