indico_sixpay
- SIX EPayment Plugin for Indico¶
Installation¶
The plugin can be installed using standard Python package managers. To enable the plugin, it must be added to the configuration file of indico.
See also
The official Indico Plugin Installation Guide.
Note that at least indico
2.0 is required, and will be installed automatically if it is missing.
Installing the package¶
The indico_sixpay
plugin must be installed for the python version running indico
.
With a standard indico installation, you must activate the indico python virtual environment first.
su - indico
source ~/.venv/bin/activate
The latest release version is available for the default python package managers.
You can directly install the module using pip
:
pip install indico_sixpay
This can also be used to upgrade to a newer version:
pip install indico_sixpay --upgrade
Enabling the package¶
All plugins must be enabled in indico’s configuration file.
By default, the configuration is located in /opt/indico/etc/indico.conf
.
PLUGINS = {'payment_sixpay'}
Note that if you need multiple plugins, you must all include them in the set of PLUGINS
:
PLUGINS = {'payment_manual', 'payment_paypal', 'payment_sixpay'}
After changing the configuration, trigger a reload of the indico services.
Issue the following commands as root
:
touch ~/web/indico.wsgi
systemctl restart indico-celery.service
Plugin Configuration¶
The plugin must be installed for an entire Indico instance. It can be enabled and configured for the entire instance and per individual event. Both levels have the same configuration options: The global settings act as a default, and are overridden by event specific settings.
Configuration Options¶
SixPay Saferpay URL
The URL to contact the Six Payment Service. Use the default
https://www.saferpay.com/hosting/
for any transaction. For testing, use thehttps://test.saferpay.com/hosting/
test service.You should generally not change this, unless you want to test the plugin. If the official saferpay URL changes, please submit an issue ticket.
Account ID
The ID of your Saferpay account, a number containing slashes. For testing, use the ID
401860-17795278
.This ID is provided to you by Six Payment Services.
Order Description [80 characters]
The description of each order in a human readable way. This description is presented to the registrant during the transaction with SixPay.
This field is limited to 80 characters, after any placeholders are filled in. The suggested length is 50 characters. The default description uses the registrant name and event title.
Order Identifier [80 characters]
The identifier of each order for further processing. This identifier is used internally and in your own billing.
This field is stripped of whitespace and limited to 80 characters, after any placeholders are filled in. Note that auxiliary services, e.g. for billing, may limit this information to 12 characters.
Notification Mail
Mail address to receive notifications of transactions. This is independent of Indico’s own payment notifications.
Format Placeholders¶
The Order Description/Identifier settings allow for placeholders. These are dynamically filled in for each event and registrant.
{user_id}
[231]
Numerical identifier of the user/registrant. This is unique per event, but not globally unique.
{user_name}
[Jane Doe]
Full name of the user/registrant. Use<first name> <last name>
format.
{user_firstname}
[Jane]
First name of the user/registrant.
{user_lastname}
[Doe]
Last name of the user/registrant.
{event_id}
[18]
Numerical identifier of the event. This is globally unique.
{event_title}
[My Conference]
Full title of the event.
{eventuser_id}
[e18u231]
A globally unique identifier for both the event and user.
{registration_title}
[Early Bird]
The title of the registration, as shown by Indico.
Placeholders use the Format String Syntax of Python.
For example, {event_title:.6}
is replaced with the first six characters of the event title.
Note that both fields taking placeholders have a maximum size. Since a template cannot be validated exactly, size validation assumes a reasonably terse input. In practice, fields may be silently shortened after formatting with long input.
Placeholder Examples¶
Below are some examples for use as Order Description and Order Identifier:
Format Template | Example Output |
---|---|
Order Description | |
{event_title} (RegNr. {user_id}) |
My Conference (RegNr. 231) |
{event_title}: {user_name} ({registration_title}) |
My Conference: Jane Doe (Early Bird) |
{event_title} ({registration_title}) |
My Conference (Early Bird) |
Order Identifier | |
{eventuser_id}-{user_firstname:.1}{user_lastname} |
e18u231-JDoe |
{event_title:.7} {eventuser_id} |
My Conf e18u231 |
Changelog¶
v2.0.2 – 2018-05-23¶
- Default SaferPay URL includes a trailing slash to form correct URLs.
v2.0.0 – 2018-02-08¶
- public release for Indico 2.0
v1.2.2 – 2017-07-10¶
- internal identifier for transactions is configurable
- expanded order description placeholders
v1.2.1 – 2017-03-14¶
- bugfix for duplicate transaction verification
v1.2.0 – 2017-03-13¶
- public release for Indico 1.2
Implementation Overview¶
The plugin follows the Six Payment Services Payment Page Specification Version 5.1. It implements the Saferpay https interface (Section 4 of the Specification), but has to tie it into the Indico transaction flow.
HTTP API | Plugin Component | Implementation |
---|---|---|
CreatePayInit | SixpayPaymentPlugin |
_get_transaction_parameters
_get_payment_url |
VerifyPayConfirm | SixPayResponseHandler |
_verify_signature |
CreatePayComplete | SixPayResponseHandler |
_confirm_transaction |
Payment Procedure¶
See below for an overview of the payment procedure:
The indico_sixpay
adds an EPayment option for
the SIX Payment Services provider
to the Indico event management system.
Overview¶
If the plugin is enabled, event participants can select the SixPay
payment method during the EPayment checkout.
Payment is performed via the Saferpay Payment Page, an external service provided by SIX Payment Services.
The plugin handles the user interaction inside Indico, and the secure, asynchronous transaction with SIX Payment Services.
The plugin must be installed for an entire Indico instance. It can be enabled and configured for the entire instance and per individual event. Note that a valid account with SIX Payment Services is required to receive payments.
The plugin follows the
Saferpay Payment Page
specification version 5.1
.
This plugin supports Indico 2.0. The legacy plugin for Indico 1.2 is hosted on github.
Quick Guide¶
To enable the plugin, it must be installed for the python version running indico
.
python -m pip install indico_sixpay
Once installed, it can be enabled in the administrator and event settings. Configuration uses the same options for global defaults and event specific overrides.
Usage Notes¶
The plugin relies on the ISO 4217 standard for currency conversions.
Since they are not properly covered by the standard, the currencies MGA
and MRU
cannot be used for payments.
Contributing and Feedback¶
The project is hosted on github. Feedback, pull requests and other contributions are always welcome. If you have issues or suggestions, check the issue tracker:
Disclaimer¶
This plugin is in no way endorsed, supported or provided by SIX, Indico or any other service, provider or entity.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.