-
Notifications
You must be signed in to change notification settings - Fork 49
/
4-ideal-payment.py
93 lines (76 loc) · 3.1 KB
/
4-ideal-payment.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# coding=utf-8
#
# Example 4 - How to prepare an iDEAL payment with the Mollie API.
#
from __future__ import print_function
import sys, os, time, flask
from app import database_write
#
# Add Mollie library to module path so we can import it.
# This is not necessary if you use pip or easy_install.
#
sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/../'))
import Mollie
def main ():
try:
#
# Initialize the Mollie API library with your API key.
#
# See: https://www.mollie.com/dashboard/settings/profiles
#
mollie = Mollie.API.Client()
mollie.setApiKey('test_bt7vvByF6jTcBR4dLuW66eNnHYNIJp')
#
# First, let the customer pick the bank in a simple HTML form. This step is actually optional.
#
if 'issuer' not in flask.request.form:
body = '<form method="post">Select your bank: <select name="issuer">'
for issuer in mollie.issuers.all():
if issuer['method'] == Mollie.API.Object.Method.IDEAL:
body += '<option value="%s">%s</option>' % (issuer['id'], issuer['name'])
body += '<option value="">or select later</option>'
body += '</select><button>OK</button></form>'
return body
else:
#
# Get the posted issuer id.
#
issuer_id = None
if flask.request.form['issuer']:
issuer_id = str(flask.request.form['issuer'])
#
# Generate a unique order number for this example. It is important to include this unique attribute
# in the redirectUrl (below) so a proper return page can be shown to the customer.
#
order_nr = int(time.time())
#
# Payment parameters:
# amount Amount in EUROs. This example creates a € 10,- payment.
# description Description of the payment.
# redirectUrl Redirect location. The customer will be redirected there after the payment.
# metadata Custom metadata that is stored with the payment.
# method Payment method "ideal".
# issuer The customer's bank. If empty the customer can select it later.
#
payment = mollie.payments.create({
'amount': 10.00,
'description': 'My first API payment',
'redirectUrl': flask.request.url_root + '3-return-page?order_nr=' + str(order_nr),
'metadata': {
'order_nr': order_nr
},
'method': 'ideal',
'issuer': issuer_id
})
#
# In this example we store the order with its payment status in a database.
#
database_write(order_nr, payment['status'])
#
# Send the customer off to complete the payment.
#
return flask.redirect(payment.getPaymentUrl())
except Mollie.API.Error as e:
return 'API call failed: ' + e.message
if __name__ == '__main__':
print(main())