Skip to content

vlinhart/django-gopay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About django-gopay

This code is not a full implementation of the gopay api according to integration manual. It's simple implementation of the GoPayHTTP api which consists of only two api calls

  • paymentCommand - which creates new payment command
  • paymentStatus - which allows you to find out the result of the paymentCommand

It also provides payment status notification callback encryption validation.

There are no SOAP calls implemented, these cover more specific commands which will be implemented later, maybe.

##Installation pip install git+git://github.com/vlinhart/django-gopay.git#egg=gopay add 'gopay' to the INSTALLED_APPS. add url(r'^gopay/', include('gopay.urls', namespace="gopay")) to urls.py

##Configuration It's necessary to set several constants in settings.py:

GOPAY_ESHOP_GOID = your gopay id
GOPAY_SECRET = 'your gopay secret'
GOPAY_SUCCESS_URL = 'url to which user will be redirected after successful payment on GOPAY'
GOPAY_FAILED_URL = 'url to which user will be redirected after failed payment on GOPAY'
GOPAY_NOTIFICATION_CALLBACK = 'gopay.utils.notification_callback' more about this later
GOPAY_TESTING_MODE = True # set to False if you want the production URLS for gopay

optional is:
GOPAY_VERIFY_SSL = False #if you want the ssl cert of gopay to be checked ala browser, set it to True

##Usage Now if you want to create a new payment allowing customer to pay for goods, do this in your view:

from gopay import gopay_http

payment = gopay_http.Payment()
session_id = payment.create_payment(productName='CHEESBURGER', variableSymbol='VS', totalPriceInCents=1000)
redirect_url = payment.get_redirect_url(session_id)
return redirect(redirect_url)

The payment will be created and customer redirected to GOPAY. If you want to restrict which payment method is used, by default all of them. You can either enumerate them or say which ones you don't want (SUPERCASH):

payment.create_payment(productName='CHEESBURGER', variableSymbol='VS', totalPriceInCents=1000,
                       paymentChannels=const.PAYMENT_METHODS-set(['SUPERCASH',]))

####More about GOPAY_NOTIFICATION_CALLBACK You need to create this method to process the successfull payment/failure/notification from GOPAY. It's called in these three situations after the caller was verified. You should process the payment in this function. Its' signature is

def gopay_notification_callback(request, paid_ok, payment_details, type, paymentSessionId, variableSymbol)
  • request - django request object
  • paid_ok - whether the payment was really finished and money were transfered
  • payment_details - dict containing payment details as returned from GOPAY, see GOPAY integration manual 13.7
  • type - which url this was called from ('notification', 'success', 'failure')
  • paymentSessionId - gopay session id
  • variableSymbol - variable symbol

This method must return HttpResponse. Reference implementation in gopay.utils.notification_callback ends like this:

return render(request, "gopay/%s.html" % type, locals())

The templates gopay/('notification', 'success', 'failure').html are provided. So overriding them is probably easiest.

About

Gopay in django with using GoPayHTTP only

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages