paddle-python-sdk


Namepaddle-python-sdk JSON
Version 0.3.1 PyPI version JSON
download
home_pagehttps://developer.paddle.com/api-reference/overview
SummaryPaddle's Python SDK for Paddle Billing
upload_time2024-10-14 08:24:11
maintainerNone
docs_urlNone
authorPaddle and contributors
requires_python>=3.11
licenseApache-2.0
keywords paddle sdk python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![Build Status](https://img.shields.io/github/actions/workflow/status/PaddleHQ/paddle-python-sdk/publish_to_pypi.yml)](https://github.com/PaddleHQ/paddle-python-sdk/actions/?query=branch%3Amain)
[![PyPI](https://img.shields.io/pypi/v/paddle-python-sdk.svg)](https://pypi.python.org/pypi/paddle-python-sdk)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/paddle-python-sdk.svg)](https://pypi.python.org/pypi/paddle-python-sdk/)
[![License: Apache 2.0](https://img.shields.io/github/license/PaddleHQ/paddle-python-sdk)](http://www.apache.org/licenses/LICENSE-2.0)


# paddle-python-sdk
[Paddle Billing](https://www.paddle.com/billing?utm_source=dx&utm_medium=paddle-python-sdk) is a complete digital product sales and subscription management platform, designed for modern software businesses. It helps you increase your revenue, retain customers, and scale your operations.

This is a [Python](https://www.python.org/) SDK that you can use to integrate Paddle Billing with applications written in Python.

For working with Paddle in your frontend, use [Paddle.js](https://developer.paddle.com/paddlejs/overview?utm_source=dx&utm_medium=paddle-python-sdk). You can open checkouts, securely collect payment information, build pricing pages, and integrate with Paddle Retain.

> **Important:** This package works with Paddle Billing. It does not support Paddle Classic. To work with Paddle Classic, see: [Paddle Classic API reference](https://developer.paddle.com/classic/api-reference/1384a288aca7a-api-reference?utm_source=dx&utm_medium=paddle-python-sdk)


## Table of contents
- [Requirements](#Requirements)
- [Install](#Install)
- [Usage](#Usage)
- [Examples](#Examples)
- [Resources](#Resources)

## Requirements
Python>=3.11 (for native type hinting, StrEnum, trailing commas, f-strings)

**Project dependencies** (automatically installed by pip):
- requests>=2.31
- urllib3>=2.1.0


## Install
Because `paddle-python-sdk` is [available on PyPi](https://pypi.org/project/paddle-python-sdk/), installation is as simple as running the following `pip` command: 

`pip install paddle-python-sdk`



## Usage
To authenticate, you'll need an API key. You can create and manage API keys in **Paddle > Developer tools > Authentication**.

Pass your API key while initializing a new Paddle client:
``` python
from paddle_billing import Client

paddle = Client('PADDLE_API_SECRET_KEY')
```

You can pass your Paddle API secret key into the SDK from an environment variable:
``` python
from os             import getenv
from paddle_billing import Client

paddle = Client(getenv('PADDLE_API_SECRET_KEY'))
```

You can also pass an environment to work with Paddle's sandbox:
``` python
from paddle_billing import Client, Environment, Options

paddle = Client('PADDLE_API_SECRET_KEY', options=Options(Environment.SANDBOX))
```

Keep in mind that API keys are separate for your sandbox and live accounts, so you'll need to generate keys for each environment.



## Examples
There are examples included in the [examples folder](https://github.com/PaddleHQ/paddle-python-sdk/tree/main/examples). To prevent leaking errors we recommend encapsulating Paddle operations inside Try/Except blocks. For brevity, most of the examples below do not do this.

### List entities
You can list supported entities with the `list()` method in the resource. It returns an iterator to help when working with multiple pages.
``` python
from paddle_billing import Client

paddle = Client('PADDLE_API_SECRET_KEY')

products = paddle.products.list()

# list() returns an iterable, so pagination is automatically handled
for product in products:
    print(f"Product's id: {product.id}")
```

### Get an entity
You can get an entity with the `get()` method in the resource. It accepts the `id` of the entity to get. The entity is returned.
``` python
from paddle_billing import Client

paddle = Client('PADDLE_API_SECRET_KEY')

product = paddle.products.get('PRODUCT_ID')
```

### Create an entity
You can create a supported entity with the `create()` method in the resource. It accepts the resource's corresponding `CreateOperation` e.g. `CreateProduct`. The created entity is returned.

``` python
from paddle_billing                               import Client
from paddle_billing.Entities.Shared.TaxCategory   import TaxCategory
from paddle_billing.Resources.Products.Operations import CreateProduct

paddle = Client('PADDLE_API_SECRET_KEY')

created_product = paddle.products.create(CreateProduct(
    name         = 'My Product',
    tax_category = TaxCategory.Standard,
))
```

### Update an entity
You can update a supported entity with the `update()` method in the resource. It accepts the `id` of the entity to update and the corresponding `UpdateOperation` e.g. `UpdateProduct`. The updated entity is returned.
``` python
from paddle_billing                        import Client
from paddle_billing.Resources.Products.Operations import UpdateProduct

paddle = Client('PADDLE_API_SECRET_KEY')

# Update the name of the product
updated_product = paddle.products.update('PRODUCT_ID', UpdateProduct(
    name = 'My Improved Product'
))
```

Where operations require more than one `id`, the `update()` method accepts multiple arguments. For example, to update an address for a customer, pass the `customerId` and the `addressId`:
``` python
updated_address = paddle.addresses.update(
    'CUSTOMER_ID',
    'ADDRESS_ID',
    operation_goes_here,
)
```

### Delete an entity
You can delete an entity with the `delete()` method in the resource. It accepts the `id` of the entity to delete. The deleted entity is returned.
``` python
from paddle_billing import Client

paddle = Client('PADDLE_API_SECRET_KEY')

deleted_product = paddle.products.delete('PRODUCT_ID')
```


## Resources

### Webhook signature verification
The SDK includes a helper class to verify webhook signatures sent by Notifications from Paddle.

``` python
from paddle_billing.Notifications import Secret, Verifier

integrity_check = Verifier().verify(request, Secret('WEBHOOK_SECRET_KEY'))
```

## Learn more
- [Paddle API reference](https://developer.paddle.com/api-reference/overview?utm_source=dx&utm_medium=paddle-python-sdk)
- [Sign up for Paddle Billing](https://login.paddle.com/signup?utm_source=dx&utm_medium=paddle-python-sdk)

            

Raw data

            {
    "_id": null,
    "home_page": "https://developer.paddle.com/api-reference/overview",
    "name": "paddle-python-sdk",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "paddle, sdk, python",
    "author": "Paddle and contributors",
    "author_email": "team-dx@paddle.com",
    "download_url": "https://files.pythonhosted.org/packages/ae/c1/79d62c4fa5271ac64ea0e8fb7fa4e9fed0382f87144b364d5cb2e381438c/paddle_python_sdk-0.3.1.tar.gz",
    "platform": null,
    "description": "[![Build Status](https://img.shields.io/github/actions/workflow/status/PaddleHQ/paddle-python-sdk/publish_to_pypi.yml)](https://github.com/PaddleHQ/paddle-python-sdk/actions/?query=branch%3Amain)\n[![PyPI](https://img.shields.io/pypi/v/paddle-python-sdk.svg)](https://pypi.python.org/pypi/paddle-python-sdk)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/paddle-python-sdk.svg)](https://pypi.python.org/pypi/paddle-python-sdk/)\n[![License: Apache 2.0](https://img.shields.io/github/license/PaddleHQ/paddle-python-sdk)](http://www.apache.org/licenses/LICENSE-2.0)\n\n\n# paddle-python-sdk\n[Paddle Billing](https://www.paddle.com/billing?utm_source=dx&utm_medium=paddle-python-sdk) is a complete digital product sales and subscription management platform, designed for modern software businesses. It helps you increase your revenue, retain customers, and scale your operations.\n\nThis is a [Python](https://www.python.org/) SDK that you can use to integrate Paddle Billing with applications written in Python.\n\nFor working with Paddle in your frontend, use [Paddle.js](https://developer.paddle.com/paddlejs/overview?utm_source=dx&utm_medium=paddle-python-sdk). You can open checkouts, securely collect payment information, build pricing pages, and integrate with Paddle Retain.\n\n> **Important:** This package works with Paddle Billing. It does not support Paddle Classic. To work with Paddle Classic, see: [Paddle Classic API reference](https://developer.paddle.com/classic/api-reference/1384a288aca7a-api-reference?utm_source=dx&utm_medium=paddle-python-sdk)\n\n\n## Table of contents\n- [Requirements](#Requirements)\n- [Install](#Install)\n- [Usage](#Usage)\n- [Examples](#Examples)\n- [Resources](#Resources)\n\n## Requirements\nPython>=3.11 (for native type hinting, StrEnum, trailing commas, f-strings)\n\n**Project dependencies** (automatically installed by pip):\n- requests>=2.31\n- urllib3>=2.1.0\n\n\n## Install\nBecause `paddle-python-sdk` is [available on PyPi](https://pypi.org/project/paddle-python-sdk/), installation is as simple as running the following `pip` command: \n\n`pip install paddle-python-sdk`\n\n\n\n## Usage\nTo authenticate, you'll need an API key. You can create and manage API keys in **Paddle > Developer tools > Authentication**.\n\nPass your API key while initializing a new Paddle client:\n``` python\nfrom paddle_billing import Client\n\npaddle = Client('PADDLE_API_SECRET_KEY')\n```\n\nYou can pass your Paddle API secret key into the SDK from an environment variable:\n``` python\nfrom os             import getenv\nfrom paddle_billing import Client\n\npaddle = Client(getenv('PADDLE_API_SECRET_KEY'))\n```\n\nYou can also pass an environment to work with Paddle's sandbox:\n``` python\nfrom paddle_billing import Client, Environment, Options\n\npaddle = Client('PADDLE_API_SECRET_KEY', options=Options(Environment.SANDBOX))\n```\n\nKeep in mind that API keys are separate for your sandbox and live accounts, so you'll need to generate keys for each environment.\n\n\n\n## Examples\nThere are examples included in the [examples folder](https://github.com/PaddleHQ/paddle-python-sdk/tree/main/examples). To prevent leaking errors we recommend encapsulating Paddle operations inside Try/Except blocks. For brevity, most of the examples below do not do this.\n\n### List entities\nYou can list supported entities with the `list()` method in the resource. It returns an iterator to help when working with multiple pages.\n``` python\nfrom paddle_billing import Client\n\npaddle = Client('PADDLE_API_SECRET_KEY')\n\nproducts = paddle.products.list()\n\n# list() returns an iterable, so pagination is automatically handled\nfor product in products:\n    print(f\"Product's id: {product.id}\")\n```\n\n### Get an entity\nYou can get an entity with the `get()` method in the resource. It accepts the `id` of the entity to get. The entity is returned.\n``` python\nfrom paddle_billing import Client\n\npaddle = Client('PADDLE_API_SECRET_KEY')\n\nproduct = paddle.products.get('PRODUCT_ID')\n```\n\n### Create an entity\nYou can create a supported entity with the `create()` method in the resource. It accepts the resource's corresponding `CreateOperation` e.g. `CreateProduct`. The created entity is returned.\n\n``` python\nfrom paddle_billing                               import Client\nfrom paddle_billing.Entities.Shared.TaxCategory   import TaxCategory\nfrom paddle_billing.Resources.Products.Operations import CreateProduct\n\npaddle = Client('PADDLE_API_SECRET_KEY')\n\ncreated_product = paddle.products.create(CreateProduct(\n    name         = 'My Product',\n    tax_category = TaxCategory.Standard,\n))\n```\n\n### Update an entity\nYou can update a supported entity with the `update()` method in the resource. It accepts the `id` of the entity to update and the corresponding `UpdateOperation` e.g. `UpdateProduct`. The updated entity is returned.\n``` python\nfrom paddle_billing                        import Client\nfrom paddle_billing.Resources.Products.Operations import UpdateProduct\n\npaddle = Client('PADDLE_API_SECRET_KEY')\n\n# Update the name of the product\nupdated_product = paddle.products.update('PRODUCT_ID', UpdateProduct(\n    name = 'My Improved Product'\n))\n```\n\nWhere operations require more than one `id`, the `update()` method accepts multiple arguments. For example, to update an address for a customer, pass the `customerId` and the `addressId`:\n``` python\nupdated_address = paddle.addresses.update(\n    'CUSTOMER_ID',\n    'ADDRESS_ID',\n    operation_goes_here,\n)\n```\n\n### Delete an entity\nYou can delete an entity with the `delete()` method in the resource. It accepts the `id` of the entity to delete. The deleted entity is returned.\n``` python\nfrom paddle_billing import Client\n\npaddle = Client('PADDLE_API_SECRET_KEY')\n\ndeleted_product = paddle.products.delete('PRODUCT_ID')\n```\n\n\n## Resources\n\n### Webhook signature verification\nThe SDK includes a helper class to verify webhook signatures sent by Notifications from Paddle.\n\n``` python\nfrom paddle_billing.Notifications import Secret, Verifier\n\nintegrity_check = Verifier().verify(request, Secret('WEBHOOK_SECRET_KEY'))\n```\n\n## Learn more\n- [Paddle API reference](https://developer.paddle.com/api-reference/overview?utm_source=dx&utm_medium=paddle-python-sdk)\n- [Sign up for Paddle Billing](https://login.paddle.com/signup?utm_source=dx&utm_medium=paddle-python-sdk)\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Paddle's Python SDK for Paddle Billing",
    "version": "0.3.1",
    "project_urls": {
        "Homepage": "https://developer.paddle.com/api-reference/overview"
    },
    "split_keywords": [
        "paddle",
        " sdk",
        " python"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a5e2fb4b8b2f7a954c45f83867d7c8e07e4826846bd5c25d48fb05152dee5ec4",
                "md5": "125bb1516da781138b03b35709b7a408",
                "sha256": "4440831f113d23cdc08e2d45e15fa967b51b24cc5919120abccd554850fff492"
            },
            "downloads": -1,
            "filename": "paddle_python_sdk-0.3.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "125bb1516da781138b03b35709b7a408",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 303996,
            "upload_time": "2024-10-14T08:24:09",
            "upload_time_iso_8601": "2024-10-14T08:24:09.264361Z",
            "url": "https://files.pythonhosted.org/packages/a5/e2/fb4b8b2f7a954c45f83867d7c8e07e4826846bd5c25d48fb05152dee5ec4/paddle_python_sdk-0.3.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aec179d62c4fa5271ac64ea0e8fb7fa4e9fed0382f87144b364d5cb2e381438c",
                "md5": "61f7dfe9bf285b09c6a3e358a501ed32",
                "sha256": "48f98e645a4aed89828952c87353b043255961f6ae6b92bb8c58f31159d1f405"
            },
            "downloads": -1,
            "filename": "paddle_python_sdk-0.3.1.tar.gz",
            "has_sig": false,
            "md5_digest": "61f7dfe9bf285b09c6a3e358a501ed32",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 118495,
            "upload_time": "2024-10-14T08:24:11",
            "upload_time_iso_8601": "2024-10-14T08:24:11.732128Z",
            "url": "https://files.pythonhosted.org/packages/ae/c1/79d62c4fa5271ac64ea0e8fb7fa4e9fed0382f87144b364d5cb2e381438c/paddle_python_sdk-0.3.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-14 08:24:11",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "paddle-python-sdk"
}
        
Elapsed time: 1.24415s