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

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

Interchange payment test module

## NAME

Vend::Payment::TestPayment - Interchange payment test module

## SYNOPSIS

```
    &charge=testpayment

        or

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

## PREREQUISITES

None.

## DESCRIPTION

The Vend::Payment::TestPayment module implements the *testpayment()* routine for use with Interchange.  It's compatible on a call level with the other Interchange payment modules -- in theory (and even usually in practice) you could switch from TestPayment to another payment module with a few configuration file changes.

The module will perform one of three actions:

- •

  If the card number is 4111111111111111 then the transaction will be approved.

- •

  If the card number is 4111111111111129 then the transaction will be declined.

- •

  Any other card number will raise an error and the transaction will be declined.

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

```
    Require module Vend::Payment::TestPayment
```

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

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=testpayment id=testid]
```

or

```
    Route testpayment id testid
```

or

```
    Variable MV_PAYMENT_ID      testid
```

The active settings are:

- id

  A test account ID, which can be any value you like. Global parameter is MV\_PAYMENT\_ID.

- secret

  A test account password, which can be any value you like. Global parameter is MV\_PAYMENT\_SECRET.  This is not needed for test charges, using this module, but you may as well set it up anyway.

- transaction

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

  ```
      auth
      return
      reverse
      sale
      settle
      void
  ```

  Actually, the transaction type is ignored in this version, but you may as well set it anyway.

- remap

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

### Troubleshooting

- •

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

  ```
      Require module Vend::Payment::TestPayment
  ```

- •

  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, Cursor Software and other consultants are available to help with integration for a fee.

## BUGS

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

## AUTHORS

Kevin Walsh \<kevin@cursor.biz\> Based on original code by Mike Heins \<mheins@perusion.com\>
