"""
YenePay API Client model.
"""
import typing
from yenepay.models.checkout import CartCheckout, ExpressCheckout
from yenepay.models.pdt import PDT
[docs]class Client:
"""Representation of a single merchant account in YenePay platform."""
def __init__(
self,
merchant_id: str,
token: typing.Optional[str] = None,
use_sandbox: typing.Optional[bool] = False,
) -> None:
"""
:param merchant_id: A unique merchant short code that is assigned to
a merchant when signing up for a YenePay merchant account.
Has a minimum of 4 digits and can be found after signing
into YenePay account manager (https://www.yenepay.com/account)
:type merchant_id: :func:`str`
:param token: A request authentication token that is assigned to a
YenePay merchant account can be found on the Settings page
of YenePay’s account manager.
:type token: :func:`str`
:param use_sandbox: Use sandbox environment. Default is False.
:type use_sandbox: Optional :func:`bool`
:rtype: :obj:`None`
"""
self.merchantId = merchant_id
self.pdtToken = token
self.use_sandbox = use_sandbox
@property
def merchant_id(self) -> str:
"""
:return: client merchant id.
:rtype: :func:`str`
"""
return self.merchantId
@merchant_id.setter
def merchant_id(self, value: str) -> None:
"""set merchant id."""
self.merchantId = value
@property
def token(self) -> str:
"""
:return: client pdt token.
:rtype: :func:`str`
"""
return self.pdtToken
@token.setter
def token(self, value: str) -> None:
"""set token."""
self.pdtToken = value
@property
def is_sandbox(self) -> bool:
"""
check client running sandbox environment.
:rtype: :func:`bool`
"""
return self.use_sandbox
[docs] def get_cart_checkout(self, *args, **kwargs):
"""
Create :class:`yenepay.models.checkout.CartCheckout` instance
using a given information. for parameter information refer to
a class parameters.
:return: checkout instance
:rtype: :class:`yenepay.models.checkout.CartCheckout`
"""
kwargs["client"] = self
return CartCheckout(*args, **kwargs)
[docs] def get_express_checkout(self, *args, **kwargs):
"""
Create :class:`yenepay.models.checkout.ExpressCheckout` instance
using a given information. for parameter information refer to
a class parameters.
:return: checkout instance
:rtype: :class:`yenepay.models.checkout.CartCheckout`
"""
if not isinstance(kwargs.get("items"), (tuple, set, list)):
kwargs["items"] = [kwargs.get("items")]
kwargs["client"] = self
return ExpressCheckout(*args, **kwargs)
[docs] def check_pdt_status(
self,
merchant_order_id: str,
transaction_id: str,
use_sandbox: bool = False,
):
"""
Check payment order status for a given transaction.
:param merchant_order_id: A unique identifier for this payment order
on the merchant’s platform. Will be used to track payment
status for this order.
:type merchant_order_id: Optional :func:`str`
:param transaction_id: a unique identifier id of the payment
transaction that is set on YenePay’s platform. This id can be
obtained from your checkout success_url or ipn_url endpoints.
:type transaction_id: :func:`str`
:return: Return pdt respose of a server
:rtype: :class:`yenepay.models.pdt.PDTRespose`
:raise yenepay.exceptions.CheckoutError: if paramenters are
incorrect.
"""
pdt = PDT(
self, merchant_order_id, transaction_id, use_sandbox=use_sandbox
)
return pdt.check_status()
def __repr__(self) -> str:
"""return representation of client."""
return "<Client {} - {}>".format(self.merchantId, self.pdtToken)
def __str__(self) -> str:
"""return string representation of client."""
return self.__repr__()