Перейти к содержанию

Payments

Регистрация заказа, отмена платежа и возврат средств. Методы принадлежат SberbankClient.

Client for the legacy SberBank payment API maintained by YooKassa.

username - username at sberbank api password - password at sberbank api url - api url address api_type - api type (soap | rest) only rest ready language - default language (ISO 639-1) currency - default currency (ISO 4217)

@TODO: * remove url parameter in favor of a boolean production parameter * move ensure_ascii parameter to _make_data method parameter and pass it from class methods

Source code in gocream_pysberbank/http.py
def __init__(
    self,
    username=None,
    password=None,
    token=None,
    url=DEFAULT_URL,
    api_type=DEFAULT_API_TYPE,
    language=DEFAULT_LANGUAGE,
    currency=DEFAULT_CURREBCY,
    ensure_ascii=True,
):
    """
    username - username at sberbank api
    password - password at sberbank api
    url - api url address
    api_type - api type (soap | rest) only rest ready
    language - default language (ISO 639-1)
    currency - default currency (ISO 4217)

    @TODO:
     * remove `url` parameter in favor of a boolean `production` parameter
     * move `ensure_ascii` parameter to `_make_data` method parameter and pass it from class methods
    """

    if (not (bool(username) and bool(password))) == (token is None):
        raise SberbankException("Auth params require. Setup username/password pair or token, not both")

    self.username = username
    self.password = password
    self.token = token

    self.url = url
    self.api_type = api_type
    self.language = language
    self.currency = currency

    self.ensure_ascii = ensure_ascii

register

register(
    orderNumber,
    amount,
    returnUrl,
    currency=None,
    failUrl=None,
    description=None,
    language=None,
    pageView=None,
    clientId=None,
    merchantLogin=None,
    jsonParams=None,
    order_bundle=None,
    tax_system=None,
    sessionTimeoutSecs=None,
    expirationDate=None,
    bindingId=None,
    features=None,
    url=None,
    api_type=None,
    **kwargs,
)

Register cart

Request doc Request Cart doc

Attributes:

Name Type Description
orderBundle

корзина для чека

taxSystem

система налогообложения

.. _Request doc: https://securepayments.sberbank.ru/wiki/doku.php/integration:api:rest:requests:register

.. _Request Cart doc: https://securepayments.sberbank.ru/wiki/doku.php/integration:api:rest:requests:register_cart

Source code in gocream_pysberbank/http.py
def register(
    self,
    orderNumber,
    amount,
    returnUrl,
    currency=None,
    failUrl=None,
    description=None,
    language=None,
    pageView=None,
    clientId=None,
    merchantLogin=None,
    jsonParams=None,
    order_bundle=None,
    tax_system=None,
    sessionTimeoutSecs=None,
    expirationDate=None,
    bindingId=None,
    features=None,
    url=None,
    api_type=None,
    **kwargs,
):
    """
    Register cart

    `Request doc`_
    `Request Cart doc`_

    Attributes:
        orderBundle: корзина для чека
        taxSystem: система налогообложения

    .. _Request doc:
       https://securepayments.sberbank.ru/wiki/doku.php/integration:api:rest:requests:register

    .. _Request Cart doc:
       https://securepayments.sberbank.ru/wiki/doku.php/integration:api:rest:requests:register_cart
    """

    params = {
        "orderNumber": orderNumber,
        "amount": amount,
        "currency": currency or self.currency,
        "returnUrl": returnUrl,
        "failUrl": failUrl,
        "description": description,
        "language": language or self.language,
        "pageView": pageView,
        "clientId": clientId,
        "merchantLogin": merchantLogin,
        "jsonParams": jsonParams,
        "sessionTimeoutSecs": sessionTimeoutSecs,
        "expirationDate": expirationDate,
        "bindingId": bindingId,
        "features": features,
        "orderBundle": order_bundle,
        "taxSystem": tax_system,
    }
    result = self._make_request(url or self.url, api_type or self.api_type, "register", params, **kwargs)
    return result

reverse

reverse(
    orderId,
    language=None,
    url=None,
    api_type=None,
    **kwargs,
)

Reverse payment

Функция отмены доступна в течение ограниченного времени после оплаты, точные сроки необходимо уточнять в «Сбербанке».

Request doc_

Attributes:

Name Type Description
orderId

Номер заказа в платёжном шлюзе. Уникален в пределах шлюза.

.. _Request doc: https://securepayments.sberbank.ru/wiki/doku.php/integration:api:rest:requests:reverse

Source code in gocream_pysberbank/http.py
def reverse(self, orderId, language=None, url=None, api_type=None, **kwargs):
    """
    Reverse payment

    Функция отмены доступна в течение ограниченного времени после оплаты,
    точные сроки необходимо уточнять в «Сбербанке».

    `Request doc`_

    Attributes:
        orderId: Номер заказа в платёжном шлюзе. Уникален в пределах шлюза.

    .. _Request doc:
       https://securepayments.sberbank.ru/wiki/doku.php/integration:api:rest:requests:reverse
    """

    params = {
        "orderId": orderId,
        "language": language or self.language,
    }
    result = self._make_request(url or self.url, api_type or self.api_type, "reverse", params, **kwargs)
    return result

refund

refund(
    orderId,
    refundAmount,
    language=None,
    url=None,
    api_type=None,
    **kwargs,
)

Refund

Request doc_

Attributes orderId: Номер заказа в платёжном шлюзе. Уникален в пределах шлюза. refundAmount: Сумма возврата в валюте заказа. Может быть меньше или равна остатку в заказе. language: Не указан в документации, но вероятно по аналогии с остальными методами он всё же там должен быть... Вероятно... Нужно поправить если ругаться будет

.. _Request doc: https://securepayments.sberbank.ru/wiki/doku.php/integration:api:rest:requests:refund

Source code in gocream_pysberbank/http.py
def refund(self, orderId, refundAmount, language=None, url=None, api_type=None, **kwargs):
    """
    Refund

    `Request doc`_

    Attributes
        orderId: Номер заказа в платёжном шлюзе. Уникален в пределах шлюза.
        refundAmount: Сумма возврата в валюте заказа. Может быть меньше или
            равна остатку в заказе.
        language: Не указан в документации, но вероятно по аналогии с
            остальными методами он всё же там должен быть... Вероятно...
            Нужно поправить если ругаться будет

    .. _Request doc:
       https://securepayments.sberbank.ru/wiki/doku.php/integration:api:rest:requests:refund
    """

    params = {
        "orderId": orderId,
        "amount": refundAmount,
        "language": language or self.language,
    }
    result = self._make_request(url or self.url, api_type or self.api_type, "refund", params, **kwargs)
    return result