#!/usr/bin/env perl use strict; use warnings; use Test::More; use lib 't'; require 'TestFixtures.pm'; use Business::OnlinePayment; my $merchant_id = $ENV{BAMBORA_MERCHANT_ID}; my $api_key = $ENV{BAMBORA_API_KEY}; SKIP: { skip 'Missing env vars BAMBORA_MERCHANT_ID and BAMBORA_API_KEY', 32 unless $merchant_id && $api_key; my %content = ( login => $merchant_id, password => $api_key, action => 'Tokenize', amount => '9.99', owner => 'Freeside Internet', name => 'Mitch Jackson', address => '1407 Graymalkin Lane', city => 'Vancouver', state => 'BC', zip => '111 111', country => 'CA', invoice_number => time(), card_number => '4030000010001234', cvv2 => '123', expiration => '1122', phone => '251-300-1300', email => 'mitch@freeside.biz', ); my $tr; ok( $tr = Business::OnlinePayment->new('Bambora'), 'Instantiatiate $tr' ); ok( $tr->content( %content ), 'Set transaction content onto $tr' ); { local $@; eval { $tr->submit }; ok( !$@, "Submit request to create Payment Profile (tokenize)" ); } my $response; my %expect = ( code => 1, message => 'Operation Successful', ); my @expect = qw( customer_code ); ok( $response = $tr->response_decoded, 'response_decoded' ); for my $k ( keys %expect ) { ok( $response->{$k} eq $expect{$k}, sprintf '$tr->%s == %s', $k, $expect{$k} ); } for my $k ( @expect ) { ok( defined $response->{$k}, sprintf '$r->%s (%s)', $k, $response->{$k} ); } ok( $response->{customer_code} eq $tr->card_token, '$tr->card_token eq $response->{customer_code}' ); } done_testing;