variables.cfpayment = structNew();
variables.cfpayment.Status = ""; // set in init() to be unprocessed
variables.cfpayment.StatusCode = ""; // hold the HTTP/connection status code
variables.cfpayment.Result = ""; // hold the raw response from the other end
variables.cfpayment.TestMode = false;
variables.cfpayment.Message = "";
variables.cfpayment.TransactionID = ""; // transaction id from remote system
variables.cfpayment.Authorization = ""; // six-character alphanum approval/authorization code
variables.cfpayment.AVSCode = "";
variables.cfpayment.CVVCode = "";
variables.cfpayment.ParsedResult = "";
variables.cfpayment.RequestData = ""; // store the payload from the Request; dev use only; populated only when testmode = true
variables.cfpayment.TokenID = ""; // normalize an ID for vault/remote lockbox services (store/unstore methods)
// list the possible AVS responses
variables.cfpayment.ResponseAVS = structNew();
structInsert(variables.cfpayment.ResponseAVS, "A", "Street address matches, but 5-digit and 9-digit postal code do not match.", true);
structInsert(variables.cfpayment.ResponseAVS, "B", "Street address matches, but postal code not verified.", true);
structInsert(variables.cfpayment.ResponseAVS, "C", "Street address and postal code do not match.", true);
structInsert(variables.cfpayment.ResponseAVS, "D", "Street address and postal code match.", true);
structInsert(variables.cfpayment.ResponseAVS, "E", "AVS data is invalid or AVS is not allowed for this card type.", true);
structInsert(variables.cfpayment.ResponseAVS, "F", "Card member's name does not match, but billing postal code matches.", true);
structInsert(variables.cfpayment.ResponseAVS, "G", "Non-U.S. issuing bank does not support AVS.", true);
structInsert(variables.cfpayment.ResponseAVS, "H", "Card member's name does not match. Street address and postal code match.", true);
structInsert(variables.cfpayment.ResponseAVS, "I", "Address not verified.", true);
structInsert(variables.cfpayment.ResponseAVS, "J", "Card member's name, billing address, and postal code match. Shipping information verified and chargeback protection guaranteed through the Fraud Protection Program.", true);
structInsert(variables.cfpayment.ResponseAVS, "K", "Card member's name matches but billing address and billing postal code do not match.", true);
structInsert(variables.cfpayment.ResponseAVS, "L", "Card member's name and billing postal code match, but billing address does not match.", true);
structInsert(variables.cfpayment.ResponseAVS, "M", "Street address and postal code match.", true);
structInsert(variables.cfpayment.ResponseAVS, "N", "Street address and postal code do not match.", true);
structInsert(variables.cfpayment.ResponseAVS, "O", "Card member's name and billing address match, but billing postal code does not match.", true);
structInsert(variables.cfpayment.ResponseAVS, "P", "Postal code matches, but street address not verified.", true);
structInsert(variables.cfpayment.ResponseAVS, "Q", "Card member's name, billing address, and postal code match. Shipping information verified but chargeback protection not guaranteed.", true);
structInsert(variables.cfpayment.ResponseAVS, "R", "System unavailable.", true);
structInsert(variables.cfpayment.ResponseAVS, "S", "U.S.-issuing bank does not support AVS.", true);
structInsert(variables.cfpayment.ResponseAVS, "T", "Card member's name does not match, but street address matches.", true);
structInsert(variables.cfpayment.ResponseAVS, "U", "Address information unavailable.", true);
structInsert(variables.cfpayment.ResponseAVS, "V", "Card member's name, billing address, and billing postal code match.", true);
structInsert(variables.cfpayment.ResponseAVS, "W", "Street address does not match, but 9-digit postal code matches.", true);
structInsert(variables.cfpayment.ResponseAVS, "X", "Street address and 9-digit postal code match.", true);
structInsert(variables.cfpayment.ResponseAVS, "Y", "Street address and 5-digit postal code match.", true);
structInsert(variables.cfpayment.ResponseAVS, "Z", "Street address does not match, but 5-digit postal code matches.", true);
// list the CVC or CVV2 response options
variables.cfpayment.ResponseCVV = structNew();
structInsert(variables.cfpayment.ResponseCVV, "D", "Suspicious transaction", true);
structInsert(variables.cfpayment.ResponseCVV, "I", "Failed data validation check", true);
structInsert(variables.cfpayment.ResponseCVV, "M", "Match", true);
structInsert(variables.cfpayment.ResponseCVV, "N", "No Match", true);
structInsert(variables.cfpayment.ResponseCVV, "P", "Not Processed", true);
structInsert(variables.cfpayment.ResponseCVV, "S", "Should have been present", true);
structInsert(variables.cfpayment.ResponseCVV, "U", "Issuer unable to process request", true);
structInsert(variables.cfpayment.ResponseCVV, "X", "Card does not support verification", true);