Skip to content

christopherhan/python-payment-processor

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Payment Processor - (c) Ian Halpern 2010

Python Payment Processor is a library for python that acts as a simple abstraction around various payment methods and payment gateways. It includes support for standard gateways such as Authorize.net and is always working to expand it's supported gateway repertoire. Python Payment is currently being used in production systems transferring tens of thousands of dollars a month.

Python Payment Processor is released under the MIT license.

*A special thanks to Brandon Stoner for collaborating on the initial concept design.

INSTALL:

To install python-payment-processor on a linux system run:

$ sudo ./setup.py install

HOW TO:

Using python-payment-processor is very straight forward.

Here is a simple example using the authroize.net payment gateway. This example
creates a authorize.net payment gateway and a credit card transaction and
processes the transaction.

----------------------------------------------------
import payment_processor
from payment_processor.exceptions import *

# the authorize.net gateway requires valid authorize.net 'login' and 'trans_key' variables
gateway = payment_processor.Gateway( 'authorize.net', login='XXX', trans_key='XXX' )

# other authroize.net variables include 'use_test_url' which, if set,
# will use https://test.authorize.net/ instead of https://secure.authorize.net
# if you are using a developer account

card = payment_processor.methods.CreditCard(
	card_number=4011111111111111,
	expiration_date=datetime.datetime( 2014, 1, 1 ),
	first_name='First',
	last_name='Last',
	zip_code='10001',
	address='1 Somewhere Ave',
	city='New York',
	state='NY'
)

payment = payment_processor.PaymentInfo(
	amount = 20,
	customer_id = 1,
	order_number = '43DJ-7203-D897-SS97',
	ship_first_name = 'First',
	ship_last_name = 'Last',
	ship_address = '1 Somewhere Ave',
	ship_city = 'New York',
	ship_state = 'NY',
	ship_email = 'email@example.com',
	ship_phone = '222-333-4444',
	ip = '65.192.14.10',
	description = 'Some Order'
)

t = payment_processor.Transaction( payment=payment, method=card, gateway=gateway )

try:
	t.process()
except TransactionDeclined:
	# The transaction requested was declined for such reasons as insufficient funds or flagged for fraud.
	raise
except InvalidCardNumber:
	# The credit card number provided was invalid.
	raise
except InvalidCardExpirationDate:
	# The credit card expiration date provided was invalid.
	raise
except InvalidCardCode:
	# The credit card code provided was invalid.
	raise
except InvalidRoutingNumber:
	# The routing number provided was invalid (only applicable to Check methods).
	raise
except InvalidAccountNumber:
	# The account number provided was invalid (only applicable to Check methods).
	raise
except InvalidBillingAddress:
	# The billing address provided was invalid.
	raise
except InvalidBillingZipcode:
	# The billing zipcode provided was invalid.
	raise
except TransactionAmountLimitExceeded:
	# The per-transaction limit was exceeded.
	raise
except TransactionFailed:
	# The transaction failed for other reasons usually relating using python-payment in ways unsupported by the gateway.
	raise

----------------------------------------------------

Using payment_processor.Gateway always take a string as the first argument which is used as
a simple way to dynamically load a specific gateway found in payment.gateways.

You can easily create a gateway outside of the python-payment-processor module, just create a
class that overloads payment.gateways.GenericGateway.

----------------------------------------------------

from payment_processor.gateways import GenericGateway

class MyGateway( GenericGateway )
...

----------------------------------------------------

You can use payment_processor asynchronously

----------------------------------------------------

def callback( t ):
	try:
		t.handleResponse()
	except TransactionDeclined:
		# The transaction requested was declined for such reasons as insufficient funds or flagged for fraud.
		raise
	except InvalidCardNumber:
		# The credit card number provided was invalid.
		raise
	except InvalidCardExpirationDate:
		# The credit card expiration date provided was invalid.
		raise
	except InvalidCardCode:
		# The credit card code provided was invalid.
		raise
	except InvalidRoutingNumber:
		# The routing number provided was invalid (only applicable to Check methods).
		raise
	except InvalidAccountNumber:
		# The account number provided was invalid (only applicable to Check methods).
		raise
	except InvalidBillingAddress:
		# The billing address provided was invalid.
		raise
	except InvalidBillingZipcode:
		# The billing zipcode provided was invalid.
		raise
	except TransactionAmountLimitExceeded:
		# The per-transaction limit was exceeded.
		raise
	except TransactionFailed:
		# The transaction failed for other reasons usually relating using python-payment in ways unsupported by the gateway.
		raise

t = payment_processor.Transaction( payment=payment, method=card, gateway=gateway, async=True, callback=callback )

t.process()

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published