I'm planning to sell online and in the store, however having both card present and card not present type of accounts is costly for the low volume I'm starting out with.

I'm wondering if I can just use a card not present account with uberpos?

Thanks.

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

Last Call Media’s picture

It will not work right now. And authorize would you to have the separate accounts.

As I understand it, the APIs are different too. Maybe Silas has a comment on why they are separate.

slip’s picture

Yeah, you generally shouldn't be using card not present if the card is present because it can cost more, as far as I know... And card present is the correct type of account for brick and mortar stores, where uberpos is designed to operate.

Anyways, here are my thoughts:

It's actually the same API but the info required is different + urls are different... not too different but different enough where I had to make my own function based off of _uc_authorizenet_charge() and add and remove a couple things. I mean, you could support both but you'd have to have a few of conditionals in there, or call _uc_authorizenet_charge() to handle not present transactions. You'd probably want a new command as well to specify card not present.

I suppose it might make sense if you're also accepting orders over the phone or something.. like paying for delivery at a restaurant. Seems like that should be card not present but I'm not really sure if authorize.net would require you to have two accounts just for that..

Here are the docs:
http://developer.authorize.net/guides/AIM/
http://developer.authorize.net/api/cardpresent/

xl_cheese’s picture

So for the time being when I'm doing low volume on instore and online purchases I think I would be ok just using the slightly more expensive not present account. Adding a 2nd account would cost more.

Until I start doing more volume to justify it I would like to just use the not present. It sounds like I can go into uberpos and update your function with the contents of _uc_authorizenet_charge() ?

Essentially, I just need uberpos to default to card not present.

Thanks for the help. I'll look into it and see if I can make it work.

Last Call Media’s picture

I think it would be a nice feature to be able to tell uberpos to use the Card Not Present account that get setup in ubercart's authnet module (even though there are more fees) because at a low volume of sales it makes sense to not have 2 authnet accounts.

slip’s picture

Category: support » feature
xl_cheese’s picture

It looks like it might be a pain to try to use card not present in the store due to having to gather billing address and cvv code from the customer.

Last Call Media’s picture

I think you can turn off those name, ccv , address type requirements in your settings at auth.net

krlucas’s picture

This patch enables you to choose the core Ubercart authorize.net (uc_authorizenet) module and related settings for card-not-present transactions through Uberpos. It also adds a button "CIM" for charging a CIM profile which may be attached to an order.

Last Call Media’s picture

Should there be something that prevents CIM profiles from being created for anonymous users?

krlucas’s picture

uc_authorizenet stores the CIM Profile on an order so anonymous or not shouldn't matter. What does matter is whether the order has already been charged because that's the only way to get the CIM profile to work.

More advanced CIM functionality probably requires integration with uc_cim (which needs some TLC and doesn't leverage uc_authorizenet) or patches to uc_authorizenet. Either way, seems like different issue than allowing card-not-present accounts.

krlucas’s picture

Status: Active » Needs review
Last Call Media’s picture

Committed. THANKS!

Last Call Media’s picture

Status: Needs review » Fixed
rbayliss’s picture

Status: Fixed » Active

This is looking fantastic. A few comments:

- CIM Charge is only available when you have a profile attached to an order. Since this only happens for partially paid orders, the use case here is pretty marginal. It seems a bit confusing to have a CIM button available all the time for a feature that might only be useful once in a while. Of course there's no way to hide the button conditionally by order, but I think it would be best to hide this command if Authorize.net CIM has not been enabled. How about:

/*
 * Implementation of hook_uberpos_buttons().
 */
function up_authorizenet_uberpos_buttons() {
  $buttons = array();
  $cim_status = variable_get('cim_transaction_mode', 'disabled');

  if (in_array($cim_status, array('production', 'developer')) && variable_get('up_authorizenet_uc_authorizenet', 0)) {
    // Button to charge CIM profile on existing order.
    $buttons[] = array(
      'section' => 'left',
      'text' => t('CIM'),
      'weight' => 30,
      'attributes' => array(
        'onclick' => 'uberpos_add_text_submit("PC"); return false;',
        'class' => 'uberpos-button-cim up-button-submit',
      ),
    );
  }
  
  return $buttons;
} 

- Swiped cards don't work with the CNP processor. We will need to parse the expiration date and CC # out of the track data manually.

I'm going to create a second feature request for this, and once the CIM button cleanup is done, this is RTBC.

rbayliss’s picture

Assigned: Unassigned » krlucas
Last Call Media’s picture

So to use this feature for now, enter the 11 to 12 digit card number plus 4 digit expiration number in the following format XXXXXXXXXXXXMMYY and then press enter.

krlucas’s picture

Status: Active » Closed (fixed)

The changes to make the CIM button conditional on CIM transactions actually being enabled in the uc_authorizenet admin has been committed. Marking as closed and fixed.

Create a separate feature request for #1166286: Support swiped cards for card-not-present transactions.