/
paymentHandler.py
100 lines (72 loc) · 2.79 KB
/
paymentHandler.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
94
95
96
97
98
99
100
#!/usr/bin/python
import os,sys
from random import randint
from google.appengine.ext import webapp
from google.appengine.ext import db
from google.appengine.ext.webapp import util
from google.appengine.ext.webapp import template
from django.utils import simplejson as json
from models import Payment
class PaymentHandler(webapp.RequestHandler):
def __init__(self):
self.commandMap = {
"CreatePayment" : self.CreatePayment ,
"FetchPayment" : self.FetchPayment,
"PaymentStatus" : self.PaymentStatus,
"DoPayment": self.DoPayment
}
def get(self,command,argument=''):
self.commandMap[command](self.request.get('token'))
def post(self,command,argument=''):
try:
self.commandMap[command](json.loads(self.request.body))
except:
self.response.out.write("cannot create payment:" + str(sys.exc_info()[:]))
def CreatePayment(self,details):
p = Payment()
p.amount = details["amount"]
p.company = details["company"]
p.complete = False
p.token = str(self.GenerateToken())
p.put()
resp = {
"success" : True ,
"token" : p.token
}
self.response.out.write(json.dumps(resp))
return True
def FetchPayment(self,token):
q = Payment.all()
q.filter("token =", token)
p = q.fetch(1)[0]
values = {
"company" : p.company,
"amount" : p.amount,
"token" : p.token
}
path = os.path.join(os.path.dirname(__file__), 'templates/payment_details.html')
self.response.out.write(template.render(path, values))
def DoPayment(self,token):
q = Payment.all()
q.filter("token = ",token)
p = q.fetch(1)[0]
if p:
p.complete = True
p.put()
values = {
"confirmation_code" : str(self.GenerateToken())
}
path = os.path.join(os.path.dirname(__file__), 'templates/payment_complete.html')
self.response.out.write(template.render(path, values))
def PaymentStatus(self,token):
q = Payment.all()
q.filter("token = ",token)
p = q.fetch(1)[0]
resp = {
"token" : token,
"isComplete" : p.complete
}
self.response.out.write(json.dumps(resp))
def GenerateToken(self):
#TODO: fix this shit
return randint(10e7,10e8)