def subscription_payment(self, subscription): """ subscription: Type: OrderItem Creates a subscription for a user. Subscriptions can be monthy or yearly.objects.all() """ # Setting subscription details self.transaction_type = apicontractsv1.ARBSubscriptionType() self.transaction_type.name = subscription.offer.name self.transaction_type.paymentSchedule = self.create_payment_scheduale_interval_type( subscription, subscription.offer.terms) self.transaction_type.amount = self.to_valid_decimal( subscription.total) self.transaction_type.trialAmount = Decimal('0.00') self.transaction_type.billTo = self.create_billing_address( apicontractsv1.nameAndAddressType()) self.transaction_type.payment = self.create_authorize_payment() # Optional to add Order information. self.transaction_type.order = self.create_order_type() # Creating the request self.transaction = apicontractsv1.ARBCreateSubscriptionRequest() self.transaction.merchantAuthentication = self.merchant_auth self.transaction.subscription = self.transaction_type # Creating and executing the controller self.controller = ARBCreateSubscriptionController(self.transaction) self.set_controller_api_endpoint() self.controller.execute() # Getting the response response = self.controller.getresponse() self.check_subscription_response(response) self.save_payment_subscription()
def update_subscription_payment(self, subscription_id): self.transaction_type = apicontractsv1.ARBSubscriptionType() self.transaction_type.payment = self.create_authorize_payment() self.transaction = apicontractsv1.ARBUpdateSubscriptionRequest() self.transaction.merchantAuthentication = self.merchant_auth self.transaction.subscriptionId = subscriptionId self.transaction.subscription = self.transaction_type self.controller = ARBUpdateSubscriptionController(self.transaction) self.controller.execute() response = self.controller.getresponse() if (response.messages.resultCode == "Ok"): print("SUCCESS") print("Message Code : %s" % response.messages.message[0]['code'].text) print("Message text : %s" % response.messages.message[0]['text'].text) else: print("ERROR") print("Message Code : %s" % response.messages.message[0]['code'].text) print("Message text : %s" % response.messages.message[0]['text'].text) return response
def setUp(self): utility.helper.setpropertyfile('anet_python_sdk_properties.ini') self.amount = str(round(random.random() * 100, 2)) self.merchantAuthentication = apicontractsv1.merchantAuthenticationType( ) self.merchantAuthentication.name = utility.helper.getproperty( 'api.login.id') self.merchantAuthentication.transactionKey = utility.helper.getproperty( 'transaction.key') self.ref_id = 'Sample' self.dateOne = datetime.date(2020, 8, 30) self.interval = CTD_ANON() self.interval.length = 1 self.interval.unit = 'months' self.paymentScheduleOne = apicontractsv1.paymentScheduleType() self.paymentScheduleOne.interval = self.interval self.paymentScheduleOne.startDate = self.dateOne self.paymentScheduleOne.totalOccurrences = 12 self.paymentScheduleOne.trialOccurrences = 1 self.creditCardOne = apicontractsv1.creditCardType() self.creditCardOne.cardNumber = "4111111111111111" self.creditCardOne.expirationDate = "2020-12" self.payment = apicontractsv1.paymentType() self.payment.creditCard = self.creditCardOne self.customerOne = apicontractsv1.nameAndAddressType() self.customerOne.firstName = "John" self.customerOne.lastName = "Smith" self.customerData = apicontractsv1.customerDataType() self.customerData.id = "99999456654" self.subscriptionOne = apicontractsv1.ARBSubscriptionType() self.subscriptionOne.paymentSchedule = self.paymentScheduleOne self.subscriptionOne.amount = Decimal( str(round(random.random() * 100, 2))) self.subscriptionOne.trialAmount = Decimal('0.03') self.subscriptionOne.payment = self.payment self.subscriptionOne.billTo = self.customerOne self.order = apicontractsv1.orderType() self.order.invoiceNumber = "INV-21345" self.order.description = "Product description" self.billTo = apicontractsv1.customerAddressType() self.billTo.firstName = "Ellen" self.billTo.lastName = "Johnson" self.billTo.company = "Souveniropolis" self.billTo.address = "14 Main St" self.billTo.city = "Seattle" self.billTo.state = "WA" self.billTo.zip = "98122" self.billTo.country = "USA"
def create_subscription(amount, days): # Setting the merchant details merchantAuth = apicontractsv1.merchantAuthenticationType() merchantAuth.name = constants.apiLoginId merchantAuth.transactionKey = constants.transactionKey # Setting payment schedule paymentschedule = apicontractsv1.paymentScheduleType() paymentschedule.interval = apicontractsv1.paymentScheduleTypeInterval( ) #apicontractsv1.CTD_ANON() #modified by krgupta paymentschedule.interval.length = days paymentschedule.interval.unit = apicontractsv1.ARBSubscriptionUnitEnum.days paymentschedule.startDate = datetime(2021, 12, 30) paymentschedule.totalOccurrences = 12 paymentschedule.trialOccurrences = 1 # Giving the credit card info creditcard = apicontractsv1.creditCardType() creditcard.cardNumber = "4111111111111111" creditcard.expirationDate = "2035-12" payment = apicontractsv1.paymentType() payment.creditCard = creditcard # Setting billing information billto = apicontractsv1.nameAndAddressType() billto.firstName = "John" billto.lastName = "Smith" # Setting subscription details subscription = apicontractsv1.ARBSubscriptionType() subscription.name = "Sample Subscription" subscription.paymentSchedule = paymentschedule subscription.amount = amount subscription.trialAmount = Decimal('0.00') subscription.billTo = billto subscription.payment = payment # Creating the request request = apicontractsv1.ARBCreateSubscriptionRequest() request.merchantAuthentication = merchantAuth request.subscription = subscription # Creating and executing the controller controller = ARBCreateSubscriptionController(request) controller.execute() # Getting the response response = controller.getresponse() if (response.messages.resultCode == "Ok"): print("SUCCESS:") print("Message Code : %s" % response.messages.message[0]['code'].text) print("Message text : %s" % str(response.messages.message[0]['text'].text)) print("Subscription ID : %s" % response.subscriptionId) else: print("ERROR:") print("Message Code : %s" % response.messages.message[0]['code'].text) print("Message text : %s" % response.messages.message[0]['text'].text) return response
def create_subscription_from_customer_profile(amount, days, profileId, paymentProfileId, customerAddressId): # Setting the merchant details merchantAuth = apicontractsv1.merchantAuthenticationType() merchantAuth.name = constants.apiLoginId merchantAuth.transactionKey = constants.transactionKey # Setting payment schedule paymentschedule = apicontractsv1.paymentScheduleType() paymentschedule.interval = apicontractsv1.paymentScheduleTypeInterval( ) #apicontractsv1.CTD_ANON() #modified by krgupta paymentschedule.interval.length = days paymentschedule.interval.unit = apicontractsv1.ARBSubscriptionUnitEnum.days paymentschedule.startDate = datetime(2021, 12, 30) paymentschedule.totalOccurrences = 12 paymentschedule.trialOccurrences = 1 #setting the customer profile details profile = apicontractsv1.customerProfileIdType() profile.customerProfileId = profileId profile.customerPaymentProfileId = paymentProfileId profile.customerAddressId = customerAddressId # Setting subscription details subscription = apicontractsv1.ARBSubscriptionType() subscription.name = "Sample Subscription" subscription.paymentSchedule = paymentschedule subscription.amount = amount subscription.trialAmount = Decimal('0.00') subscription.profile = profile # Creating the request request = apicontractsv1.ARBCreateSubscriptionRequest() request.merchantAuthentication = merchantAuth request.subscription = subscription # Creating and executing the controller controller = ARBCreateSubscriptionController(request) controller.execute() # Getting the response response = controller.getresponse() if (response.messages.resultCode == "Ok"): print("SUCCESS:") print("Message Code : %s" % response.messages.message[0]['code'].text) print("Message text : %s" % response.messages.message[0]['text'].text) print("Subscription ID : %s" % response.subscriptionId) else: print("ERROR:") print("Message Code : %s" % response.messages.message[0]['code'].text) print("Message text : %s" % response.messages.message[0]['text'].text) return response
def subscription_update_payment(self, receipt): """ Updates the credit card information for the subscriptions in authorize.net and updates the payment record associated with the receipt. """ self.payment = Payment.objects.get(success=True, transaction=receipt.transaction, invoice=receipt.order_item.invoice) self.transaction_type = apicontractsv1.ARBSubscriptionType() self.transaction_type.payment = self.create_authorize_payment() self.transaction = apicontractsv1.ARBUpdateSubscriptionRequest() self.transaction.merchantAuthentication = self.merchant_auth self.transaction.subscriptionId = str(receipt.transaction) self.transaction.subscription = self.transaction_type self.controller = ARBUpdateSubscriptionController(self.transaction) self.set_controller_api_endpoint() self.controller.execute() response = self.controller.getresponse() self.check_subscription_response(response) receipt.meta[f"payment-update-{timezone.now():%Y-%m-%d %H:%M}"] = { 'raw': str({ **self.transaction_message, **response }) } receipt.save() subscription_info = self.subscription_info(receipt.transaction) account_number = getattr( subscription_info['subscription']['profile']['paymentProfile'] ['payment']['creditCard'], 'cardNumber', None) if account_number: self.payment.result['account_number'] = account_number.text account_type = getattr( subscription_info['subscription']['profile']['paymentProfile'] ['payment']['creditCard'], 'accountType', None) if account_type: self.payment.result['account_type'] = account_type.text self.payment.save()
def subscription_payment(self, subscription): """ Creates a subscription for a user. Subscriptions can be monthy or yearly.objects.all() """ # Setting billing information billto = apicontractsv1.nameAndAddressType() billto.firstName = " ".join( self.payment_info.data.get('full_name', "").split(" ")[:-1])[:50] billto.lastName = (self.payment_info.data.get('full_name', "").split(" ")[-1])[:50] # Setting subscription details self.transaction_type = apicontractsv1.ARBSubscriptionType() self.transaction_type.name = subscription.offer.name self.transaction_type.paymentSchedule = self.create_payment_scheduale_interval_type( subscription, subscription.offer.terms) self.transaction_type.amount = self.to_valid_decimal( subscription.total) self.transaction_type.trialAmount = Decimal('0.00') self.transaction_type.billTo = billto self.transaction_type.payment = self.create_authorize_payment() # Creating the request self.transaction = apicontractsv1.ARBCreateSubscriptionRequest() self.transaction.merchantAuthentication = self.merchant_auth self.transaction.subscription = self.transaction_type # Creating and executing the controller self.controller = ARBCreateSubscriptionController(self.transaction) self.controller.execute() # Getting the response response = self.controller.getresponse() self.check_subscription_response(response) receipt = subscription.receipts.get( transaction=self.payment.transaction) receipt.meta = {'raw': str({**self.transaction_message, **response})} if self.transaction_submitted: receipt.meta[ 'subscription_id'] = self.transaction_response.subscriptionId.pyval receipt.save()
def update_subscription(subscriptionId): merchantAuth = apicontractsv1.merchantAuthenticationType() merchantAuth.name = constants.apiLoginId merchantAuth.transactionKey = constants.transactionKey creditcard = apicontractsv1.creditCardType() creditcard.cardNumber = "4111111111111111" creditcard.expirationDate = "2020-12" payment = apicontractsv1.paymentType() payment.creditCard = creditcard #set profile information profile = apicontractsv1.customerProfileIdType() profile.customerProfileId = "121212"; profile.customerPaymentProfileId = "131313"; profile.customerAddressId = "141414"; subscription = apicontractsv1.ARBSubscriptionType() subscription.payment = payment #to update customer profile information #subscription.profile = profile request = apicontractsv1.ARBUpdateSubscriptionRequest() request.merchantAuthentication = merchantAuth request.refId = "Sample" request.subscriptionId = subscriptionId request.subscription = subscription controller = ARBUpdateSubscriptionController(request) controller.execute() response = controller.getresponse() if (response.messages.resultCode=="Ok"): print ("SUCCESS") print ("Message Code : %s" % response.messages.message[0]['code'].text) print ("Message text : %s" % response.messages.message[0]['text'].text) else: print ("ERROR") print ("Message Code : %s" % response.messages.message[0]['code'].text) print ("Message text : %s" % response.messages.message[0]['text'].text) return response
def provider_create_subscriptiondetails_from_customer_profile( amount, days, startdate, profileId): # Setting the merchant details merchantAuth = apicontractsv1.merchantAuthenticationType() merchantAuth.name = get_secret("API_LOGIN_ID") merchantAuth.transactionKey = get_secret("API_TRANSACTION_KEY") # Setting payment schedule paymentschedule = apicontractsv1.paymentScheduleType() paymentschedule.interval = apicontractsv1.paymentScheduleTypeInterval( ) # apicontractsv1.CTD_ANON() #modified by krgupta paymentschedule.interval.length = days paymentschedule.interval.unit = apicontractsv1.ARBSubscriptionUnitEnum.days paymentschedule.startDate = startdate paymentschedule.totalOccurrences = 999 paymentschedule.trialOccurrences = 0 # setting the customer profile details profile = apicontractsv1.customerProfileIdType() getCustomerProfile = apicontractsv1.getCustomerProfileRequest() getCustomerProfile.merchantAuthentication = merchantAuth getCustomerProfile.customerProfileId = str(profileId) controller = getCustomerProfileController(getCustomerProfile) controller.execute() response = controller.getresponse() paymentProfileId = None if (response.messages.resultCode == "Ok"): print( "Successfully retrieved a customer with profile id %s and customer id %s" % (getCustomerProfile.customerProfileId, response.profile.merchantCustomerId)) if hasattr(response, 'profile') == True: profile.customerProfileId = getCustomerProfile.customerProfileId if hasattr(response.profile, 'paymentProfiles') == True: for paymentProfile in response.profile.paymentProfiles: print("paymentProfile in get_customerprofile is:" % paymentProfile) print("Payment Profile ID %s" % str(paymentProfile.customerPaymentProfileId)) paymentProfileId = str( paymentProfile.customerPaymentProfileId) else: print("Failed to get customer profile information with id %s" % getCustomerProfile.customerProfileId) profile.customerPaymentProfileId = paymentProfileId profile.customerAddressId = None # Setting subscription details subscription = apicontractsv1.ARBSubscriptionType() subscription.name = "Sample Subscription" subscription.paymentSchedule = paymentschedule subscription.amount = amount subscription.trialAmount = Decimal('0.00') subscription.profile = profile # Creating the request request = apicontractsv1.ARBCreateSubscriptionRequest() request.merchantAuthentication = merchantAuth request.subscription = subscription # Creating and executing the controller controller = ARBCreateSubscriptionController(request) controller.execute() # Getting the response response = controller.getresponse() if (response.messages.resultCode == "Ok"): print("SUCCESS:") print("Message Code : %s" % response.messages.message[0]['code'].text) print("Message text : %s" % response.messages.message[0]['text'].text) print("Subscription ID : %s" % response.subscriptionId) else: print("ERROR:") print("Message Code : %s" % response.messages.message[0]['code'].text) print("Message text : %s" % response.messages.message[0]['text'].text) return response
def ARBCreateSubscriptionRequest(cart, refId, opaque_data, contact_info, months): # Get Authorize.net API credentials merchantAuth = _getMerchantAuth() # Setting payment schedule paymentschedule = apicontractsv1.paymentScheduleType() paymentschedule.interval = apicontractsv1.paymentScheduleTypeInterval() paymentschedule.interval.length = 1 paymentschedule.interval.unit = apicontractsv1.ARBSubscriptionUnitEnum.months paymentschedule.startDate = date.today() paymentschedule.totalOccurrences = months # Get payment info payment = _getPayment(opaque_data) # Create order information order = apicontractsv1.orderType() order.description = refId # Setting billing information billto = apicontractsv1.nameAndAddressType() billto.firstName = contact_info['first_name'] billto.lastName = contact_info['last_name'] billto.address = contact_info['address'] billto.city = contact_info['city'] billto.state = contact_info['state'] billto.zip = contact_info['zip'] billto.country = contact_info['country'] billto.phoneNumber = contact_info['phone'] # Set the customer's identifying information customerData = apicontractsv1.customerType() customerData.type = "individual" customerData.email = contact_info['email'] customerData.phoneNumber = contact_info['phone'] # Setting subscription details subscription = apicontractsv1.ARBSubscriptionType() subscription.paymentSchedule = paymentschedule subscription.amount = six.text_type(cart.amount) subscription.order = order subscription.customer = customerData subscription.billTo = billto subscription.payment = payment # Creating the request request = apicontractsv1.ARBCreateSubscriptionRequest() request.merchantAuthentication = merchantAuth request.subscription = subscription with enhanced_authnet_logging(): controller = ARBCreateSubscriptionController(request) if config.IN_PRODUCTION: controller.setenvironment(constants.PRODUCTION) controller.execute() response = controller.getresponse() logger.info('ARBCreateSubscriptionController response: {}'.format( response.__repr__())) if response.messages.resultCode == 'Ok': return response else: raise PaymentProcessingException(response.messages.message[0].text)
from authorizenet import apicontractsv1 from authorizenet.apicontrollers import * merchantAuth = apicontractsv1.merchantAuthenticationType() merchantAuth.name = '5KP3u95bQpv' merchantAuth.transactionKey = '4Ktq966gC55GAX7S' creditcard = apicontractsv1.creditCardType() creditcard.cardNumber = "4111111111111111" creditcard.expirationDate = "2020-12" payment = apicontractsv1.paymentType() payment.creditCard = creditcard subscription = apicontractsv1.ARBSubscriptionType() subscription.payment = payment request = apicontractsv1.ARBUpdateSubscriptionRequest() request.merchantAuthentication = merchantAuth request.refId = "Sample" request.subscriptionId = "2945620" request.subscription = subscription controller = ARBUpdateSubscriptionController(request) controller.execute() response = controller.getresponse() if (response.messages.resultCode == "Ok"): print "SUCCESS" print "Message Code : %s" % response.messages.message[0].code