Our team has developed a custom ordering application for our client. It is a membership site that allows members and non-members to purchase from the site; however it's for a co-op and the final amount of their order has to be calculated about a week after the order takes place.
Here's how we set it up:
1. The user registers an account and puts a payment method on file --> application creates a customer payment profile through the CIM and authorizes their card for validation.
2. When the user places their order, the system authorizes their payment method for $1.00.
3. When the final order is tallied, the customer is charged the full amount (i.e. $100) which is sent as an authorize and capture.
The issue we've discovered is that each of these transactions is costing the client $.10 per transaction, tallying $.30+ in some scenarios.
What the client has requested (to avoid unnecessary charges) not to authorize/validate the cards on steps one or two. We are currently using a library (appication is built in codeigniter) called AuthorizeCIMLib.php. The authorize.net folks said that we need to set <validationmode>none</validationmode> but our library doesn't contain that.
I'm wondering if we set the whole library to validation = test instead of livemode that it would solve our issue. Does anyone have any advice on this to avoid those first two charges?
08-12-2013 03:49 PM
Unless the percentage of people not canceling before the $100 charge is only like a few percent, you're better off just eating the fee. But short of that - are you using regular CIM or the hosted CIM popup? If regular CIM, you can just pass validationMode as one of the fields sent to createCustomerPaymentProfileRequest(). If hosted CIM, set the parameter hostedProfileValidationMode => 'testMode' when calling getHostedProfilePageRequest().
Reference:
08-12-2013 07:15 PM
We are using the regular CIM.
We just changed the validation mode to testMode when the card is "processed" in hopes of it not procesing the card. What we want to accomplish is different than most people, on "checkout", we don't want to validate OR charge the card. We just want to hold it on file so that we can manually charge it later. The code currently looks like this, does anyone have any recommendations? Maybe removing the amount to charge?
//Charge Their card...
$this->Authorizecimlib->set_data('validationMode', 'testMode');
$this->Authorizecimlib->set_data('amount', 1.00);
$this->Authorizecimlib->set_data('customerProfileId', $profileid);
$this->Authorizecimlib->set_data('customerPaymentProfileId', $paymentprofileid);
$this->Authorizecimlib->set_data('cardCode', $cardCVV);
08-15-2013 04:22 PM
The card is validated when the payment profile is set up, there is no need to run any additional charge. Don't know what you are doing it, but it looks unnecessary.
08-18-2013 03:53 PM
TJPride,
I appreciate your responses.
What we are trying to accomplish is:
1. Setup CIM payment profile
2. Let user place an order
3. Run their card (auth + capture) one week after the order is placed
At this juncture, each of those steps incurs a transaction (and a fee). We are trying to avoid unnecessary fees. We are trying to determine if there is anyway to only incur a single charge for these three steps instead of three charges for three steps.
Any advice you can lend would be appreciated.
08-20-2013 09:36 AM
You can record the order in your database and then auth/capture at the same time. I think that would save you one charge, though obviously the money won't be reserved if you don't auth up front.
08-27-2013 02:01 PM