Skip to main content

Client SDK for Tapsilat API

Project description

Tapsilat Client SDK for Python

Create orders and retrieve secure checkout URLs.

needs Python3.6+

Installation

pip install git+https://github.com/tapsilat/tapsilat-py.git

or

git clone https://github.com/tapsilat/tapsilat-py.git
cd tapsilat-py
pip install -r requirements.txt

Usage

.env file

TAPSILAT_API_KEY=your_api_key_here

TapsilatAPI initialization

import os

from tapsilat_py.client import TapsilatAPI

API_KEY = str(os.getenv("TAPSILAT_API_KEY"))

client = TapsilatAPI(API_KEY)

Validators

The SDK includes built-in validators for common data types:

GSM Number Validation

from tapsilat_py.validators import validate_gsm_number

# Valid formats
valid_gsm = validate_gsm_number("+905551234567")  # International with +
valid_gsm = validate_gsm_number("00905551234567")  # International with 00
valid_gsm = validate_gsm_number("05551234567")     # National format
valid_gsm = validate_gsm_number("5551234567")      # Local format

# Automatically cleans formatting
clean_gsm = validate_gsm_number("+90 555 123-45-67")  # Returns: "+905551234567"

# Raises APIException for invalid formats
try:
    validate_gsm_number("invalid-phone")
except APIException as e:
    print(f"Error: {e.error}")

Installments Validation

from tapsilat_py.validators import validate_installments

# Valid installment strings
installments = validate_installments("1,2,3,6")     # Returns: [1, 2, 3, 6]
installments = validate_installments("1, 2, 3, 6") # Handles spaces
installments = validate_installments("")            # Returns: [1] (default)

# Raises APIException for invalid values
try:
    validate_installments("1,15,abc")  # 15 > 12, abc is not a number
except APIException as e:
    print(f"Error: {e.error}")

Order create process

from tapsilat_py.models import BuyerDTO, OrderCreateDTO

# GSM number will be automatically validated in create_order
buyer = BuyerDTO(
    name="John", 
    surname="Doe", 
    email="test@example.com",
    gsm_number="+90 555 123-45-67"  # Will be cleaned automatically
)
order = OrderCreateDTO(amount=100, currency="TRY", locale="tr", buyer=buyer)

order_response = client.create_order(order)

Get order details

reference_id = "mock-uuid-reference-id"
order_details = client.get_order(reference_id)

Get order details by conversation id

conversation_id = "mock-uuid-conversation-id"
order_details = client.get_order_by_conversation_id(reference_id)

Get order list

order_list = client.get_order_list(page=1, per_page=5)

Get order submerchants

order_list = client.get_order_submerchants(page=1, per_page=5)

Get checkout url

reference_id = "mock-uuid-reference-id"
checkout_url = client.get_checkout_url(reference_id)

Order cancel process

reference_id = "mock-uuid-reference-id"
client.cancel_order(reference_id)

Order refund process

from tapsilat_py.models import RefundOrderDTO
refund_data = RefundOrderDTO(amount=100, reference_id="mock-uuid-reference-id")
client.refund_order(refund_data)

Order refund all process

reference_id = "mock-uuid-reference-id"
client.refund_all_order(reference_id)

Get order payment details

reference_id = "mock-uuid-reference-id"
client.get_order_payment_details(reference_id)
# You can get with conversation_id too
conversation_id = "mock-uuid-conversation-id"
client.get_order_payment_details(reference_id, conversation_id)

Get order status

reference_id = "mock-uuid-reference-id"
client.get_order_status(reference_id)

Get order transactions

reference_id = "mock-uuid-reference-id"
client.get_order_transactions(reference_id)

Get order term

reference_id = "mock-uuid-reference-id"
client.get_order_term(reference_id)

Create order term

order_id = "mock-order-id"
terms = [
    OrderPaymentTermCreateDTO(order_id=order_id, amount=5000, term_reference_id="TERM-123000456",due_date="2025-10-10 00:00",term_sequence=1),
    OrderPaymentTermCreateDTO(order_id=order_id, amount=5000, term_reference_id="TERM-123000457",due_date="2025-11-10 00:00",term_sequence=2)
]

for term in terms:
    client.create_order_term(term)

Delete order term

order_id = "mock-uuid-order-id"
term_reference_id = "TERM-123000456"
client.delete_order_term(order_id,term_reference_id)

Update order term

term = OrderPaymentTermUpdateDTO(term_reference_id="TERM-123000457",due_date="2025-12-10 00:00",required=True)
client.update_order_term(term)

Refund order term

term_refund = OrderTermRefundRequest(term_reference_id="TERM-123000456",amount=1200)
client.refund_order_term(term_refund)

Terminate order term

reference_id = "mock-uuid-reference-id"
client.order_terminate(reference_id)

Manual callback for order

reference_id = "mock-uuid-reference-id"
conversation_id = "mock-conversation-id"
client.order_manual_callback(reference_id, conversation_id)

Order related reference update

reference_id = "mock-uuid-reference-id"
related_reference_id = "mock-related-reference-id"
client.order_related_update(reference_id, conversation_id)

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

tapsilat_py-2025.6.24.1.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tapsilat_py-2025.6.24.1-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file tapsilat_py-2025.6.24.1.tar.gz.

File metadata

  • Download URL: tapsilat_py-2025.6.24.1.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for tapsilat_py-2025.6.24.1.tar.gz
Algorithm Hash digest
SHA256 52b3fe761738d1e171fed37330ea7e97b7467cb0611570f48567f38c25a58bcf
MD5 2576a149a2c399b355d712be6d86eb2b
BLAKE2b-256 93700a44466dcb27cabd37f74018ecde2b60d77fd4225461524b9cbba394160e

See more details on using hashes here.

File details

Details for the file tapsilat_py-2025.6.24.1-py3-none-any.whl.

File metadata

File hashes

Hashes for tapsilat_py-2025.6.24.1-py3-none-any.whl
Algorithm Hash digest
SHA256 36852bba346ca233eaf85641fe283d1b89e7f65dc910ba00a10b09aa78daef47
MD5 9536e00abd527337e2db9bd15a1d34aa
BLAKE2b-256 0ac0aaa8fd8deeade864262199c9de96563bf0109a1d4df91d282a134fa98b5a

See more details on using hashes here.

Supported by

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