---
name: "Vend::Payment::Sage"
section: "3pm"
platform: "linux"
package: "interchange"
version: "5.7.7-2"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/Vend::Payment::Sage"
---

# Vend::Payment::Sage(3pm)

Interchange Sage Support

## NAME

Vend::Payment::Sage - Interchange Sage Support

## SYNOPSIS

```
    &charge=sage

        or

    [charge route=sage param1=value1 param2=value2]
```

## PREREQUISITES

```
  Net::SSLeay

    or

  LWP::UserAgent and Crypt::SSLeay
```

Only one of these need be present and working.

## DESCRIPTION

The Vend::Payment::Sage module implements the *sage()* routine for use with Interchange. It is compatible on a call level with the other Interchange payment modules.

To enable this module, place this directive in `"interchange.cfg"`:

```
    Require module Vend::Payment::Sage
```

This *must* be in interchange.cfg or a file included from it.

Make sure CreditCardAuto is off (default in Interchange demos).

The mode can be named anything, but the `"gateway"` parameter must be set to `"sage"`. To make it the default payment gateway for all credit card transactions in a specific catalog, you can set in `"catalog.cfg"`:

```
    Variable   MV_PAYMENT_MODE  sage
```

It uses several of the standard settings from Interchange payment. Any time we speak of a setting, it is obtained either first from the tag/call options, then from an Interchange order Route named for the mode, then finally a default global payment variable, For example, the `"id"` parameter would be specified by:

```
    [charge route=sage id=YourSage]
```

or

```
    Route sage id YourSageID
```

or

```
    Variable MV_PAYMENT_ID      YourSageID
```

The active settings are:

- id

  Your Sage account ID, supplied by Sage when you sign up. Global parameter is MV\_PAYMENT\_ID.

- remap

  This remaps the form variable names to the ones needed by Sage. See the `"Payment Settings"` heading in the Interchange documentation for use.

### Troubleshooting

Try the instructions above, then enable test mode. A test order should complete.

Then move to live mode and try a sale with the card number `"4111 1111 1111 1111"` and a valid expiration date. The sale should be denied, and the reason should be in \[data session payment\_error\].

If nothing works:

- •

  Make sure you "Require"d the module in interchange.cfg:

  ```
      Require module Vend::Payment::Sage
  ```

- •

  Make sure either Net::SSLeay or Crypt::SSLeay and LWP::UserAgent are installed and working. You can test to see whether your Perl thinks they are:

  ```
      perl -MNet::SSLeay -e 'print "It works\n"'
  ```

  or

  ```
      perl -MLWP::UserAgent -MCrypt::SSLeay -e 'print "It works\n"'
  ```

  If either one prints "It works." and returns to the prompt you should be OK (presuming they are in working order otherwise).

- •

  Check the error logs, both catalog and global.

- •

  Make sure you set your account ID properly.

- •

  Try an order, then put this code in a page:

  ```
      <XMP>
      [calc]
          my $string = $Tag->uneval( { ref => $Session->{payment_result} });
          $string =~ s/{/{\n/;
          $string =~ s/,/,\n/g;
          return $string;
      [/calc]
      </XMP>
  ```

  That should show what happened.

- •

  If all else fails, consultants are available to help with integration for a fee. See http://www.icdevgroup.org/

- •

  Sage technical docs are available at http://www.sagepayments.com/Support/Documentation.aspx

## BUGS

There is actually nothing \*in\* Vend::Payment::Sage. It changes packages to Vend::Payment and places things there.

## AUTHORS

Davor Ocelic, based on original code by Cameron Prince, Mark Johnson and Mike Heins.
