diff --git a/securesubmit/infrastructure/enums.py b/securesubmit/infrastructure/enums.py index 7aca0a8..f060d9b 100644 --- a/securesubmit/infrastructure/enums.py +++ b/securesubmit/infrastructure/enums.py @@ -238,4 +238,4 @@ class PaymentDataSource(Enum): APPLE_PAY = 'ApplePay' def __str__(self): - return str(self.value) \ No newline at end of file + return str(self.value) diff --git a/securesubmit/services/__init__.py b/securesubmit/services/__init__.py index 62ad79b..7f28780 100644 --- a/securesubmit/services/__init__.py +++ b/securesubmit/services/__init__.py @@ -97,6 +97,7 @@ class HpsServicesConfig(_HpsConfigInterface): password = None developer_id = None site_trace = None + timeout = None def __init__(self): self.UAT_URL = 'https://api-uat.heartlandportico.com/paymentserver.v1/PosGatewayService.asmx?wsdl' diff --git a/securesubmit/services/gateway.py b/securesubmit/services/gateway.py index d927330..d6ab1db 100644 --- a/securesubmit/services/gateway.py +++ b/securesubmit/services/gateway.py @@ -145,7 +145,9 @@ def do_transaction(self, transaction, client_transaction_id=None): request_headers = {'Content-type': 'text/xml; charset=UTF-8', 'Content-length': str(len(xml))} - request = http.request('POST', self._url, headers=request_headers, body=xml) + + request = http.request('POST', self._url, headers=request_headers, body=xml, timeout=self._config.timeout) + raw_response = request.data if self._logging: print 'Response: ' + raw_response @@ -511,11 +513,12 @@ def do_request(self, verb, endpoint, data=None, additional_headers=None): if self._logging: print 'Request: ' + encoded_data - response = http.request(verb, url, headers=headers, body=encoded_data) + response = http.request(verb, url, headers=headers, body=encoded_data, timeout=self._config.timeout) else: if self._logging: print 'Request: ' + url - response = http.request(verb, url, headers=headers) + + response = http.request(verb, url, headers=headers, timeout=self._config.timeout) if self._logging: print 'Response: ' + response.data diff --git a/securesubmit/services/token.py b/securesubmit/services/token.py index 96042f8..7e25051 100644 --- a/securesubmit/services/token.py +++ b/securesubmit/services/token.py @@ -22,9 +22,11 @@ class HpsTokenService(object): _public_api_key = None _url = None + _timeout = None - def __init__(self, public_api_key): + def __init__(self, public_api_key, timeout=None): self._public_api_key = public_api_key + self._timeout = timeout if public_api_key is None or public_api_key == "": raise HpsArgumentException("publicAPIKey is None or Empty.") @@ -57,7 +59,11 @@ def _request_token(self, input_token): # headers=headers, # auth=(self._public_api_key, None)) - response = http.request('post', self._url, headers=headers, body=data) + response = None + if self._timeout is None: + response = http.request('post', self._url, headers=headers, body=data) + else: + response = http.request('post', self._url, headers=headers, body=data, timeout=self._timeout) token = HpsToken() if len(response.data) > 0: