Skip to content

Commit 6399d96

Browse files
Support v2 API.
1 parent 9960389 commit 6399d96

File tree

6 files changed

+62
-40
lines changed

6 files changed

+62
-40
lines changed

example.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"""
5555
get_transaction_variables = {
5656
'id': '20180705-WISXW2',
57-
'id_type': 'FraudLabsPro::FLP_ID'
57+
# 'id_type': 'FraudLabsPro::FLP_ID' # No longer supported in v2
5858
}
5959
print(fraud_validation.get_transaction(get_transaction_variables))
6060

fraudlabspro/fraudvalidation.py

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ def validate(self, dictionary):
234234
'ip': ipaddr,
235235
'format': 'json',
236236
'source': 'sdk-python',
237-
'source_version': '2.0.1',
237+
'source_version': '3.0.0',
238238
'flp_check_sum': flp_check_sum,
239239
# order information
240240
'user_order_id': user_order_id,
@@ -269,13 +269,17 @@ def validate(self, dictionary):
269269
'ship_zip_code': ship_zip_code,
270270
'ship_country': ship_country,
271271
}
272-
url = 'https://api.fraudlabspro.com/v1/order/screen'
272+
url = 'https://api.fraudlabspro.com/v2/order/screen'
273273
data = urllib.parse.urlencode(validate_variable_list)
274274
data = data.encode('utf-8')
275-
request = urllib.request.Request(url, data)
276-
with urllib.request.urlopen(request) as response:
277-
string = response.read().decode('utf-8')
278-
json_obj = json.loads(string)
275+
try:
276+
request = urllib.request.Request(url, data)
277+
with urllib.request.urlopen(request) as response:
278+
string = response.read().decode('utf-8')
279+
json_obj = json.loads(string)
280+
except urllib.error.HTTPError as httpError:
281+
error = httpError.read().decode()
282+
json_obj = json.loads(error)
279283
result = json.dumps(json_obj, indent=4)
280284
if result is None:
281285
return False
@@ -305,18 +309,23 @@ def feedback(self, feedback_variables):
305309
notes = ''
306310
feedback_variables_list = {
307311
'key': self.apikey,
312+
'source_version': '3.0.0',
308313
'format': 'json',
309314
'id': transaction_id,
310315
'action': action,
311316
'notes': notes,
312317
}
313-
url = 'https://api.fraudlabspro.com/v1/order/feedback'
318+
url = 'https://api.fraudlabspro.com/v2/order/feedback'
314319
data = urllib.parse.urlencode(feedback_variables_list)
315320
data = data.encode('utf-8')
316-
request = urllib.request.Request(url, data)
317-
with urllib.request.urlopen(request) as response:
318-
string = response.read().decode('utf-8')
319-
json_obj = json.loads(string)
321+
try:
322+
request = urllib.request.Request(url, data)
323+
with urllib.request.urlopen(request) as response:
324+
string = response.read().decode('utf-8')
325+
json_obj = json.loads(string)
326+
except urllib.error.HTTPError as httpError:
327+
error = httpError.read().decode()
328+
json_obj = json.loads(error)
320329
result = json.dumps(json_obj, indent=4)
321330
if result is None:
322331
return False
@@ -336,22 +345,26 @@ def get_transaction(self, get_transaction_variables):
336345
fraud_labs_pro_id = get_transaction_variables['id']
337346
else:
338347
return "Your ID is empty!"
339-
if 'id_type' in get_transaction_variables:
340-
id_type = get_transaction_variables['id_type']
341-
else:
342-
return "Your ID type is empty!"
348+
# if 'id_type' in get_transaction_variables: # No longer supported in v2 API
349+
# id_type = get_transaction_variables['id_type']
350+
# else:
351+
# return "Your ID type is empty!"
343352
get_transaction_variable_list = {
344353
'key': self.apikey,
345354
'format': 'json',
346355
'id': fraud_labs_pro_id,
347356
'id_type': id_type,
348357
}
349-
url = 'https://api.fraudlabspro.com/v1/order/result'
358+
url = 'https://api.fraudlabspro.com/v2/order/result'
350359
url_values = urllib.parse.urlencode(get_transaction_variable_list)
351360
full_url = url + '?' + url_values
352-
data = urllib.request.urlopen(full_url)
353-
string = data.read().decode('utf-8')
354-
json_obj = json.loads(string)
361+
try:
362+
data = urllib.request.urlopen(full_url)
363+
string = data.read().decode('utf-8')
364+
json_obj = json.loads(string)
365+
except urllib.error.HTTPError as httpError:
366+
error = httpError.read().decode()
367+
json_obj = json.loads(error)
355368
result = json.dumps(json_obj, indent=4)
356369
if result is None:
357370
return False

fraudlabspro/smsverification.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,25 @@ def send_sms(self, send_sms_variables):
5050
send_sms_variables_list = {
5151
'key': self.apikey,
5252
'source': 'sdk-python',
53-
'source_version': '2.0.1',
53+
'source_version': '3.0.0',
5454
'format': 'json',
5555
'tel': tel_no,
5656
'country_code': country_code,
5757
'mesg': message,
5858
'otp_timeout': otp_timeout,
5959
}
60-
url = 'https://api.fraudlabspro.com/v1/verification/send'
60+
url = 'https://api.fraudlabspro.com/v2/verification/send'
6161
data = urllib.parse.urlencode(send_sms_variables_list)
6262
data = data.encode('utf-8')
63+
try:
64+
request = urllib.request.Request(url, data)
65+
with urllib.request.urlopen(request) as response:
66+
string = response.read().decode('utf-8')
67+
json_obj = json.loads(string)
68+
except urllib.error.HTTPError as httpError:
69+
error = httpError.read().decode()
70+
json_obj = json.loads(error)
6371
request = urllib.request.Request(url, data)
64-
with urllib.request.urlopen(request) as response:
65-
string = response.read().decode('utf-8')
66-
json_obj = json.loads(string)
6772
result = json.dumps(json_obj, indent=4)
6873
return(result)
6974

@@ -92,11 +97,15 @@ def verify_sms(self, verify_sms_variables):
9297
'tran_id': transaction_id,
9398
'otp': otp,
9499
}
95-
url = 'https://api.fraudlabspro.com/v1/verification/result'
100+
url = 'https://api.fraudlabspro.com/v2/verification/result'
96101
url_values = urllib.parse.urlencode(verify_sms_variables_list)
97102
full_url = url + '?' + url_values
98-
data = urllib.request.urlopen(full_url)
99-
string = data.read().decode('utf-8')
100-
json_obj = json.loads(string)
103+
try:
104+
data = urllib.request.urlopen(full_url)
105+
string = data.read().decode('utf-8')
106+
json_obj = json.loads(string)
107+
except urllib.error.HTTPError as httpError:
108+
error = httpError.read().decode()
109+
json_obj = json.loads(error)
101110
result = json.dumps(json_obj, indent=4)
102111
return(result)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setuptools.setup(
77
name="fraudlabspro-python",
8-
version="2.0.1",
8+
version="3.0.0",
99
author="FraudLabs Pro",
1010
author_email="support@fraudlabspro.com",
1111
description="A Python module enables user to easily implement fraud detection feature into their solution using the API from https://www.fraudlabspro.com.",

tests/test_fraudvalidation.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def testinvalidapikey(global_data):
1515
'ip': '8.8.8.8',
1616
}
1717
result = json.loads(fraud_validation.validate(order_details_variables))
18-
assert result['fraudlabspro_message'] == 'INVALID API KEY'
18+
assert result['error']['error_message'] == 'INVALID API KEY'
1919

2020
def testapikeyexist(global_data, capsys):
2121
if (global_data["apikey"] == 'YOUR_API_KEY'):
@@ -46,7 +46,7 @@ def testvalidateorder(global_data):
4646
}
4747
result = json.loads(fraud_validation.validate(order_details_variables))
4848
if (global_data["apikey"] == 'YOUR_API_KEY'):
49-
assert result['fraudlabspro_id'] == "NA"
49+
assert result['error']['error_message'] == "INVALID API KEY"
5050
else:
5151
assert result['ip_country'] == "US"
5252

@@ -55,10 +55,10 @@ def testgettransaction(global_data):
5555
get_transaction_variables = {
5656
# 'key': global_data["apikey"],
5757
'id': '20170906MXFHSTRF',
58-
'id_type': 'FraudLabsPro::FLP_ID'
58+
# 'id_type': 'FraudLabsPro::FLP_ID' # No longer supported in v2
5959
}
6060
result = json.loads(fraud_validation.get_transaction(get_transaction_variables))
61-
assert result['fraudlabspro_id'] == 'NA'
61+
assert result['error']['error_message'] == 'TRANSACTION NOT FOUND'
6262

6363
def testfeedback(global_data):
6464
fraud_validation = FraudValidation(global_data["apikey"])
@@ -70,6 +70,6 @@ def testfeedback(global_data):
7070
}
7171
result = json.loads(fraud_validation.feedback(feedback_variables))
7272
if (global_data["apikey"] == 'YOUR_API_KEY'):
73-
assert result['fraudlabspro_message'] == "INVALID API KEY"
73+
assert result['error']['error_message'] == "INVALID API KEY"
7474
else:
75-
assert result['fraudlabspro_message'] == "INVALID TRANSACTION ID"
75+
assert result['error']['error_message'] == "INVALID TRANSACTION ID"

tests/test_smsverification.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ def testsendsms(global_data):
1616
}
1717
result = json.loads(sms_validation.send_sms(sms_verification_variables))
1818
if (global_data["apikey"] == 'YOUR_API_KEY'):
19-
assert result['error'] == "API key not found."
19+
assert result['error']['error_message'] == "INVALID API KEY"
2020
else:
21-
assert result['error'] == "Invalid phone number."
21+
assert result['error']['error_message'] == "INVALID PHONE NUMBER"
2222

2323

2424
def testverifysms(global_data):
@@ -30,9 +30,9 @@ def testverifysms(global_data):
3030
}
3131
result = json.loads(sms_validation.verify_sms(verify_sms_variables))
3232
if (global_data["apikey"] == 'YOUR_API_KEY'):
33-
assert result['error'] == "API key not found."
33+
assert result['error']['error_message'] == "INVALID API KEY"
3434
else:
35-
assert result['error'] == "Invalid OTP."
35+
assert result['error']['error_message'] == "INVALID OTP"
3636

3737
def testfunctionexist():
3838
sms_validation = SMSVerification(global_data["apikey"])

0 commit comments

Comments
 (0)