I can successfully create ARB subscriptions. But as far as I can tell from the documentation, the credit card is not validated until it is charged.
So it is my understanding that I need to use AIM and VOID a charge of 0.01.
$content =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" .
"<ARBCreateSubscriptionRequest xmlns=\"AnetApi/xml/v1/schema/AnetApiSchema.xsd\">" .
"<merchantAuthentication>".
"<name>" . $loginname . "</name>".
"<transactionKey>" . $transactionkey . "</transactionKey>".
"</merchantAuthentication>".
"<refId>" . $refId . "</refId>".
"<subscription>".
"<name>" . "Payment" . "</name>".
"<paymentSchedule>".
"<interval>".
"<length>". 1 ."</length>".
"<unit>". "months" ."</unit>".
"</interval>".
"<startDate>" . $today . "</startDate>".
"<totalOccurrences>". 9999 ."</totalOccurrences>".
"<trialOccurrences>". 0 . "</trialOccurrences>".
"</paymentSchedule>".
"<amount>". $contractorRate ."</amount>".
"<trialAmount>" . 0.00 . "</trialAmount>".
"<payment>".
"<creditCard>".
"<cardNumber>" . $ccnumber . "</cardNumber>".
"<expirationDate>" . $ccexpire . "</expirationDate>".
"</creditCard>".
"</payment>".
"<billTo>".
"<firstName>". $firstname . "</firstName>".
"<lastName>" . $lastname . "</lastName>".
"</billTo>".
"</subscription>".
"</ARBCreateSubscriptionRequest>";
//send the xml via curl
$response = send_request_via_curl($host,$path,$content);
So before I get a successful response from $response, I'd need to VOID a charge to their credit card.
Am I correct in this understanding? What would be the best way to go about doing so?
To verify the credit card is valid before creating the subscription you need to do an AUTH_ONLY for either $0.00 or $0.01 depending on your processor's requirements. If it is approved, and the amount is $0.01, you should then void that transaction. Then you can go ahead and create your subscription.
There were some rules changes and AUTH_ONLYs for $0.01 and I am not 100% up to speed on them. But from what I understand, Visa and MasterCard wanted to do away with AUTH_ONLYs for any dollar amount. They wanted merchants to use $0.00 instead as that leaves no frozen funds on a user's card and makes the purpose of the AUTH_ONLY clear. Definitely contact the merchant account provider and see what these rules are and what their level of support for $0.00 AUTHs are.