Package: unipag
RequirementsPython version 2.6 or 2.7, or PyPy. For better security, we recommend to
installPython Requestslibrary, since it supports SSL certs verification.
To install Requests, simply run:$ pip install requestsor using easy_install:$ easy_install requestsRequests library is optional. If it is not installed, Unipag Client will use
urllib2 instead. All features of Unipag Client will remain fully functional, but
it will not verify SSL certificate of Unipag API.InstallationInstall using pip, recommended (why?):$ pip install unipagor using easy_install:$ easy_install unipagSample usageCreate invoiceimportunipagimportunipag.defaults# Get your key at https://my.unipag.comunipag.defaults.api_key='<your-secret-key>'invoice=unipag.Invoice.create(amount=42,currency='USD')# Done. invoice.id now contains unique id of this invoice at Unipag.Install Unipag widgetTry our widget for payments workflow handling. It’s quite optional, but you
might find it handy and time-saving.<scripttype="text/javascript"src="//d3oe3cumn3db7.cloudfront.net/uw3/js/uw3.min.js"charset="utf-8"id="uw3js"data-key="<your-public-key>"></script>Please note, it is important that you usepublic keyfor widget.
Public keys have restricted access to your data and are supposed to be safe
for use in browser.Handle webhook from UnipagCreate a standalone page on your website which will handle events sent by
Unipag. Register URL of this page athttps://my.unipag.com> Settings > Webhooks.
Initialize page code as following (example for Django):importunipagimportunipag.defaultsfromdjango.httpimportHttpResponse,HttpResponseBadRequest# Get your key at https://my.unipag.comunipag.defaults.api_key='<your-secret-key>'defhandle_unipag_hook(request):"""
    An example of Django view for handling hooks from Unipag.
    """event=unipag.objects_from_json(request.body)# Unipag should send correctly constructed event objectsifnotisinstance(event,unipag.Event):returnHttpResponseBadRequest('Bad request')# In this example we subscribe to invoice-related events onlyifisinstance(event.related_object,unipag.Invoice):# Always reload information from Unipag for security reasons:invoice=event.related_object.reload()# Now invoice object contains the most recent information,# securely loaded from Unipag.# ... do something with invoice data ...# Return HTTP 200 to let Unipag know that we successfully received messagereturnHttpResponse('OK')Tip: webhooks can be a pain to debug. Check out Unipag Network Activity log, it
is available athttps://my.unipag.com> Network Activity. You may find it
useful for your webhook handlers debugging.Usage of invoice “custom_data” propertyInvoice objects have an optional “custom_data” property, which can be used to
store up to 32KB of arbitrary data in JSON format. You can freely use this field
to store additional information about invoices, which is specific for your
application.In Python, you can use dicts, lists, strings, numbers, boolean and None values
in any combination to store them in custom_data. All of these types will be
properly serialized when sending to Unipag and deserialized when fetching them
back. Consider the following examples, all of them are valid usages of
custom_data property:importunipagimportunipag.defaults# Get your key at https://my.unipag.comunipag.defaults.api_key='<your-secret-key>'invoice=unipag.Invoice.create(amount=42,currency='USD')# Store dicts, lists and single valuesinvoice.custom_data={'address':{'billing':'5863 Gentle Pond Rise, Suspension, Ontario, CA','shipping':'9215 Red Ridge, Lancer, Idaho, US',},'contact_phones':['555-4242','555-9000'],'magic_number':42,}invoice.save()# Clean everything outinvoice.custom_data=Noneinvoice.save()# Store a single value. Yes, it will be a valid JSON.invoice.custom_data=Trueinvoice.save()# Store list as a root element. Let's assume that we need to save cart items:invoice.custom_data=[{"product":"apples","price":10.0,"quantity":1},{"product":"oranges","price":12.5,"quantity":2}]invoice.save()Report bugsReport issues to the project’sIssues Trackingon Github.