Skip to content

Commit 9eccda3

Browse files
committed
add examples of adding lineItems; general cleanup for readability.
1 parent 8bd7955 commit 9eccda3

2 files changed

Lines changed: 214 additions & 126 deletions

File tree

PaymentTransactions/authorize-credit-card.py

Lines changed: 69 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
1-
import os, sys
1+
"""
2+
Authorize a credit card (without actually charging it)
3+
"""
4+
25
import imp
6+
import os
7+
import sys
38

49
from authorizenet import apicontractsv1
5-
from authorizenet.apicontrollers import *
6-
constants = imp.load_source('modulename', 'constants.py')
7-
from decimal import *
10+
from authorizenet.apicontrollers import createTransactionController
11+
12+
CONSTANTS = imp.load_source('modulename', 'constants.py')
13+
814

915
def authorize_credit_card(amount):
16+
"""
17+
Authorize a credit card (without actually charging it)
18+
"""
1019

1120
# Create a merchantAuthenticationType object with authentication details
1221
# retrieved from the constants file
1322
merchantAuth = apicontractsv1.merchantAuthenticationType()
14-
merchantAuth.name = constants.apiLoginId
15-
merchantAuth.transactionKey = constants.transactionKey
23+
merchantAuth.name = CONSTANTS.apiLoginId
24+
merchantAuth.transactionKey = CONSTANTS.transactionKey
1625

1726
# Create the payment data for a credit card
1827
creditCard = apicontractsv1.creditCardType()
@@ -53,6 +62,25 @@ def authorize_credit_card(amount):
5362
settings = apicontractsv1.ArrayOfSetting()
5463
settings.setting.append(duplicateWindowSetting)
5564

65+
# setup individual line items
66+
line_item_1 = apicontractsv1.lineItemType()
67+
line_item_1.itemId = "12345"
68+
line_item_1.name = "first"
69+
line_item_1.description = "Here's the first line item"
70+
line_item_1.quantity = "2"
71+
line_item_1.unitPrice = "12.95"
72+
line_item_2 = apicontractsv1.lineItemType()
73+
line_item_2.itemId = "67890"
74+
line_item_2.name = "second"
75+
line_item_2.description = "Here's the second line item"
76+
line_item_2.quantity = "3"
77+
line_item_2.unitPrice = "7.95"
78+
79+
# build the array of line items
80+
line_items = apicontractsv1.ArrayOfLineItem()
81+
line_items.lineItem.append(line_item_1)
82+
line_items.lineItem.append(line_item_2)
83+
5684
# Create a transactionRequestType object and add the previous objects to it.
5785
transactionrequest = apicontractsv1.transactionRequestType()
5886
transactionrequest.transactionType = "authOnlyTransaction"
@@ -62,14 +90,16 @@ def authorize_credit_card(amount):
6290
transactionrequest.billTo = customerAddress
6391
transactionrequest.customer = customerData
6492
transactionrequest.transactionSettings = settings
93+
transactionrequest.lineItems = line_items
6594

6695
# Assemble the complete transaction request
6796
createtransactionrequest = apicontractsv1.createTransactionRequest()
6897
createtransactionrequest.merchantAuthentication = merchantAuth
6998
createtransactionrequest.refId = "MerchantID-0001"
7099
createtransactionrequest.transactionRequest = transactionrequest
71100
# Create the controller
72-
createtransactioncontroller = createTransactionController(createtransactionrequest)
101+
createtransactioncontroller = createTransactionController(
102+
createtransactionrequest)
73103
createtransactioncontroller.execute()
74104

75105
response = createtransactioncontroller.getresponse()
@@ -79,29 +109,43 @@ def authorize_credit_card(amount):
79109
if response.messages.resultCode == "Ok":
80110
# Since the API request was successful, look for a transaction response
81111
# and parse it to display the results of authorizing the card
82-
if hasattr(response.transactionResponse, 'messages') == True:
83-
print ('Successfully created transaction with Transaction ID: %s' % response.transactionResponse.transId)
84-
print ('Transaction Response Code: %s' % response.transactionResponse.responseCode)
85-
print ('Message Code: %s' % response.transactionResponse.messages.message[0].code)
86-
print ('Description: %s' % response.transactionResponse.messages.message[0].description)
112+
if hasattr(response.transactionResponse, 'messages') is True:
113+
print(
114+
'Successfully created transaction with Transaction ID: %s'
115+
% response.transactionResponse.transId)
116+
print('Transaction Response Code: %s' %
117+
response.transactionResponse.responseCode)
118+
print('Message Code: %s' %
119+
response.transactionResponse.messages.message[0].code)
120+
print('Description: %s' % response.transactionResponse.
121+
messages.message[0].description)
87122
else:
88-
print ('Failed Transaction.')
89-
if hasattr(response.transactionResponse, 'errors') == True:
90-
print ('Error Code: %s' % str(response.transactionResponse.errors.error[0].errorCode))
91-
print ('Error message: %s' % response.transactionResponse.errors.error[0].errorText)
123+
print('Failed Transaction.')
124+
if hasattr(response.transactionResponse, 'errors') is True:
125+
print('Error Code: %s' % str(response.transactionResponse.
126+
errors.error[0].errorCode))
127+
print(
128+
'Error message: %s' %
129+
response.transactionResponse.errors.error[0].errorText)
92130
# Or, print errors if the API request wasn't successful
93131
else:
94-
print ('Failed Transaction.')
95-
if hasattr(response, 'transactionResponse') == True and hasattr(response.transactionResponse, 'errors') == True:
96-
print ('Error Code: %s' % str(response.transactionResponse.errors.error[0].errorCode))
97-
print ('Error message: %s' % response.transactionResponse.errors.error[0].errorText)
132+
print('Failed Transaction.')
133+
if hasattr(response, 'transactionResponse') is True and hasattr(
134+
response.transactionResponse, 'errors') is True:
135+
print('Error Code: %s' % str(
136+
response.transactionResponse.errors.error[0].errorCode))
137+
print('Error message: %s' %
138+
response.transactionResponse.errors.error[0].errorText)
98139
else:
99-
print ('Error Code: %s' % response.messages.message[0]['code'].text)
100-
print ('Error message: %s' % response.messages.message[0]['text'].text)
140+
print('Error Code: %s' %
141+
response.messages.message[0]['code'].text)
142+
print('Error message: %s' %
143+
response.messages.message[0]['text'].text)
101144
else:
102-
print ('Null Response.')
145+
print('Null Response.')
103146

104147
return response
105148

106-
if(os.path.basename(__file__) == os.path.basename(sys.argv[0])):
107-
authorize_credit_card(constants.amount)
149+
150+
if (os.path.basename(__file__) == os.path.basename(sys.argv[0])):
151+
authorize_credit_card(CONSTANTS.amount)
Lines changed: 145 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,107 +1,151 @@
1-
import os, sys
1+
"""
2+
Charge a credit card
3+
"""
4+
25
import imp
6+
import os
7+
import sys
38

49
from authorizenet import apicontractsv1
5-
from authorizenet.apicontrollers import *
6-
constants = imp.load_source('modulename', 'constants.py')
7-
from decimal import *
10+
from authorizenet.apicontrollers import createTransactionController
11+
12+
CONSTANTS = imp.load_source('modulename', 'constants.py')
13+
814

915
def charge_credit_card(amount):
16+
"""
17+
Charge a credit card
18+
"""
19+
20+
# Create a merchantAuthenticationType object with authentication details
21+
# retrieved from the constants file
22+
merchantAuth = apicontractsv1.merchantAuthenticationType()
23+
merchantAuth.name = CONSTANTS.apiLoginId
24+
merchantAuth.transactionKey = CONSTANTS.transactionKey
25+
26+
# Create the payment data for a credit card
27+
creditCard = apicontractsv1.creditCardType()
28+
creditCard.cardNumber = "4111111111111111"
29+
creditCard.expirationDate = "2020-12"
30+
creditCard.cardCode = "123"
31+
32+
# Add the payment data to a paymentType object
33+
payment = apicontractsv1.paymentType()
34+
payment.creditCard = creditCard
35+
36+
# Create order information
37+
order = apicontractsv1.orderType()
38+
order.invoiceNumber = "10101"
39+
order.description = "Golf Shirts"
40+
41+
# Set the customer's Bill To address
42+
customerAddress = apicontractsv1.customerAddressType()
43+
customerAddress.firstName = "Ellen"
44+
customerAddress.lastName = "Johnson"
45+
customerAddress.company = "Souveniropolis"
46+
customerAddress.address = "14 Main Street"
47+
customerAddress.city = "Pecan Springs"
48+
customerAddress.state = "TX"
49+
customerAddress.zip = "44628"
50+
customerAddress.country = "USA"
51+
52+
# Set the customer's identifying information
53+
customerData = apicontractsv1.customerDataType()
54+
customerData.type = "individual"
55+
customerData.id = "99999456654"
56+
customerData.email = "[email protected]"
57+
58+
# Add values for transaction settings
59+
duplicateWindowSetting = apicontractsv1.settingType()
60+
duplicateWindowSetting.settingName = "duplicateWindow"
61+
duplicateWindowSetting.settingValue = "600"
62+
settings = apicontractsv1.ArrayOfSetting()
63+
settings.setting.append(duplicateWindowSetting)
64+
65+
# setup individual line items
66+
line_item_1 = apicontractsv1.lineItemType()
67+
line_item_1.itemId = "12345"
68+
line_item_1.name = "first"
69+
line_item_1.description = "Here's the first line item"
70+
line_item_1.quantity = "2"
71+
line_item_1.unitPrice = "12.95"
72+
line_item_2 = apicontractsv1.lineItemType()
73+
line_item_2.itemId = "67890"
74+
line_item_2.name = "second"
75+
line_item_2.description = "Here's the second line item"
76+
line_item_2.quantity = "3"
77+
line_item_2.unitPrice = "7.95"
78+
79+
# build the array of line items
80+
line_items = apicontractsv1.ArrayOfLineItem()
81+
line_items.lineItem.append(line_item_1)
82+
line_items.lineItem.append(line_item_2)
83+
84+
# Create a transactionRequestType object and add the previous objects to it.
85+
transactionrequest = apicontractsv1.transactionRequestType()
86+
transactionrequest.transactionType = "authCaptureTransaction"
87+
transactionrequest.amount = amount
88+
transactionrequest.payment = payment
89+
transactionrequest.order = order
90+
transactionrequest.billTo = customerAddress
91+
transactionrequest.customer = customerData
92+
transactionrequest.transactionSettings = settings
93+
transactionrequest.lineItems = line_items
94+
95+
# Assemble the complete transaction request
96+
createtransactionrequest = apicontractsv1.createTransactionRequest()
97+
createtransactionrequest.merchantAuthentication = merchantAuth
98+
createtransactionrequest.refId = "MerchantID-0001"
99+
createtransactionrequest.transactionRequest = transactionrequest
100+
# Create the controller
101+
createtransactioncontroller = createTransactionController(
102+
createtransactionrequest)
103+
createtransactioncontroller.execute()
104+
105+
response = createtransactioncontroller.getresponse()
106+
107+
if response is not None:
108+
# Check to see if the API request was successfully received and acted upon
109+
if response.messages.resultCode == "Ok":
110+
# Since the API request was successful, look for a transaction response
111+
# and parse it to display the results of authorizing the card
112+
if hasattr(response.transactionResponse, 'messages') is True:
113+
print(
114+
'Successfully created transaction with Transaction ID: %s'
115+
% response.transactionResponse.transId)
116+
print('Transaction Response Code: %s' %
117+
response.transactionResponse.responseCode)
118+
print('Message Code: %s' %
119+
response.transactionResponse.messages.message[0].code)
120+
print('Description: %s' % response.transactionResponse.
121+
messages.message[0].description)
122+
else:
123+
print('Failed Transaction.')
124+
if hasattr(response.transactionResponse, 'errors') is True:
125+
print('Error Code: %s' % str(response.transactionResponse.
126+
errors.error[0].errorCode))
127+
print(
128+
'Error message: %s' %
129+
response.transactionResponse.errors.error[0].errorText)
130+
# Or, print errors if the API request wasn't successful
131+
else:
132+
print('Failed Transaction.')
133+
if hasattr(response, 'transactionResponse') is True and hasattr(
134+
response.transactionResponse, 'errors') is True:
135+
print('Error Code: %s' % str(
136+
response.transactionResponse.errors.error[0].errorCode))
137+
print('Error message: %s' %
138+
response.transactionResponse.errors.error[0].errorText)
139+
else:
140+
print('Error Code: %s' %
141+
response.messages.message[0]['code'].text)
142+
print('Error message: %s' %
143+
response.messages.message[0]['text'].text)
144+
else:
145+
print('Null Response.')
146+
147+
return response
148+
10149

11-
# Create a merchantAuthenticationType object with authentication details
12-
# retrieved from the constants file
13-
merchantAuth = apicontractsv1.merchantAuthenticationType()
14-
merchantAuth.name = constants.apiLoginId
15-
merchantAuth.transactionKey = constants.transactionKey
16-
17-
# Create the payment data for a credit card
18-
creditCard = apicontractsv1.creditCardType()
19-
creditCard.cardNumber = "4111111111111111"
20-
creditCard.expirationDate = "2020-12"
21-
creditCard.cardCode = "123"
22-
23-
# Add the payment data to a paymentType object
24-
payment = apicontractsv1.paymentType()
25-
payment.creditCard = creditCard
26-
27-
# Create order information
28-
order = apicontractsv1.orderType()
29-
order.invoiceNumber = "10101"
30-
order.description = "Golf Shirts"
31-
32-
# Set the customer's Bill To address
33-
customerAddress = apicontractsv1.customerAddressType()
34-
customerAddress.firstName = "Ellen"
35-
customerAddress.lastName = "Johnson"
36-
customerAddress.company = "Souveniropolis"
37-
customerAddress.address = "14 Main Street"
38-
customerAddress.city = "Pecan Springs"
39-
customerAddress.state = "TX"
40-
customerAddress.zip = "44628"
41-
customerAddress.country = "USA"
42-
43-
# Set the customer's identifying information
44-
customerData = apicontractsv1.customerDataType()
45-
customerData.type = "individual"
46-
customerData.id = "99999456654"
47-
customerData.email = "[email protected]"
48-
49-
# Add values for transaction settings
50-
duplicateWindowSetting = apicontractsv1.settingType();
51-
duplicateWindowSetting.settingName = "duplicateWindow"
52-
duplicateWindowSetting.settingValue = "600"
53-
settings = apicontractsv1.ArrayOfSetting()
54-
settings.setting.append(duplicateWindowSetting)
55-
56-
# Create a transactionRequestType object and add the previous objects to it.
57-
transactionrequest = apicontractsv1.transactionRequestType()
58-
transactionrequest.transactionType = "authCaptureTransaction"
59-
transactionrequest.amount = amount
60-
transactionrequest.payment = payment
61-
transactionrequest.order = order
62-
transactionrequest.billTo = customerAddress
63-
transactionrequest.customer = customerData
64-
transactionrequest.transactionSettings = settings
65-
66-
# Assemble the complete transaction request
67-
createtransactionrequest = apicontractsv1.createTransactionRequest()
68-
createtransactionrequest.merchantAuthentication = merchantAuth
69-
createtransactionrequest.refId = "MerchantID-0001"
70-
createtransactionrequest.transactionRequest = transactionrequest
71-
# Create the controller
72-
createtransactioncontroller = createTransactionController(createtransactionrequest)
73-
createtransactioncontroller.execute()
74-
75-
response = createtransactioncontroller.getresponse()
76-
77-
if response is not None:
78-
# Check to see if the API request was successfully received and acted upon
79-
if response.messages.resultCode == "Ok":
80-
# Since the API request was successful, look for a transaction response
81-
# and parse it to display the results of authorizing the card
82-
if hasattr(response.transactionResponse, 'messages') == True:
83-
print ('Successfully created transaction with Transaction ID: %s' % response.transactionResponse.transId);
84-
print ('Transaction Response Code: %s' % response.transactionResponse.responseCode);
85-
print ('Message Code: %s' % response.transactionResponse.messages.message[0].code);
86-
print ('Description: %s' % response.transactionResponse.messages.message[0].description);
87-
else:
88-
print ('Failed Transaction.');
89-
if hasattr(response.transactionResponse, 'errors') == True:
90-
print ('Error Code: %s' % str(response.transactionResponse.errors.error[0].errorCode));
91-
print ('Error message: %s' % response.transactionResponse.errors.error[0].errorText);
92-
# Or, print errors if the API request wasn't successful
93-
else:
94-
print ('Failed Transaction.');
95-
if hasattr(response, 'transactionResponse') == True and hasattr(response.transactionResponse, 'errors') == True:
96-
print ('Error Code: %s' % str(response.transactionResponse.errors.error[0].errorCode));
97-
print ('Error message: %s' % response.transactionResponse.errors.error[0].errorText);
98-
else:
99-
print ('Error Code: %s' % response.messages.message[0]['code'].text);
100-
print ('Error message: %s' % response.messages.message[0]['text'].text);
101-
else:
102-
print ('Null Response.');
103-
104-
return response
105-
106-
if(os.path.basename(__file__) == os.path.basename(sys.argv[0])):
107-
charge_credit_card(constants.amount)
150+
if (os.path.basename(__file__) == os.path.basename(sys.argv[0])):
151+
charge_credit_card(CONSTANTS.amount)

0 commit comments

Comments
 (0)