Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/paymill/paymill-python

Python wrapper for Paymill API
https://github.com/paymill/paymill-python

Last synced: 3 months ago
JSON representation

Python wrapper for Paymill API

Awesome Lists containing this project

README

        

![PAYMILL icon](https://static.paymill.com/r/335f99eb3914d517bf392beb1adaf7cccef786b6/img/logo-download_Light.png)
# paymill-python

Python wrapper for PAYMILL API(beta)

## Getting started

- If you are not familiar with PAYMILL, start with the [documentation](https://www.paymill.com/en-gb/documentation-3/).
- Install the latest release.
- Check the API [reference](https://www.paymill.com/en-gb/documentation-3/reference/api-reference/).
- Check the tests.

## Installation
You can either choose to install the package from PyPi executing following line:

```
pip install paymill-wrapper
```

Or you can check out the project, and install it locally. Navigate to the root directory and execute following line:

```
pip install . -r requirements.txt
```

## What's new

We have released version 1.1.0 which is coded directly to the PAYMILL API v2.1 and is Py2&3 compatible.This version is no longer backwards compatible with the pymill fork from https://github.com/kliment/pymill. If you need to be PAYMILL API v2.0 compatible please use https://github.com/paymill/paymill-python/tree/v0.1.2.

## Usage

Initialize the library by providing your api key:
```python
paymill_context = paymill.PaymillContext('')
```
PaymillContext loads the context of PAYMILL for a single account, by providing a merchants private key. It creates 8 services, which represents the PAYMILL API:
* ClientService
* OfferService
* PaymentService
* PreauthorizationService
* RefundService
* SubscriptionService
* TransactionService
* WebhookService
* ChecksumService

These services should not be created directly. They have to be obtained by the context's accessors.

### Using services

In all cases, you'll use the predefined service classes to access the PAYMILL API.

To fetch a service instance, call *service name* accessor from paymill_context, like
```python
client_service = paymill_context.get_client_service()
```
Every service instance provides basic methods for CRUD functionality.

### Creating objects

Every service provides instance factory methods for creation. They are very different for every service, because every object can be created in a different way. The common pattern is
```python
xxx_service.create_XXX(params...)
```
For example: client can be created with two optional parameters: *email* and *description*. So we have four possible methods to create the client:
```python
#creates a client without email and description
client_service.create()
```
```python
#creates a client with email
client_service.create(email='[email protected]')
```
```python
#creates a client with description
client_service.create(description='CRM Id: fake_34212')
```
```python
#creates a client with email and description
client_service.create(email='[email protected]', description='CRM Id: fake_34212')
```

### Retrieving objects

You can retrieve an object by using the get() method with with the instance itself:
```python
client_service.detail(client)
```
This method throws an PMError if there is no client under the given id.

### Retrieving lists

To retrieve a list you may simply use the list() method:
```python
clients = client_service.list()
```
You may provide a filter and order to list method:
```python
clients = client_service.list(
order=paymill.models.client.Client.Order.created_at().desc(),
filtr=paymill.models.client.Client.Filter.by_email('[email protected]'))
```
This will load only clients with email [email protected], order descending by creation date.

### Updating objects

In order to update an object simply call a service's update() method:
```python
client_service.update(client)
```

### Deleting objects

You may delete objects by calling the service's delete() method with an object instance.
```python
client_service.remove(client)
```

## Changelog

### 2.4.1
* Fix version in setup.py

### 2.4.0
* Add param client_id to checksum create function

### 2.3.0
* Disable httplib debugging by default
* http_debugging_enabled otional parameter added to PaymillContext

### 2.2.0
* Bug fixing
* ChecksumService added
* FilterList added

### 2.1
* PyPi release fixed

### 2.0
* Some names regarding package installation changed
* Official PyPi release

### 1.1
* Support for Py3
* FilterList added for filter combination
* Bug fixing & code improvements

### 1.0
* New implementation from scratch that conforms to PAYMILL API v2.1

## License

Copyright 2014 PAYMILL GmbH.

MIT License (enclosed)