From 41f8c745edb1332f97dbf0a5ac63498c2645a258 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 11 Oct 2017 02:14:59 +0000 Subject: [PATCH 1/7] Adding address to authorize call --- .../example/dist/payeezy-1.0-py2.7.egg | Bin 12654 -> 9629 bytes .../example/payeezy.egg-info/SOURCES.txt | 1 - payeezy_python/example/payeezy/api_methods.py | 31 +++++++++++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/payeezy_python/example/dist/payeezy-1.0-py2.7.egg b/payeezy_python/example/dist/payeezy-1.0-py2.7.egg index 05d9cacbfb18b266a985b0267cb23afd86462862..52bd461842c9f3a190b6ff7ed73a23540fd7812a 100755 GIT binary patch delta 8551 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 KZIlfEJpC89ubnCY diff --git a/payeezy_python/example/payeezy.egg-info/SOURCES.txt b/payeezy_python/example/payeezy.egg-info/SOURCES.txt index a9145be..6885869 100755 --- a/payeezy_python/example/payeezy.egg-info/SOURCES.txt +++ b/payeezy_python/example/payeezy.egg-info/SOURCES.txt @@ -1,4 +1,3 @@ -README.txt setup.py payeezy/__init__.py payeezy/api_methods.py diff --git a/payeezy_python/example/payeezy/api_methods.py b/payeezy_python/example/payeezy/api_methods.py index f691baf..c5e6185 100644 --- a/payeezy_python/example/payeezy/api_methods.py +++ b/payeezy_python/example/payeezy/api_methods.py @@ -12,7 +12,9 @@ class Payeezy(object): def __init__(self): return None - def authorize(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, card_expiry=None, card_cvv=None, description=None): + def authorize(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, + card_expiry=None, card_cvv=None, description=None, street=None, city=None, state=None, zip=None, + country=None, email=None, phone=None): makePayload_output = self.makePayload(amount=amount, currency_code=currency_code, @@ -24,6 +26,8 @@ def authorize(self, amount=None, currency_code=None, card_type=None, cardholder_ description=description, transactionType='authorize') + makePayload_output = self.addAddress(makePayload_output, street, city, state, zip, country, email, phone) + return self.makePrimaryTransaction( payload=makePayload_output['payload']) def purchase(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, card_expiry=None, card_cvv=None, description=None): @@ -75,6 +79,31 @@ def makeSecondaryTransaction(self, payload,transactionID): self.payeezy = http_authorization.PayeezyHTTPAuthorize(payeezy.apikey,payeezy.apisecret,payeezy.token,payeezy.url,payeezy.tokenurl) return self.payeezy.makeCaptureVoidRefundPostCall(self.payload,self.transactionID) + def addAddress(self, payload, street=None, city=None, zip=None, state=None, country=None, email=None, phone=None): + if street is None: + raise ValueError, 'Street address cannot be nil' + if city is None: + raise ValueError, 'City cannot be nil' + if zip is None: + raise ValueError, 'Zip code cannot be nil' + if type(zip) is int: + zip = str(zip) + if state is None: + raise ValueError, 'State cannot be nil' + if country is None: + raise ValueError, 'Country cannot be nil' + if email is None: + raise ValueError, 'Email cannot be nil' + if phone is None: + raise ValueError, 'Phone cannot be nil' + + address = {"street": street, "city": city, "state_province": state, "zip_postal_code": zip, + "country": country, "email": email, "phone": {"type": "contact", "number": phone}} + + payload["payload"]["billing_address"] = address + return payload + + def makePayload(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, card_expiry=None, card_cvv=None, description=None, transactionType=None, transactionTag=None, transactionID=None): if amount is None: From 088cc9cfc65f0683e9676872cca11e1131577ef4 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 11 Oct 2017 02:24:58 +0000 Subject: [PATCH 2/7] Removing phone since we don't require it --- .../example/dist/payeezy-1.0-py2.7.egg | Bin 9629 -> 9597 bytes payeezy_python/example/payeezy/api_methods.py | 10 ++++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/payeezy_python/example/dist/payeezy-1.0-py2.7.egg b/payeezy_python/example/dist/payeezy-1.0-py2.7.egg index 52bd461842c9f3a190b6ff7ed73a23540fd7812a..e0579e8c186a5a24f3f1a75550f22945bd254390 100755 GIT binary patch delta 3818 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 delta 3850 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 MB|8S%A^-pY0A8m@g8%>k diff --git a/payeezy_python/example/payeezy/api_methods.py b/payeezy_python/example/payeezy/api_methods.py index c5e6185..dcc16d2 100644 --- a/payeezy_python/example/payeezy/api_methods.py +++ b/payeezy_python/example/payeezy/api_methods.py @@ -14,7 +14,7 @@ def __init__(self): def authorize(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, card_expiry=None, card_cvv=None, description=None, street=None, city=None, state=None, zip=None, - country=None, email=None, phone=None): + country=None, email=None): makePayload_output = self.makePayload(amount=amount, currency_code=currency_code, @@ -26,7 +26,7 @@ def authorize(self, amount=None, currency_code=None, card_type=None, cardholder_ description=description, transactionType='authorize') - makePayload_output = self.addAddress(makePayload_output, street, city, state, zip, country, email, phone) + makePayload_output = self.addAddress(makePayload_output, street, city, state, zip, country, email) return self.makePrimaryTransaction( payload=makePayload_output['payload']) @@ -79,7 +79,7 @@ def makeSecondaryTransaction(self, payload,transactionID): self.payeezy = http_authorization.PayeezyHTTPAuthorize(payeezy.apikey,payeezy.apisecret,payeezy.token,payeezy.url,payeezy.tokenurl) return self.payeezy.makeCaptureVoidRefundPostCall(self.payload,self.transactionID) - def addAddress(self, payload, street=None, city=None, zip=None, state=None, country=None, email=None, phone=None): + def addAddress(self, payload, street=None, city=None, zip=None, state=None, country=None, email=None): if street is None: raise ValueError, 'Street address cannot be nil' if city is None: @@ -94,11 +94,9 @@ def addAddress(self, payload, street=None, city=None, zip=None, state=None, coun raise ValueError, 'Country cannot be nil' if email is None: raise ValueError, 'Email cannot be nil' - if phone is None: - raise ValueError, 'Phone cannot be nil' address = {"street": street, "city": city, "state_province": state, "zip_postal_code": zip, - "country": country, "email": email, "phone": {"type": "contact", "number": phone}} + "country": country, "email": email} payload["payload"]["billing_address"] = address return payload From 22ed99f0238206ef2265b6296b0a7152ecfaf047 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 11 Oct 2017 23:04:35 +0000 Subject: [PATCH 3/7] Updated spacing, not working --- .../example/dist/payeezy-1.0-py2.7.egg | Bin 9597 -> 9602 bytes payeezy_python/example/payeezy/api_methods.py | 38 +++++++++--------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/payeezy_python/example/dist/payeezy-1.0-py2.7.egg b/payeezy_python/example/dist/payeezy-1.0-py2.7.egg index e0579e8c186a5a24f3f1a75550f22945bd254390..da0fb4309a947a791ac8c39f579facff8569755c 100755 GIT binary patch delta 3364 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 delta 3355 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 diff --git a/payeezy_python/example/payeezy/api_methods.py b/payeezy_python/example/payeezy/api_methods.py index dcc16d2..df905fd 100644 --- a/payeezy_python/example/payeezy/api_methods.py +++ b/payeezy_python/example/payeezy/api_methods.py @@ -28,7 +28,7 @@ def authorize(self, amount=None, currency_code=None, card_type=None, cardholder_ makePayload_output = self.addAddress(makePayload_output, street, city, state, zip, country, email) - return self.makePrimaryTransaction( payload=makePayload_output['payload']) + return self.makePrimaryTransaction( payload=makePayload_output['payload']) def purchase(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, card_expiry=None, card_cvv=None, description=None): @@ -80,26 +80,26 @@ def makeSecondaryTransaction(self, payload,transactionID): return self.payeezy.makeCaptureVoidRefundPostCall(self.payload,self.transactionID) def addAddress(self, payload, street=None, city=None, zip=None, state=None, country=None, email=None): - if street is None: - raise ValueError, 'Street address cannot be nil' - if city is None: - raise ValueError, 'City cannot be nil' - if zip is None: - raise ValueError, 'Zip code cannot be nil' - if type(zip) is int: - zip = str(zip) - if state is None: - raise ValueError, 'State cannot be nil' - if country is None: - raise ValueError, 'Country cannot be nil' - if email is None: - raise ValueError, 'Email cannot be nil' - - address = {"street": street, "city": city, "state_province": state, "zip_postal_code": zip, + if street is None: + raise ValueError, 'Street address cannot be nil' + if city is None: + raise ValueError, 'City cannot be nil' + if zip is None: + raise ValueError, 'Zip code cannot be nil' + if type(zip) is int: + zip = str(zip) + if state is None: + raise ValueError, 'State cannot be nil' + if country is None: + raise ValueError, 'Country cannot be nil' + if email is None: + raise ValueError, 'Email cannot be nil' + + address = {"street": street, "city": city, "state_province": state, "zip_postal_code": zip, "country": country, "email": email} - payload["payload"]["billing_address"] = address - return payload + payload["payload"]["billing_address"] = address + return payload def makePayload(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, card_expiry=None, card_cvv=None, description=None, transactionType=None, transactionTag=None, transactionID=None): From cbc1135d3b551ebbc480f0eb8015aefb8f7587c5 Mon Sep 17 00:00:00 2001 From: alsaihn Date: Wed, 11 Oct 2017 19:08:57 -0400 Subject: [PATCH 4/7] F'ing tabs... --- payeezy_python/example/payeezy/api_methods.py | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/payeezy_python/example/payeezy/api_methods.py b/payeezy_python/example/payeezy/api_methods.py index df905fd..cdffd89 100644 --- a/payeezy_python/example/payeezy/api_methods.py +++ b/payeezy_python/example/payeezy/api_methods.py @@ -13,7 +13,7 @@ def __init__(self): return None def authorize(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, - card_expiry=None, card_cvv=None, description=None, street=None, city=None, state=None, zip=None, + card_expiry=None, card_cvv=None, description=None, street=None, city=None, state=None, zipcode=None, country=None, email=None): makePayload_output = self.makePayload(amount=amount, @@ -25,10 +25,9 @@ def authorize(self, amount=None, currency_code=None, card_type=None, cardholder_ card_cvv=card_cvv, description=description, transactionType='authorize') - - makePayload_output = self.addAddress(makePayload_output, street, city, state, zip, country, email) - - return self.makePrimaryTransaction( payload=makePayload_output['payload']) + + makePayload_output = self.addAddress(makePayload_output, street, city, state, zipcode, country, email) + return self.makePrimaryTransaction( payload=makePayload_output['payload']) def purchase(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, card_expiry=None, card_cvv=None, description=None): @@ -79,27 +78,27 @@ def makeSecondaryTransaction(self, payload,transactionID): self.payeezy = http_authorization.PayeezyHTTPAuthorize(payeezy.apikey,payeezy.apisecret,payeezy.token,payeezy.url,payeezy.tokenurl) return self.payeezy.makeCaptureVoidRefundPostCall(self.payload,self.transactionID) - def addAddress(self, payload, street=None, city=None, zip=None, state=None, country=None, email=None): - if street is None: - raise ValueError, 'Street address cannot be nil' - if city is None: - raise ValueError, 'City cannot be nil' - if zip is None: - raise ValueError, 'Zip code cannot be nil' - if type(zip) is int: - zip = str(zip) - if state is None: - raise ValueError, 'State cannot be nil' - if country is None: - raise ValueError, 'Country cannot be nil' - if email is None: - raise ValueError, 'Email cannot be nil' - - address = {"street": street, "city": city, "state_province": state, "zip_postal_code": zip, - "country": country, "email": email} - - payload["payload"]["billing_address"] = address - return payload + def addAddress(self, payload, street=None, city=None, zipcode=None, state=None, country=None, email=None): + if street is None: + raise ValueError, 'Street address cannot be nil' + if city is None: + raise ValueError, 'City cannot be nil' + if zipcode is None: + raise ValueError, 'Zip code cannot be nil' + if type(zipcode) is int: + zipcode = str(zipcode) + if state is None: + raise ValueError, 'State cannot be nil' + if country is None: + raise ValueError, 'Country cannot be nil' + if email is None: + raise ValueError, 'Email cannot be nil' + + address = {"street": street, "city": city, "state_province": state, "zip_postal_code": zipcode, + "country": country, "email": email} + + payload["payload"]["billing_address"] = address + return payload def makePayload(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, card_expiry=None, card_cvv=None, description=None, transactionType=None, transactionTag=None, transactionID=None): From a60dae70cefc0094b48e20d30e0cab695ff50f0f Mon Sep 17 00:00:00 2001 From: root Date: Wed, 11 Oct 2017 23:22:58 +0000 Subject: [PATCH 5/7] Adding the egg --- .../example/dist/payeezy-1.0-py2.7.egg | Bin 9602 -> 14526 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/payeezy_python/example/dist/payeezy-1.0-py2.7.egg b/payeezy_python/example/dist/payeezy-1.0-py2.7.egg index da0fb4309a947a791ac8c39f579facff8569755c..bbf890ca082cd40355bdd6b4c5f81f1f0fa7f3c6 100755 GIT binary patch delta 8780 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 b=snbyfCOs8h=PRJ3=Bp!VqL(> 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 Date: Sun, 15 Oct 2017 09:33:41 -0400 Subject: [PATCH 6/7] Making address addition non-breaking --- payeezy_python/example/payeezy/api_methods.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/payeezy_python/example/payeezy/api_methods.py b/payeezy_python/example/payeezy/api_methods.py index cdffd89..0e9ea9b 100644 --- a/payeezy_python/example/payeezy/api_methods.py +++ b/payeezy_python/example/payeezy/api_methods.py @@ -13,6 +13,21 @@ def __init__(self): return None def authorize(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, + card_expiry=None, card_cvv=None, description=None): + + makePayload_output = self.makePayload(amount=amount, + currency_code=currency_code, + card_type=card_type, + cardholder_name=cardholder_name, + card_number=card_number, + card_expiry=card_expiry, + card_cvv=card_cvv, + description=description, + transactionType='authorize') + + return self.makePrimaryTransaction( payload=makePayload_output['payload']) + + def authorizeWithAddress(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, card_expiry=None, card_cvv=None, description=None, street=None, city=None, state=None, zipcode=None, country=None, email=None): @@ -56,6 +71,21 @@ def capture(self, amount=None, currency_code=None, transactionTag=None, transact return self.makeSecondaryTransaction(payload=makePayload_output['payload'], transactionID=makePayload_output['transactionID']) + def captureWithAddress(self, amount=None, currency_code=None, transactionTag=None, transactionID=None, description=None, + street=None, city=None, state=None, zipcode=None, country=None, email=None): + + makePayload_output = self.makePayload(amount=amount, + currency_code=currency_code, + transactionTag=transactionTag, + transactionID=transactionID, + description=description, + transactionType='capture') + + makePayload_output = self.addAddress(makePayload_output, street, city, state, zipcode, country, email) + return self.makeSecondaryTransaction(payload=makePayload_output['payload'], transactionID=makePayload_output['transactionID']) + + + def void(self, payload ): self.payload = payload self.transactionType = "void" From d4850ce51090eaa9e0abafc2dfcb4857dad44647 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 15 Oct 2017 13:52:54 +0000 Subject: [PATCH 7/7] Added non-breaking endpoints instead: authorizeWithAddress and captureWithAddress --- .../lib.linux-x86_64-2.7/payeezy/__init__.py | 28 + .../payeezy/api_methods.py | 539 ++++++++++++++++++ .../payeezy/http_authorization.py | 107 ++++ .../example/dist/payeezy-1.0-py2.7.egg | Bin 14526 -> 14711 bytes 4 files changed, 674 insertions(+) create mode 100644 payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/__init__.py create mode 100644 payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/api_methods.py create mode 100644 payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/http_authorization.py diff --git a/payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/__init__.py b/payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/__init__.py new file mode 100644 index 0000000..f0fee76 --- /dev/null +++ b/payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/__init__.py @@ -0,0 +1,28 @@ +apikey = "" +apisecret = "" +token = "" +baseURL = "" +nonce = "" +timestamp = "" +tokenURL = "" # optional parameter for oken based transaction + +# Resource +import payeezy.http_authorization +from payeezy.api_methods import Payeezy + +transactions = Payeezy() + +import sys as _sys +from inspect import isclass as _isclass, ismodule as _ismodule + +_dogetattr = object.__getattribute__ +_ALLOWED_ATTRIBUTES = ( + 'apikey', + 'apisecret', + 'token', + 'baseURL', + 'nonce', + 'timestamp', + 'tokenURL' # optional parameter for oken based transaction +) +_original_module = _sys.modules[__name__] diff --git a/payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/api_methods.py b/payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/api_methods.py new file mode 100644 index 0000000..0e9ea9b --- /dev/null +++ b/payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/api_methods.py @@ -0,0 +1,539 @@ +##################################################################################################################################################### +# File Name : Security.py # +# Methods Type : Transactions - authorize, payment, capture, void, return | Merchants - boarding # +##################################################################################################################################################### +import os, sys +import payeezy # Standard system functions +import http_authorization +import json + +class Payeezy(object): + + def __init__(self): + return None + + def authorize(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, + card_expiry=None, card_cvv=None, description=None): + + makePayload_output = self.makePayload(amount=amount, + currency_code=currency_code, + card_type=card_type, + cardholder_name=cardholder_name, + card_number=card_number, + card_expiry=card_expiry, + card_cvv=card_cvv, + description=description, + transactionType='authorize') + + return self.makePrimaryTransaction( payload=makePayload_output['payload']) + + def authorizeWithAddress(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, + card_expiry=None, card_cvv=None, description=None, street=None, city=None, state=None, zipcode=None, + country=None, email=None): + + makePayload_output = self.makePayload(amount=amount, + currency_code=currency_code, + card_type=card_type, + cardholder_name=cardholder_name, + card_number=card_number, + card_expiry=card_expiry, + card_cvv=card_cvv, + description=description, + transactionType='authorize') + + makePayload_output = self.addAddress(makePayload_output, street, city, state, zipcode, country, email) + return self.makePrimaryTransaction( payload=makePayload_output['payload']) + + def purchase(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, card_expiry=None, card_cvv=None, description=None): + + makePayload_output = self.makePayload(amount=amount, + currency_code=currency_code, + card_type=card_type, + cardholder_name=cardholder_name, + card_number=card_number, + card_expiry=card_expiry, + card_cvv=card_cvv, + description=description, + transactionType='purchase') + + return self.makePrimaryTransaction( payload=makePayload_output['payload']) + + + + def capture(self, amount=None, currency_code=None, transactionTag=None, transactionID=None, description=None): + + makePayload_output = self.makePayload(amount=amount, + currency_code=currency_code, + transactionTag=transactionTag, + transactionID=transactionID, + description=description, + transactionType='capture') + + return self.makeSecondaryTransaction(payload=makePayload_output['payload'], transactionID=makePayload_output['transactionID']) + + def captureWithAddress(self, amount=None, currency_code=None, transactionTag=None, transactionID=None, description=None, + street=None, city=None, state=None, zipcode=None, country=None, email=None): + + makePayload_output = self.makePayload(amount=amount, + currency_code=currency_code, + transactionTag=transactionTag, + transactionID=transactionID, + description=description, + transactionType='capture') + + makePayload_output = self.addAddress(makePayload_output, street, city, state, zipcode, country, email) + return self.makeSecondaryTransaction(payload=makePayload_output['payload'], transactionID=makePayload_output['transactionID']) + + + + def void(self, payload ): + self.payload = payload + self.transactionType = "void" + return self.makeSecondaryTransaction(self.transactionType, self.payload); + + def refund(self, payload): + self.payload = payload + self.transactionType = "refund" + return self.makeSecondaryTransaction(self.transactionType, self.payload); + + + def makePrimaryTransaction(self, payload): + self.payload = payload + self.payeezy = http_authorization.PayeezyHTTPAuthorize(payeezy.apikey,payeezy.apisecret,payeezy.token,payeezy.url,payeezy.tokenurl) + return self.payeezy.makeCardBasedTransactionPostCall(self.payload) + + def makeSecondaryTransaction(self, payload,transactionID): + self.payload = payload + self.transactionID = transactionID + self.payeezy = http_authorization.PayeezyHTTPAuthorize(payeezy.apikey,payeezy.apisecret,payeezy.token,payeezy.url,payeezy.tokenurl) + return self.payeezy.makeCaptureVoidRefundPostCall(self.payload,self.transactionID) + + def addAddress(self, payload, street=None, city=None, zipcode=None, state=None, country=None, email=None): + if street is None: + raise ValueError, 'Street address cannot be nil' + if city is None: + raise ValueError, 'City cannot be nil' + if zipcode is None: + raise ValueError, 'Zip code cannot be nil' + if type(zipcode) is int: + zipcode = str(zipcode) + if state is None: + raise ValueError, 'State cannot be nil' + if country is None: + raise ValueError, 'Country cannot be nil' + if email is None: + raise ValueError, 'Email cannot be nil' + + address = {"street": street, "city": city, "state_province": state, "zip_postal_code": zipcode, + "country": country, "email": email} + + payload["payload"]["billing_address"] = address + return payload + + + def makePayload(self, amount=None, currency_code=None, card_type=None, cardholder_name=None, card_number=None, card_expiry=None, card_cvv=None, description=None, transactionType=None, transactionTag=None, transactionID=None): + + if amount is None: + raise ValueError, 'Amount cannot be nil' + + if type(amount) is int: + amount = str(amount) + + if currency_code is None: + raise ValueError, 'Currency code cannot be nil' + + if transactionType is None: + raise ValueError, 'Internal Script Error - Transaction Type is NIL' + + if currency_code.upper() != 'USD': + raise ValueError, 'currency code provided is not valid' + + if description is None: + description = transactionType+'transaction for amount: '+amount + + if (transactionType == ('authorize' or 'purchase')): + + if card_number is None: + raise ValueError, 'card number cannot be nil' + + if type(card_number) is int: + card_number = str(card_number) + + if cardholder_name is None: + cardholder_name = 'Not Provided' + + if card_cvv is None: + raise ValueError, 'cvv number cannot be nil' + + if type(card_cvv) is int: + card_cvv = str(card_cvv) + + if card_expiry is None: + raise ValueError, 'card expiration cannot be nil. It has to be in MMYY format' + + if type(card_expiry) is int: + card_expiry = str(card_expiry) + + payload = { "merchant_ref": description, "transaction_type": transactionType, "method": "credit_card", "amount": amount, "currency_code": currency_code.upper(), "credit_card": { "type": card_type, "cardholder_name": cardholder_name, "card_number": card_number, "exp_date": card_expiry, "cvv": card_cvv } } + + else: + + if transactionID is None: + raise ValueError, 'Transaction ID cannot be nil' + + if transactionTag is None: + raise ValueError, 'Transaction Tag cannot be nil' + + if type(transactionTag) is int: + transactionTag = str(transactionTag) + + payload = { "merchant_ref": description, "transaction_tag" : transactionTag, "transaction_type": transactionType, "method": "credit_card", "amount": amount, "currency_code": currency_code.upper() } + + return {'payload':payload,'transactionID':transactionID} + +########### TeleCheck Methods ####################### + +def teleCheckPurchaseVoid(self,transaction_type=None, amount=None, currency_code=None, merchant_ref=None, check_number=None, check_type=None, account_number=None, routing_number=None, + accountholder_name=None, customer_id_type=None,customer_id_number=None, client_email=None, gift_card_amount=None, vip=None, clerk_id=None, + device_id=None,release_type=None,registration_number=None,registration_date=None, date_of_birth=None ,street=None, city=None, state_province=None, zip_postal_code=None, country=None): + + makePayload_output = self.makePayload({ + "method":"tele_check", + "transaction_type":transaction_type, + "amount":amount, + "currency_code":currency_code, + "merchant_ref":merchant_ref, + "tele_check":{ + "check_number":check_number, + "check_type":check_type, + "account_number":account_number, + "routing_number":routing_number, + "accountholder_name":accountholder_name, + "customer_id_type":customer_id_type, + "customer_id_number":customer_id_number, + "client_email":client_email, + "gift_card_amount":gift_card_amount, + "vip":vip, + "clerk_id":clerk_id, + "device_id":device_id, + "release_type":release_type, + "registration_number":registration_number, + "registration_date":registration_date, + "date_of_birth":date_of_birth + }, + "billing_address":{ + "street":street, + "city":city, + "state_province":state_province, + "zip_postal_code":zip_postal_code, + "country":country + } + }) + return self.makePrimaryTransaction( payload=makePayload_output['payload']); + +def teleCheckTaggedVoid(self, payload): + self.payload = payload + self.transactionType = "void" + return self.makeSecondaryTransaction(self.transactionType, self.payload); + +def teleCheckTaggedRefund(self, payload): + self.payload = payload + self.transactionType = "refund" + return self.makeSecondaryTransaction(self.transactionType, self.payload); + + ########### ValueLink Methods - start ####################### + + +def valueLinkPurchaseReloadPartialPurchase(self, transaction_type=None, amount=None, currency_code=None, cardholder_name=None, cc_number=None ): + + makePayload_output = self.makePayload({"method":'value_link', + "transaction_type":transaction_type, + "amount":amount, + "currency_code":currency_code, + "valuelink":{ + "cardholder_name":cardholder_name, + "cc_number":cc_number, + "credit_card_type":'Gift' + }}) + return self.makePrimaryTransaction(payload=makePayload_output['payload']); + +def valueLinkActivation(self, amount=None, currency_code=None, cardholder_name=None, cc_number=None, card_cost=None ): + + makePayload_output = self.makePayload({"method":'value_link', + "transaction_type":'activation', + "amount":amount, + "currency_code":currency_code, + "valuelink":{ + "cardholder_name":cardholder_name, + "cc_number":cc_number, + "credit_card_type":'Gift', + "card_cost":card_cost + }}) + + return self.makePrimaryTransaction( payload=makePayload_output['payload']); + +def valueLinkCashOutDeactivationBalanceInquiry(self, currency_code=None, transaction_type=None, cardholder_name=None, cc_number=None, card_cost=None ): + + makePayload_output = self.makePayload({"method":'value_link', + "transaction_type":transaction_type, + "valuelink": + { + "cardholder_name":cardholder_name, + "cc_number":cc_number, + "credit_card_type":'Gift' + }}) + + return self.makePrimaryTransaction( payload=makePayload_output['payload']); + +def valueLinkVoid(self, payload): + self.payload = payload + self.transactionType = "void" + return self.makeSecondaryTransaction(self.transactionType, self.payload); + +def valueLinkRefund(self, payload): + self.payload = payload + self.transactionType = "refund" + return self.makeSecondaryTransaction(self.transactionType, self.payload); + +def valueLinkTaggedVoid(self, payload): + self.payload = payload + self.transactionType = "void" + return self.makeSecondaryTransaction(self.transactionType, self.payload); + +def valueLinkTaggedRefund(self, payload): + self.payload = payload + self.transactionType = "refund" + return self.makeSecondaryTransaction(self.transactionType, self.payload); + + ########### ValueLink Methods - end ####################### + + ########### German Direct Debit Methods - start ####################### + +def processPurchaseCreditTransactionWithAVSDirectDebit(self, method=None, transaction_type=None, amount=None, iban=None, mandate_ref=None, bic=None, billing_name=None, city=None, country=None, email=None, phone_type=None, phone_number=None, street=None, state_province=None, zip_postal_code=None ): + + makePayload_output = self.makePayload({ "method":'debit_card', + "transaction_type":transaction_type, + "amount":amount, + "currency_code":'EUR', + "debit_card": + { + "iban":iban, + "mandate_ref":mandate_ref, + "bic":bic + }, + "billing_address": { + "name":billing_name, + "city":city, + "country":country, + "email":email, + "phone": { + "type":phone_type, + "number":phone_number, + }, + "street":street, + "state_province":state_province, + "zip_postal_code":zip_postal_code + } + }) + return self.makePrimaryTransaction(payload=makePayload_output['payload']); + + +def processPurchaseCreditTransactionWithSoftDescDirectDebit(self, method=None, transaction_type=None, amount=None, iban=None, mandate_ref=None, bic=None, dba_name=None, street=None, region=None, mid=None, mcc=None , postal_code=None, country_code=None, merchant_contact_info=None ): + makePayload_output = self.makePayload({"method":'debit_card', + "transaction_type":transaction_type, + "amount":amount, + "currency_code":'EUR', + "debit_card":{ + "iban":iban, + "mandate_ref":mandate_ref, + "bic":bic }, + "soft_descriptors":{ + "dba_name":dba_name, + "street":street, + "region":region, + "mid":mid, + "mcc":mcc, + "postal_code":postal_code, + "country_code":country_code, + "merchant_contact_info":merchant_contact_info + } + }) + return self.makePrimaryTransaction(payload=makePayload_output['payload']); + +def processPurchaseCreditTransactionWithL2L3DirectDebit(self, method=None, transaction_type=None, amount=None, currency_code=None,iban=None, mandate_ref=None, bic=None, name=None, city=None, country=None, email=None, type=None, number=None, street=None, state_province=None, zip_postal_code=None): + + makePayload_output = self.makePayload({ + "method":'debit_card', + "transaction_type":'purchase', + "amount":amount, + "currency_code":'EUR', + "debit_card": { + "iban":iban, + "mandate_ref":mandate_ref, + "bic":bic + }, + "level2":{ + "tax1_amount":tax1_amount, + "tax1_number":tax1_number, + "tax2_amount":tax2_amount, + "tax2_number":tax2_number, + "customer_ref":customer_ref + }, + "level3":{ + "alt_tax_amount":alt_tax_amount, + "alt_tax_id":alt_tax_id, + "discount_amount":discount_amount, + "duty_amount":duty_amount, + "freight_amount":freight_amount, + "ship_from_zip":ship_from_zip, + "ship_to_address":{ + "city":city, + "state":state, + "zip":zip, + "country":country, + "email":email, + "name":name, + "phone":phone, + "address_1":address_1, + "customer_number":customer_number + }, + "line_items":[ + { + "description":description, + "quantity":quantity, + "commodity_code":commodity_code, + "discount_amount":discount_amount, + "discount_indicator":discount_indicator, + "gross_net_indicator":gross_net_indicator, + "line_item_total":line_item_total, + "product_code":product_code, + "tax_amount":tax_amount, + "tax_rate":tax_rate, + "tax_type":tax_type, + "unit_cost":unit_cost, + "unit_of_measure":unit_of_measure + } + ] + }}) + return self.makePrimaryTransaction( payload=makePayload_output['payload']) + + +########### German Direct Debit Methods - end ####################### + +########### Timeout Reversal for Credit Card Payments - start ####################### + +def processPurchaseCreditTransactionWithTimeoutReversal(self, method=None, transaction_type=None, amount=None, iban=None, mandate_ref=None, bic=None, billing_name=None, city=None, country=None, email=None, phone_type=None, phone_number=None, street=None, state_province=None, zip_postal_code=None ): + + makePayload_output = self.makePayload({ "amount": "100", + "transaction_type": "authorize", + "method": "credit_card", + "currency_code": "GBP", + "credit_card": { + "type": "visa", + "cardholder_name": "John Smith", + "card_number": "4035874000424977", + "exp_date": "1218" + }, + "billing_address": { + "city": "St. Louis", + "country": "US", + "email": "abc@main.com", + "phone": { + "type": "home", + "number": "212-515-1212" + }, + "street": "12115 LACKLAND", + "state_province": "MO", + "zip_postal_code": "63146 ", + }, + "reversal_id": "Re-txn-12341202" + }) + + + return self.makePrimaryTransaction(payload=makePayload_output['payload']); + +def processTimeoutReversal(self, method=None, transaction_type=None, amount=None, iban=None, mandate_ref=None, bic=None, billing_name=None, city=None, country=None, email=None, phone_type=None, phone_number=None, street=None, state_province=None, zip_postal_code=None ): + + makePayload_output = self.makePayload({ "amount": "100", + "transaction_type": "void", + "method": "credit_card", + "currency_code": "GBP", + "reversal_id": "Re-txn-123412B2" + }) + + + return self.makePrimaryTransaction(payload=makePayload_output['payload']); + +########### TimeoutReversal - end ####################### + +########### DCC/Dynamic Pricing Lookup - end ####################### +def processDCCLookup(self, bin=None, amount=None): + + makePayload_output = self.makePayload({ "rate_type":"card_rate", + "bin":"559552", + "amount":"100" + }) + + return self.makePrimaryTransaction(payload=makePayload_output['payload']); + +def processDynamicPricingLookup(self, bin=None, amount=None): + + makePayload_output = self.makePayload({ "rate_type":"merchant_rate", + "currency_code":"USD", + "amount":"100" + }) + + return self.makePrimaryTransaction(payload=makePayload_output['payload']); + +def processDCCPurchase(self, bin=None, amount=None): + + makePayload_output = self.makePayload({ + "amount": "100", + "transaction_type": "Purchase", + "method": "credit_card", + "currency_code": "GBP", + "credit_card": { + "type": "mastercard", + "cardholder_name": "John Smith", + "card_number": "4389800000000006", + "exp_date": "1215", + "cvv": "006" + }, + "rate_reference": { + "rate_id": "136752", + "dcc_accepted": "true" + } + }) + + return self.makePrimaryTransaction(payload=makePayload_output['payload']); + +########### DCC/Dynamic Pricing Lookup - end ####################### + +def getFDTokenPayload(self, FDtype = None, auth = None, ta_token = None, cardholder_name= None, card_number=None, card_expiry=None, card_cvv=None): + + if (transactionType == ('authorize' or 'purchase')): + + if card_number is None: + raise ValueError, 'card number cannot be nil' + + if type(card_number) is int: + card_number = str(card_number) + + if cardholder_name is None: + cardholder_name = 'Not Provided' + + if card_cvv is None: + raise ValueError, 'cvv number cannot be nil' + + if type(card_cvv) is int: + card_cvv = str(card_cvv) + + if card_expiry is None: + raise ValueError, 'card expiration cannot be nil. It has to be in MMYY format' + + if type(card_expiry) is int: + card_expiry = str(card_expiry) + + payload = { "type": "FDToken", "auth": "false", "ta_token": "NOIW" , "credit_card": { "type": card_type, "cardholder_name": cardholder_name, "card_number": card_number, "exp_date": card_expiry, "cvv": card_cvv } } + + return {'payload':payload,'transactionID':transactionID} diff --git a/payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/http_authorization.py b/payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/http_authorization.py new file mode 100644 index 0000000..2070e34 --- /dev/null +++ b/payeezy_python/example/build/lib.linux-x86_64-2.7/payeezy/http_authorization.py @@ -0,0 +1,107 @@ + + +##################################################################################################################################################### +# File Name : http_authorization.py # +# Description : Makes POST type rest calls setup for PayeezyHTTPAuthorize # +# Backend : SOA (Nature : Static //// ToDo: Dynamic) # +# Base URL : https://cattest-fdc.broker.soa.com (Extensions being used - /transactions, /merchants) # +# Methods Type : POST # +##################################################################################################################################################### +import os, sys # Standard system functions +import time # Get Timestamp +import socket # support functions for HTTPS connections - dependancy for HTTPAdapter +import ssl + + +try: + import base64 # Base 64 encoding/decoding lib +except Exception as BASE64LIB_Error: + raise BASE64_IMPORT_Error + +from base64 import b64encode + +try: + import json # Json Lib for data type conversions - REST Calls/Data output format +except Exception as JSONLIB_Error: + raise JSON_IMPORT_Error + +try: + import hashlib +except Exception as HASHLIB_Error: + raise HASHLIB_IMPORT_Error + +try: + import hmac # SHA1 encryption to accomodate the atmosphere varibles +except Exception as HMAC_Error: + raise HMAC_IMPORT_Error + + +try: + import requests # Apache2 Licensed HTTP library - has methods to make REST calls +except Exception as REQUESTSLIB_Error: + raise REQUESTSLIB_Error + +from requests.auth import HTTPBasicAuth +from requests.adapters import HTTPAdapter +from requests.packages.urllib3.poolmanager import PoolManager + +# TLSv1 protocol addition to HTTP adaptor for HTTPS calls +class MyAdapter(HTTPAdapter): + def init_poolmanager(self, connections, maxsize, block=False): + self.poolmanager = PoolManager(num_pools=connections, + maxsize=maxsize, + block=block, + ssl_version=ssl.PROTOCOL_TLSv1) + +# HTTP authorization, headers generations and generic method to preform transactions and boarding operations. + +class PayeezyHTTPAuthorize(object): + + # init function + def __init__(self, apiKey,apiSecret, token, url,tokenurl): + self.apikey = apiKey + self.apisecret = apiSecret + self.token = token + self.url = url + self.tokenurl = tokenurl + # cryptographically strong random number + self.nonce = str(int(os.urandom(16).encode('hex'),16)) + self.timestamp = str(int(round(time.time() * 1000))) + self.timeout = 30 # max timeout is 30 sec + + # HMAC Generation + def generateHMACAuthenticationHeader(self, payload): + messageData = self.apikey+self.nonce+self.timestamp+self.token+payload + hmacInHex = hmac.new(self.apisecret, msg=messageData, digestmod=hashlib.sha256).hexdigest() + return b64encode(hmacInHex) + + # method to make calls for getToken + def getTokenPostCall(self, payload): + response = requests.Session() + response.mount('https://', MyAdapter()) + self.payload = json.dumps(payload) + authorizationVal = self.generateHMACAuthenticationHeader(payload=self.payload) + result = response.post(self.tokenURL, headers={'User-Agent':'Payeezy-Python','content-type': 'application/json','apikey':self.apikey,'token':self.token,'Authorization':'xxxxx'}, data=self.payload) + return result + + #Generic method to make calls for primary transactions + def makeCardBasedTransactionPostCall(self, payload): + response = requests.Session() + response.mount('https://', MyAdapter()) + self.payload = json.dumps(payload) + authorizationVal = self.generateHMACAuthenticationHeader(payload=self.payload) + result = response.post(self.url, headers={'User-Agent':'Payeezy-Python','content-type': 'application/json','apikey':self.apikey,'token':self.token,'nonce':self.nonce,'timestamp':self.timestamp,'Authorization':authorizationVal}, data=self.payload) + return result + + + #Generic method to make calls for secondary transactions + def makeCaptureVoidRefundPostCall(self,payload,transactionID): + response = requests.Session() + response.mount('https://', MyAdapter()) + self.url = self.url + '/' + transactionID + self.payload = json.dumps(payload) + authorizationVal = self.generateHMACAuthenticationHeader(payload=self.payload) + result = response.post(self.url, headers={'User-Agent':'Payeezy-Python','content-type': 'application/json','apikey':self.apikey,'token':self.token,'nonce':self.nonce,'timestamp':self.timestamp,'Authorization':authorizationVal}, data=self.payload) + return result + + \ No newline at end of file diff --git a/payeezy_python/example/dist/payeezy-1.0-py2.7.egg b/payeezy_python/example/dist/payeezy-1.0-py2.7.egg index bbf890ca082cd40355bdd6b4c5f81f1f0fa7f3c6..00d388d4e3a94b1d421b88de86a362702ec5f5c5 100755 GIT binary patch delta 9034 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