Files
fetcherpay-python/fetcherpay/api/payment_methods.py
2026-02-19 12:17:09 -05:00

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}')