Online payment gateways wrapper library.
Project description
Payit
=====
.. image:: https://travis-ci.org/meyt/payit.svg?branch=master
:target: https://travis-ci.org/meyt/payit
.. image:: https://coveralls.io/repos/github/meyt/payit/badge.svg?branch=master
:target: https://coveralls.io/github/meyt/payit?branch=master
.. image:: https://img.shields.io/pypi/pyversions/payit.svg
:target: https://pypi.python.org/pypi/payit
Online payment gateways wrapper library.
## Supported Gateways
(Iran)
- AsanPardakht
- IranKish
- Mellat
- Pay.ir
- Zarinpal
- Parsian (PECCO)
## Install
```bash
pip install payit
```
## Usage
```python
from payit import (
GatewayManager,
gateways,
Transaction,
TransactionAlreadyPaidError
)
# Configure:
config = {
'mellat': {
'terminal_id': '1234',
'username': 'demo',
'password': 'demo',
'callback_url': 'http://localhost/callback/mellat'
},
'zarinpal1': {
'merchant': '534534534532225234234',
'description': '',
'callback_url': 'http://localhost/callback/zarinpal1'
},
'zarinpal2': {
'merchant': '33333333532225234234',
'description': '',
'callback_url': 'http://localhost/callback/zarinpal2'
}
}
manager = GatewayManager()
manager.register('mellat', gateways.MellatGateway)
manager.register('zarinpal1', gateways.ZarinpalGateway)
manager.register('zarinpal2', gateways.ZarinpalGateway)
manager.configure(config)
# Make Transaction:
my_database = {}
selected_gateway = 'zarinpal1'
try:
transaction = Transaction(amount=1500, order_id=11002)
transaction = manager.request(selected_gateway, transaction)
# Store `transaction.id` on your database
my_database['transaction_id'] = transaction.id
# Get redirection details
redirection = manager.get_redirection(selected_gateway, transaction)
# Now redirect your client to gateway by redirection details
except PayitException:
print('Something wrong on payment')
raise
# Callback
# Now user backs from gateway to complete payment procedure
selected_gateway = 'zarinpal1'
try:
callback_data = {
'Authority': 101
}
transaction = manager.validate(selected_gateway, callback_data)
if not payit_transaction.validate_status:
raise RuntimeError('Transaction is not valid')
# Check `transaction.id` exist on your database
if transaction.id not in my_database:
raise RuntimeError('Transaction is not exists')
# Now verify your
manager.verify(selected_gateway, callback_data)
except TransactionAlreadyPaidError:
print('Transaction Already Paid')
raise
except PayitException:
print('Something wrong on payment')
raise
```
=====
.. image:: https://travis-ci.org/meyt/payit.svg?branch=master
:target: https://travis-ci.org/meyt/payit
.. image:: https://coveralls.io/repos/github/meyt/payit/badge.svg?branch=master
:target: https://coveralls.io/github/meyt/payit?branch=master
.. image:: https://img.shields.io/pypi/pyversions/payit.svg
:target: https://pypi.python.org/pypi/payit
Online payment gateways wrapper library.
## Supported Gateways
(Iran)
- AsanPardakht
- IranKish
- Mellat
- Pay.ir
- Zarinpal
- Parsian (PECCO)
## Install
```bash
pip install payit
```
## Usage
```python
from payit import (
GatewayManager,
gateways,
Transaction,
TransactionAlreadyPaidError
)
# Configure:
config = {
'mellat': {
'terminal_id': '1234',
'username': 'demo',
'password': 'demo',
'callback_url': 'http://localhost/callback/mellat'
},
'zarinpal1': {
'merchant': '534534534532225234234',
'description': '',
'callback_url': 'http://localhost/callback/zarinpal1'
},
'zarinpal2': {
'merchant': '33333333532225234234',
'description': '',
'callback_url': 'http://localhost/callback/zarinpal2'
}
}
manager = GatewayManager()
manager.register('mellat', gateways.MellatGateway)
manager.register('zarinpal1', gateways.ZarinpalGateway)
manager.register('zarinpal2', gateways.ZarinpalGateway)
manager.configure(config)
# Make Transaction:
my_database = {}
selected_gateway = 'zarinpal1'
try:
transaction = Transaction(amount=1500, order_id=11002)
transaction = manager.request(selected_gateway, transaction)
# Store `transaction.id` on your database
my_database['transaction_id'] = transaction.id
# Get redirection details
redirection = manager.get_redirection(selected_gateway, transaction)
# Now redirect your client to gateway by redirection details
except PayitException:
print('Something wrong on payment')
raise
# Callback
# Now user backs from gateway to complete payment procedure
selected_gateway = 'zarinpal1'
try:
callback_data = {
'Authority': 101
}
transaction = manager.validate(selected_gateway, callback_data)
if not payit_transaction.validate_status:
raise RuntimeError('Transaction is not valid')
# Check `transaction.id` exist on your database
if transaction.id not in my_database:
raise RuntimeError('Transaction is not exists')
# Now verify your
manager.verify(selected_gateway, callback_data)
except TransactionAlreadyPaidError:
print('Transaction Already Paid')
raise
except PayitException:
print('Something wrong on payment')
raise
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
payit-0.5.3.tar.gz
(14.2 kB
view hashes)