Skip to main content

Client Payment Python SDK

Project description

Client payment SDK Python

Build Status Latest Stable Version Total Downloads License

Russian | English

Client payment SDK provides convenient access to the API from applications written in the Python language. It includes a pre-defined set of classes for API resources that initialize themselves dynamically from API responses.

Installation

via pip

  1. Install pip.
  2. In the console, run the following command:
pip install client-payment-sdk

via easy_install

  1. Install easy_install.
  2. In the console, run the following command:
easy_install --upgrade client-payment-sdk

via setuptools

  1. In the console, run the following command:
wget https://github.com/Space-Around/client-payment-sdk-python/archive/refs/heads/main.zip
tar zxf client-payment-sdk-python-main.tar.gz
cd client-payment-sdk-python-main
python setup.py install

Requirements

  • Python 3.10+

Usage

from client_payment_sdk import ClientPaymentSDK, sign

client = ClientPaymentSDK()

Documentation

See API docs.

All examples here.

.init()

Description: Payment initiation.

Arguments

Name Description Example Required
amount payment amount 10 +
order order number in your system order-00001 +
merchant_id your id in the system 1 +
product_id product id in the system 1 +
to_card payment card number 4111111111111111 -
signature signature quahJ5th... +
description order description Ordering a product -
language language: ru or en en -
finish_url url to which to redirect the user after payment https://exemple.com -
2notification_url url to which to send a notification of payment https://exemple.com -
lifetime link time in seconds (default 3600) 3600 -

host2host

Arguments

Name Description Example Required
pan card number 4111111111111111 +
expire_month card expiry date (month) 01 +
expire_year card expiry date (year) 25 +
cvc cvc-code 1 +

3DS 2.0

Arguments

Name Description Example Required
device_channel authentication channel BRW +
device_browser_ip browser IP address 0.0.0.0 +
device_browser_accept_header accepted content text/html +
device_browser_java_enabled indication of work with Java false +
device_browser_language browser language RU +
device_browser_color_depth browser colour depth 32 +
device_browser_screen_height browser screen height 800 +
device_browser_screen_width browser screen width 480 +
device_browser_tz browser time zone in minutes from UTC 60, 120, -180 +
device_browser_user_agent browser user agent Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 +
challenge_window_size size of challenge window 02 +

Return: InitPaymentResponse

Field name Default
status None
payment_redirect_url None
url None
form_data None

Example:

result = client.init(params)

.status()

Description: Get payment status.

Arguments

Name Description Example Required
merchant_id your id in the system 1 +
product_id product id in the system 1 +
order your id in the system order-00001 +
signature signature quahJ5th... +

Return: StatusPaymentResponse

Field name Default
status None
payment_status None
refund_status None
last_payment_error_code None
last_payment_error None

Example:

result = client.status(params)

.balace()

Description: Get balance.

Arguments

Name Description Example Required
merchant_id your id in the system 1 +
currency account currency (RUB by default) RUB -
signature signature quahJ5th... +

Return: BalanceResponse

Field name Default
status None
balance None

Example:

result = client.balance(params)

.withdrawal()

Description: Withdrawal request.

Arguments

Name Description Example Required
merchant_id your id in the system 1 +
order order number in your system order-00001 +
currency account currency (RUB by default) RUB -
pan card number 4242424242424242 +
amount payment amount 10 +
signature signature quahJ5th... +
notification_url url to which to send a notification of payment https://exemple.com -

Return: WithdrawalResponse

Field name Default
status None
withdrawal_request None

Example:

result = client.withdrawal(params)

.withdrawal_status()

Description: Withdrawal status.

Arguments

Name Description Example Required
merchant_id your id in the system 1 +
id withdrawal request id 1523 +
signature signature quahJ5th... +

or

Name Description Example Required
merchant_id your id in the system 1 +
order withdrawal number in your system order-00001 +
signature signature quahJ5th... +

Return: StatusWithdrawalResponse

Field name Default
status None
withdrawal_request None

Example:

result = client.withdrawal_status(params)

Webhook.verify_signature()

Description: Signature verification.

Arguments

Name Description Example Required
endpoint path from url /webhooks +
method HTTP method POST +
params payload from response WebhookData(data_from_response) +
secret secret 1234fwes +

Return: True or raise error SignatureVerificationError.

Example:

data = WebhookData(data_from_response)
Webhook.verify_signature('/webhooks', 'POST', data, api_secret)

WebhookData()

Description: Notification class, is needed for the Webhook.verify_signature() method and to more easily get data from the request.

Arguments: dict

Return: WebhookData

Name Description Example
webhook_type webhook type invoice
amount payment amount amount
product_id product id in the system 1
merchant_id your id in the system 1
order order number in your system order-00001
currency payment currency RUB
status payment status complete/failed complete
webhook_id webhook id, same on repetition 1
payment_error_code error code (if status='failed') common
payment_error error text (if status='failed') insufficient funds
signature signature quahJ5th...
withdrawal_request_id transaction id in the system 1
requested_amount amount requested for withdrawal 100
invoice_id transaction id in the system 1
customer_fee commission to be deducted from the purchaser 2
masked_pan masked beneficiary card number RUB

Example:

# using Flask
@app.route("/webhooks", methods=["POST"])
def webhooks():
    payload = request.form.to_dict()
    try:
        data = WebhookData(payload)

        print(Webhook.verify_signature('/webhooks', 'POST', data, api_secret))
        # usage data
    except ValueError:
        print("Error while decoding event!")
        return "Bad payload", 400
    except SignatureVerificationError:
        print("Invalid signature!")
        return "Bad signature", 400

    return "", 200

.sign()

Description: Create jws signature

Arguments

Name Description Example Required
endpoint path from url /init +
method HTTP method POST +
params payload (dict) {} +
secret secret 1234fwes +

Return: str

Example:

api_secret = 'aa21444f3f71'
payload = {
    'amount': 10,
    'merchant_id': 15,
    'order': '241eeda4-7491-11ec-9c7f-0242ac130021',
    'product_id': 15,
    'notification_url': 'http://25ab-91-241-13-31.ngrok.io/webhooks'
}

payload['signature'] = sign('/init', 'POST', payload, api_secret)

License

This project is licensed under the MIT license.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

client_payment_sdk-0.0.1-py3.10.egg (22.3 kB view hashes)

Uploaded Source

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