mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-22 19:33:11 +00:00
68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
import time
|
|
from random import randrange
|
|
import base64
|
|
import hashlib
|
|
from collections import OrderedDict
|
|
from itertools import chain
|
|
|
|
class Payment():
|
|
|
|
vad_number = ""
|
|
secret_key = ""
|
|
urlRetourOK = ""
|
|
urlRetourNOK = ""
|
|
urlIPN = ""
|
|
source = ""
|
|
typeTr = "D"
|
|
|
|
def __init__(self, vad_number = "", secret_key = "", urlRetourOK = "", urlRetourNOK = "", urlIPN = "", source="", typeTr="D"):
|
|
self.vad_number = vad_number
|
|
self.secret_key = secret_key
|
|
self.urlRetourOK = urlRetourOK
|
|
self.urlRetourNOK = urlRetourNOK
|
|
self.urlIPN = urlIPN
|
|
self.source = source
|
|
self.typeTr = typeTr
|
|
|
|
def buildSecretHTML(self, produit="Produit", montant="0.00", idTransaction=""):
|
|
if idTransaction == "":
|
|
self.idTransaction = str(time.time())+self.vad_number+str(randrange(999))
|
|
else:
|
|
self.idTransaction = idTransaction
|
|
|
|
array_tpe = OrderedDict(
|
|
montant= str(montant),
|
|
idTPE= self.vad_number,
|
|
idTransaction= self.idTransaction,
|
|
devise= "EUR",
|
|
lang= 'fr',
|
|
nom_produit= produit,
|
|
source= self.source,
|
|
urlRetourOK= self.urlRetourOK,
|
|
urlRetourNOK= self.urlRetourNOK,
|
|
typeTr= str(self.typeTr)
|
|
)
|
|
|
|
if self.urlIPN!="":
|
|
array_tpe['urlIPN'] = self.urlIPN
|
|
|
|
array_tpe['key'] = self.secret_key;
|
|
strWithKey = base64.b64encode(bytes('|'.join(array_tpe.values()), 'utf-8'))
|
|
del array_tpe["key"]
|
|
array_tpe['sec'] = hashlib.sha512(strWithKey).hexdigest()
|
|
|
|
ret = ""
|
|
for key in array_tpe:
|
|
ret += '<input type="hidden" name="'+key+'" value="'+array_tpe[key]+'"/>'
|
|
|
|
return ret
|
|
|
|
def validSec(self, values, secret_key):
|
|
if "sec" in values:
|
|
sec = values['sec']
|
|
del values["sec"]
|
|
strWithKey = hashlib.sha512(base64.b64encode(bytes('|'.join(values.values()) +"|"+secret_key, 'utf-8'))).hexdigest()
|
|
return strWithKey.upper() == sec.upper()
|
|
else:
|
|
return False
|
|
|