Skip to main content

Checkout.com Python SDK

Project description

Checkout.com Python SDK

Build Status codecov

Installation

pip install --upgrade checkout-sdk

From source:

python setup.py install

Requirements

  • Python 3.4+

Usage

Using environment variables

os.environ['CKO_SECRET_KEY'] = '<your secret key>'
os.environ['CKO_SANDBOX'] = 'True|true|1' # else is False (Production)
os.environ['CKO_LOGGING'] = 'debug|DEBUG|info|INFO'

# ...

import checkout_sdk as sdk

api = sdk.get_api()

Using initialisation values

import checkout_sdk as sdk

api = sdk.get_api(secret_key='<your secret key>') # default sandbox = True

Setting defaults

sdk.default_currency = sdk.Currency.EUR
sdk.default_auto_capture = True
sdk.default_auto_capture_delay = 0  # valid: 0 - 168 (hours)
sdk.default_payment_type = sdk.PaymentType.Regular

Payment Request

Full Card

try:
    payment = api.payments.request(
        card = {
            'number': '4242424242424242',
            'expiryMonth': 6,
            'expiry_year': 2025, # snake_case is automatically converted
            'cvv': '100'
        },
        value=100, # cents
        currency=sdk.Currency.USD, # or 'usd'
        customer='customer@email.com'
    )
    print(payment.id)
    print(payment.card.id)
    print(payment.customer.id)
    print(payment.http_response.body) # JSON body
except sdk.errors.CheckoutSdkError as e:
    print('{0.http_status} {0.error_code} {0.elapsed} {0.event_id} // {0.message}'.format(e))

Card Id

try:
    payment = api.payments.request(
        card = 'card_713A3978-AFB2-4D30-BF9A-BA55714DC309',
        value=100, # cents
        currency=sdk.Currency.USD, # or 'usd'
        customer='customer@email.com'
    )
    if payment.approved:
        # ...
except sdk.errors.CheckoutSdkError as e:
    print('{0.http_status} {0.error_code} {0.elapsed} {0.event_id} // {0.message}'.format(e))

Exception handling

class CheckoutSdkError(Exception):             # catch all
class AuthenticationError(CheckoutSdkError):   # 401
class BadRequestError(CheckoutSdkError):       # 400
class ResourceNotFoundError(CheckoutSdkError): # 404
class Timeout(CheckoutSdkError):
class TooManyRequestsError(CheckoutSdkError):  # 422
class ApiError(CheckoutSdkError):              # 500 / fallback

The SDK will not do any offline validation of card data, IDs, etc. Provided the values and types are correct, all business validations are handled at API level. On that note, expect ValueError and TypeError for incorrect usage.

Logging

os.environ['CKO_LOGGING'] = 'debug|DEBUG|info|INFO'

or ...

import logging
logging.getLogger('cko').setLevel(logging.DEBUG)

Test Suite

The tests currently need a Sandbox account. This will eventually be replaced by the incoming Checkout.com Mock API.

export CKO_SECRET_KEY="<your secret key>"
export CKO_LOGGING="info|debug"
python setup.py test

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

checkout_sdk-1.0.3.tar.gz (13.8 kB view hashes)

Uploaded Source

Built Distribution

checkout_sdk-1.0.3-py3-none-any.whl (19.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page