added more data to create customer
This commit is contained in:
@@ -19,9 +19,8 @@ from authorizenet import apicontractsv1
|
||||
from authorizenet.constants import constants
|
||||
from authorizenet.apicontrollers import (
|
||||
createCustomerProfileController,
|
||||
createCustomerPaymentProfileController,
|
||||
getCustomerProfileIdsController,
|
||||
getCustomerProfileController
|
||||
createCustomerPaymentProfileController
|
||||
|
||||
)
|
||||
# --- ROUTER DEFINITION ---
|
||||
|
||||
@@ -36,7 +35,7 @@ TRANSACTION_KEY = '94s6Qy458mMNJr7G'
|
||||
|
||||
constants.show_url_on_request = True
|
||||
constants.environment = constants.SANDBOX
|
||||
|
||||
state_abbrevs = ['MA', 'RI', 'NH', 'ME', 'VT', 'CT', 'NY']
|
||||
|
||||
@router.post("/maintenance/migrate-cards-now")
|
||||
def run_card_migration_synchronously():
|
||||
@@ -78,8 +77,12 @@ def run_card_migration_synchronously():
|
||||
cardCode = str(card_obj.security_number).strip()
|
||||
if len(cardCode) < 3 or len(cardCode) > 4 or not cardCode.isdigit():
|
||||
raise ValueError(f"Invalid CVV length {len(cardCode)} or non-numeric for card ID {card_obj.id}")
|
||||
# Get dynamic state
|
||||
the_state = state_abbrevs[customer_obj.customer_state] if 0 <= customer_obj.customer_state < len(state_abbrevs) else 'MA'
|
||||
|
||||
# Debug print
|
||||
print(f"DEBUG SEND CREATE: cardNumber='{sanitized_card_number}', expirationDate='{expiration_date_str}', cardCode='{cardCode}', customerID={customer_obj.id}, name='{customer_obj.customer_first_name} {customer_obj.customer_last_name}', address='{customer_obj.customer_address}', city='{customer_obj.customer_town}', zip='{customer_obj.customer_zip}', email='{customer_obj.customer_email}'")
|
||||
print(f"DEBUG SEND CREATE: cardNumber='{sanitized_card_number}', expirationDate='{expiration_date_str}', cardCode='{cardCode}', customerID={customer_obj.id}, name='{customer_obj.customer_first_name} {customer_obj.customer_last_name}', address='{customer_obj.customer_address}', city='{customer_obj.customer_town}', state='{the_state}', zip='{customer_obj.customer_zip}', country='USA', phone='{customer_obj.customer_phone_number}', email='{customer_obj.customer_email}'")
|
||||
|
||||
creditCard = apicontractsv1.creditCardType(
|
||||
cardNumber=sanitized_card_number,
|
||||
expirationDate=expiration_date_str,
|
||||
@@ -90,11 +93,15 @@ def run_card_migration_synchronously():
|
||||
lastName=customer_obj.customer_last_name,
|
||||
address=customer_obj.customer_address,
|
||||
city=customer_obj.customer_town,
|
||||
zip=customer_obj.customer_zip
|
||||
state=the_state,
|
||||
zip=customer_obj.customer_zip,
|
||||
country="USA",
|
||||
phoneNumber=customer_obj.customer_phone_number
|
||||
)
|
||||
paymentProfile = apicontractsv1.customerPaymentProfileType(
|
||||
billTo=billTo,
|
||||
payment=apicontractsv1.paymentType(creditCard=creditCard)
|
||||
payment=apicontractsv1.paymentType(creditCard=creditCard),
|
||||
defaultPaymentProfile=True
|
||||
)
|
||||
customerProfile = apicontractsv1.customerProfileType(
|
||||
merchantCustomerId=str(customer_obj.id),
|
||||
@@ -133,7 +140,8 @@ def run_card_migration_synchronously():
|
||||
"""Helper to add a new Payment Profile to an existing Customer Profile."""
|
||||
merchantAuth = apicontractsv1.merchantAuthenticationType(name=API_LOGIN_ID, transactionKey=TRANSACTION_KEY)
|
||||
expiration_date_str = f"{card_obj.expiration_year}-{str(card_obj.expiration_month).zfill(2)}"
|
||||
|
||||
# State abbreviations list
|
||||
|
||||
# // FIX 1 (Applied here as well): Sanitize card number
|
||||
sanitized_card_number = ''.join(filter(str.isdigit, str(card_obj.card_number)))
|
||||
|
||||
@@ -142,9 +150,23 @@ def run_card_migration_synchronously():
|
||||
expirationDate=expiration_date_str,
|
||||
cardCode=str(card_obj.security_number).strip()
|
||||
)
|
||||
# Get dynamic state
|
||||
the_state = state_abbrevs[customer_obj.customer_state] if 0 <= customer_obj.customer_state < len(state_abbrevs) else 'MA'
|
||||
|
||||
billTo = apicontractsv1.customerAddressType(
|
||||
firstName=customer_obj.customer_first_name,
|
||||
lastName=customer_obj.customer_last_name,
|
||||
address=customer_obj.customer_address,
|
||||
city=customer_obj.customer_town,
|
||||
state=the_state,
|
||||
zip=customer_obj.customer_zip,
|
||||
country="USA",
|
||||
phoneNumber=customer_obj.customer_phone_number
|
||||
)
|
||||
paymentProfile = apicontractsv1.customerPaymentProfileType(
|
||||
billTo=apicontractsv1.customerAddressType(firstName=customer_obj.customer_first_name, lastName=customer_obj.customer_last_name),
|
||||
payment=apicontractsv1.paymentType(creditCard=creditCard)
|
||||
billTo=billTo,
|
||||
payment=apicontractsv1.paymentType(creditCard=creditCard),
|
||||
defaultPaymentProfile=False
|
||||
)
|
||||
request = apicontractsv1.createCustomerPaymentProfileRequest(
|
||||
merchantAuthentication=merchantAuth,
|
||||
@@ -167,6 +189,8 @@ def run_card_migration_synchronously():
|
||||
print(f" AUTH.NET ERROR: {error_msg}")
|
||||
return None
|
||||
|
||||
|
||||
|
||||
# --- MIGRATION SCRIPT LOGIC ---
|
||||
print("="*60)
|
||||
print("MIGRATION STARTED: Migrating all customer cards to Authorize.Net CIM.")
|
||||
@@ -181,8 +205,6 @@ def run_card_migration_synchronously():
|
||||
customers_to_migrate = (session
|
||||
.query(Customer_Customer)
|
||||
.filter(Customer_Customer.auth_net_profile_id == None)
|
||||
.order_by(func.random())
|
||||
.limit(1)
|
||||
.all())
|
||||
|
||||
total_customers = len(customers_to_migrate)
|
||||
|
||||
Reference in New Issue
Block a user