Return Funds to a Customer

This code steps you through the process of refunding payments that have been made on settled transactions.

There are three outcomes when processing credit card transactions:

  1. Approved
  2. Declined
  3. Error

Refunds can only be run on 'Approved' transactions that have been settled. 'Declined' transactions cannot be refunded. As a result, in order to test the refund process, you must first pass an odd dollar amount. This will return the transaction with an 'Approved' status. Then, you can test a refund for the transaction.

An error could result from a variety of conditions such as missing data, invalid card numbers, and expiration dates provided in invalid formats.

The following sample code calls a routine from our Code Library.
Download bluepay.pm

##
# BluePay Perl Sample code.
#
# This code sample runs a $3.00 Credit Card Sale transaction
# against a customer using test payment information. If
# approved, a 2nd transaction is run to refund the customer
# for $1.75.
# If using TEST mode, odd dollar amounts will return
# an approval and even dollar amounts will return a decline.
##

use strict;
use bluepay;

my $account_id = "Merchant's Account ID Here";
my $secret_key = "Merchant's Secret Key Here";
my $mode = "TEST";

my $payment = BluePay->new(
$account_id,
$secret_key,
$mode
);

$payment->set_customer_information({
  first_name => 'Bob',
  last_name => 'Tester',
  address1 => '123 Test St.',
  address2 => 'Apt',
  city => 'Testville',
  state => 'IL',
  zip_code => '54321',
  country => 'USA',
  phone => '123-123-12345',
  email => '[email protected]'
});

$payment->set_cc_information({
  cc_number =>'4111111111111111', # Customer Credit Card Number
  cc_expiration => '0815', # Card Expiration Date: MMYY
  cvv2 =>'123' # Card CVV2
});

$payment->sale({amount => '3.00'}); # Sale Amount: $3.00

# Makes the API Request with BluePay
$payment->process();

my $payment_return = BluePay->new(
  $account_id,
  $secret_key,
  $mode
);

$payment_return->refund({
  trans_id => $payment->{RRNO},# id of previous transaction to refund
  amount => '1.75' # partial refund of $1.75
});

# Makes the API Request to process refund
$payment_return->process();

# Reads the response from BluePay
if ($payment->is_successful_response()){
  print "TRANSACTION STATUS: " . $payment_return->{Result} . "\n";
  print "TRANSACTION MESSAGE: " . $payment_return->{MESSAGE} . "\n";
  print "TRANSACTION ID: " . $payment_return->{RRNO} . "\n";
  print "AVS RESULT: " .$payment_return->{AVS} . "\n";
  print "CVV2 RESULT: " . $payment_return->{CVV2} . "\n";
  print "MASKED PAYMENT ACCOUNT: " . $payment_return->{PAYMENT_ACCOUNT} . "\n";
  print "CARD TYPE: " . $payment_return->{CARD_TYPE} . "\n";
  print "AUTH CODE: " . $payment_return->{AUTH_CODE} . "\n";
} else {
  print $payment->{MESSAGE} . "\n";
}
BluePay Processing, LLC is a registered ISO of Wells Fargo Bank, N.A., Walnut Creek, CA, U.S.A.
BluePay Canada ULC, is a Registered ISO/MSP of Peoples Trust Company, Vancouver, Canada.