Checkout

Checkout reference.

Payment

To use the payment methods:

from salesman.checkout.payment import payment_methods_pool

basket_payments = payment_methods_pool.get_payments('basket')
order_payments = payment_methods_pool.get_payments('order')

payment = payment_methods_pool.get_payments('pay-in-advance')
class salesman.checkout.payment.PaymentError[source]

Payment error for raising payment related exceptions.

class salesman.checkout.payment.PaymentMethod[source]

Base payment method, all payment methods defined in SALESMAN_PAYMENT_METHODS must extend this class.

get_urls() → list[source]

Hook for adding extra url patterns for payment method. Urls will be included as child patterns under the defined identifier namespace => /payment/{identifier}/{urls}.

validate_basket(basket: salesman.basket.models.Basket, request: django.http.request.HttpRequest) → None[source]

Method used to validate that payment method is valid for the given basket.

Parameters
  • basket (Basket) – Basket instance

  • request (HttpRequest) – Django request

Raises

ValidationError – If payment is not valid for basket

validate_order(order: salesman.orders.models.Order, request: django.http.request.HttpRequest) → None[source]

Method used to validate that payment method is valid for the given order.

Parameters
  • order (Order) – Order instance

  • request (HttpRequest) – Django request

Raises

ValidationError – If payment is not valid for order

basket_payment(basket: salesman.basket.models.Basket, request: django.http.request.HttpRequest) → str[source]

This method gets called when new checkout is submitted and is responsible for creating a new order from given basket. Should return the redirect url to either the next payment step or the order success page. Raise PaymentError in case an issue appears.

Parameters
  • basket (Basket) – Basket instance

  • request (HttpRequest) – Django request

Raises

PaymentError – If error with payment occurs

Returns

Redirect url to the next step

Return type

str

order_payment(order: salesman.orders.models.Order, request: django.http.request.HttpRequest) → str[source]

This method gets called when payment for an existing order is requested. Should return the redirect url to either the next payment step or the order success page. Raise PaymentError in case an issue appears.

Parameters
  • order (Order) – Order instance

  • request (HttpRequest) – Django request

Raises

PaymentError – If error with payment occurs

Returns

Redirect url to the next step

Return type

str

refund_payment(payment: salesman.orders.models.OrderPayment) → bool[source]

This method gets called when orders payment refund is requested. Should return True if refund was completed.

Parameters

payment (OrderPayment) – Order payment instance

Returns

True if refund was completed

Return type

bool

class salesman.checkout.payment.PaymentMethodsPool[source]

Pool for storing payment method instances.

get_payments(kind: Optional[str] = None) → List[salesman.checkout.payment.PaymentMethod][source]

Returns payment method instances.

Parameters

kind (Optional[str], optional) – Either basket or order. Defaults to None.

Returns

Payment method instances

Return type

List[PaymentMethod]

get_choices(kind: Optional[str] = None) → list[source]

Return payments formated as choices list of tuples.

Parameters

kind (Optional[str], optional) – Either basket or order. Defaults to None.

Returns

List of choices

Return type

list

get_payment(identifier: str, kind: Optional[str] = None) → salesman.checkout.payment.PaymentMethod[source]

Returns payment with given identifier.

Parameters
  • identifier (str) – Payment identifier

  • kind (Optional[str], optional) – Either basket or order. Defaults to None.

Returns

Payment method instance

Return type

PaymentMethod

payment.payment_methods_pool = <salesman.checkout.payment.PaymentMethodsPool object>

Utils

salesman.checkout.utils.validate_address(value: str, context: dict = {}) → str[source]

Default address validator function. Can be overriden by providing a dotted path to a function in SALESMAN_ADDRESS_VALIDATOR setting.

Parameters
  • value (str) – Address text to be validated

  • context (dict, optional) – Validator context data. Defaults to {}.

Raises

ValidationError – In case address is not valid

Returns

Validated value

Return type

str

Serializers

class salesman.checkout.serializers.PaymentMethodSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]

Serializer to display payment method with error.

class salesman.checkout.serializers.CheckoutSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)[source]

Serializer for processing a basket payment.