Source code for aioyookassa.core.api.payment_methods

from typing import Any, Dict, Union

from aioyookassa.core.api.base import BaseAPI
from aioyookassa.core.methods import CreatePaymentMethod, GetPaymentMethod
from aioyookassa.types.params import CreatePaymentMethodParams
from aioyookassa.types.payment import PaymentMethod


[docs] class PaymentMethodsAPI(BaseAPI[CreatePaymentMethodParams, PaymentMethod]): """ YooKassa payment methods API client. Provides methods for creating and retrieving payment methods. """
[docs] async def create_payment_method( self, params: Union[CreatePaymentMethodParams, dict, None] = None, **kwargs: Any ) -> PaymentMethod: # Note: Union with dict kept for backward compatibility with kwargs support """ Create a new payment method in YooKassa. :param params: Payment method parameters (CreatePaymentMethodParams or dict). :type params: Union[CreatePaymentMethodParams, dict, None] :param kwargs: Additional parameters (merged with params if params is None or dict). :returns: PaymentMethod object. :rtype: PaymentMethod :seealso: https://yookassa.ru/developers/api#create_payment_method Example: >>> from aioyookassa.types.params import ( ... CreatePaymentMethodParams, ... PaymentMethodCardData, ... PaymentMethodHolder, ... PaymentMethodConfirmation ... ) >>> params = CreatePaymentMethodParams( ... type="bank_card", ... card=PaymentMethodCardData( ... number="5555555555554444", ... expiry_year="2025", ... expiry_month="12", ... cardholder="John Doe", ... csc="123" ... ), ... holder=PaymentMethodHolder(gateway_id="gateway_123"), ... confirmation=PaymentMethodConfirmation( ... type="redirect", ... return_url="https://example.com/return" ... ) ... ) >>> payment_method = await client.payment_methods.create_payment_method(params) """ # If params is None, use kwargs if params is None: params = kwargs elif isinstance(params, dict): params = {**params, **kwargs} return await self._create_resource( params=params, params_class=CreatePaymentMethodParams, method_class=CreatePaymentMethod, result_class=PaymentMethod, )
[docs] async def get_payment_method(self, payment_method_id: str) -> PaymentMethod: """ Retrieve payment method information by ID. :param payment_method_id: Payment method identifier. :type payment_method_id: str :returns: PaymentMethod object. :rtype: PaymentMethod :seealso: https://yookassa.ru/developers/api#get_payment_method """ return await self._get_by_id( resource_id=payment_method_id, method_class=GetPaymentMethod, result_class=PaymentMethod, id_param_name="payment_method_id", )