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

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

Interchange TrustCommerce Support

## NAME

Vend::Payment::TCLink - Interchange TrustCommerce Support

## SYNOPSIS

```
    &charge=trustcommerce

        or

    [charge mode=trustcommerce param1=value1 param2=value2]
```

## PREREQUISITES

```
    Net::TCLink
```

http://www.trustcommerce.com/tclink.html and CPAN both have this module, which actually does the bulk of the work. All that Vend::Payment::TCLink does is to massage the payment data between Interchange and Net::TCLink.

## DESCRIPTION

The Vend::Payment::TCLink module implements the *trustcommerce()* 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::TCLink
```

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 `"trustcommerce"`. 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 trustcommerce
```

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 mode=trustcommerce id=YourTrustCommerceID]
```

or

```
    Route trustcommerce id YourTrustCommerceID
```

or

```
    Variable TRUSTCOMMERCE_ID YourTrustCommerceID
```

The active settings are:

- id

  Your TrustCommerce customer ID, supplied by TrustCommerce when you sign up. Global parameter is TRUSTCOMMERCE\_ID.

- secret

  Your TrustCommerce customer password, supplied by TrustCommerce when you sign up. Global parameter is TRUSTCOMMERCE\_SECRET.

- transaction

  The type of transaction to be run. Valid values are:

  ```
      Interchange         TrustCommerce
      ----------------    -----------------
          auth            preauth
          return          credit
          sale            sale
          settle          postauth
  ```

  Global parameter is TRUSTCOMMERCE\_ACTION.

- avs

  Whether AVS (Address Verification System) is enabled. Valid values are "y" for enabled and "n" for disabled. Global parameter is TRUSTCOMMERCE\_AVS.

- remap

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

- test

  Set this to `"TRUE"` if you wish to operate in test mode, i.e. set the TrustCommerce `"demo"` query paramter to TRUE.

  Examples:

  ```
      Route trustcommerce test TRUE
          or
      Variable TRUSTCOMMERCE_TEST TRUE
          or
      [charge mode=trustcommerce test=TRUE]
  ```

### Troubleshooting

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

Disable test mode, then test in various TrustCommerce error modes by using the credit card number 4222 2222 2222 2222.

Then 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::TrustCommerce
  ```

- •

  Make sure Net::TCLink is installed and working. You can test to see whether your Perl thinks they are:

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

  If it "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 payment parameters 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, TrustCommerce consultants are available to help you out.

  See http://www.trustcommerce.com/contact.html for more information, or email developer@trustcommerce.com

## BUGS

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

## AUTHORS

Dan Helfman \<dan@trustcommerce.com\>, based on code by Mark Stosberg \<mark@summersault.com\>, which was based on original code by Mike Heins.

## CREDITS

```
    webmaster@nameastar.net
    Jeff Nappi <brage@cyberhighway.net>
    Paul Delys <paul@gi.alaska.edu>
```
