NAME

Business::eWAY::RapidAPI - eWAY RapidAPI V3

VERSION

version 0.11

SYNOPSIS

use Business::eWAY::RapidAPI;

my $rapidapi = Business::eWAY::RapidAPI->new(
    username => "44DD7C70Jre1dVgIsULcEyi+A+/cX9V5SAHkIiyVdWrHRG2tZm0rdintfZz85Pa/kGwq/1",
    password => "Abcd1234",
);

DESCRIPTION

eWAY RapidAPI http://www.eway.com.au/developers/api/rapid-3-0

check https://github.com/fayland/p5-Business-eWAY-RapidAPI/tree/master/examples/web for usage demo.

METHODS

CONSTRUCTION

my $rapidapi = Business::eWAY::RapidAPI->new(
    mode => 'test',
    username => "44DD7C70Jre1dVgIsULcEyi+A+/cX9V5SAHkIiyVdWrHRG2tZm0rdintfZz85Pa/kGwq/1",
    password => "Abcd1234",
);
  • mode

    default 'live'

  • username

    required

  • password

    required

  • debug

    default 0

CreateAccessCode

request AccessCode by submit customer/shippingaddress/payment/redirectUrl etc.

## Create AccessCode Request Object
my $request = Business::eWAY::RapidAPI::CreateAccessCodeRequest->new();

## Populate values for Customer Object
if (defined $q->param('txtTokenCustomerID')){
    $request->Customer->TokenCustomerID($q->param('txtTokenCustomerID'));
};
$request->Customer->Reference( $q->param('txtCustomerRef') );
$request->Customer->Title( $q->param('ddlTitle') );
# Note: FirstName is Required Field When Create/Update a TokenCustomer
$request->Customer->FirstName( $q->param('txtFirstName') );
# Note: LastName is Required Field When Create/Update a TokenCustomer
$request->Customer->LastName( $q->param('txtLastName') );
$request->Customer->CompanyName( $q->param('txtCompanyName') );
$request->Customer->JobDescription( $q->param('txtJobDescription') );
$request->Customer->Street1( $q->param('txtStreet1') );
$request->Customer->Street2( $q->param('txtStreet2') );
$request->Customer->City( $q->param('txtCity') );
$request->Customer->State( $q->param('txtState') );
$request->Customer->PostalCode( $q->param('txtPostalcode') );
# Note: Country is Required Field When Create/Update a TokenCustomer
$request->Customer->Country( $q->param('txtCountry') );
$request->Customer->Email( $q->param('txtEmail') );
$request->Customer->Phone( $q->param('txtPhone') );
$request->Customer->Mobile( $q->param('txtMobile') );
$request->Customer->Comments("Some Comments Here");
$request->Customer->Fax("0131 208 0321");
$request->Customer->Url("http://www.yoursite.com");

## Populate values for ShippingAddress Object.
## This values can be taken from a Form POST as well. Now is just some dummy data.
$request->ShippingAddress->FirstName("John");
$request->ShippingAddress->LastName("Doe");
$request->ShippingAddress->Street1("9/10 St Andrew");
$request->ShippingAddress->Street2(" Square");
$request->ShippingAddress->City("Edinburgh");
$request->ShippingAddress->State("");
$request->ShippingAddress->Country("gb");
$request->ShippingAddress->PostalCode("EH2 2AF");
$request->ShippingAddress->Email('sales@eway.co.uk');
$request->ShippingAddress->Phone("0131 208 0321");
# ShippingMethod, e.g. "LowCost", "International", "Military". Check the spec for available values.
$request->ShippingAddress->ShippingMethod("LowCost");

## Populate values for LineItems
my $item1 = Business::eWAY::RapidAPI::LineItem->new();
$item1->SKU("SKU1");
$item1->Description("Description1");
my $item2 = Business::eWAY::RapidAPI::LineItem->new();
$item2->SKU("SKU2");
$item2->Description("Description2");
$request->Items->LineItem([ $item1, $item2 ]);

## Populate values for Options
my $opt1 = Business::eWAY::RapidAPI::Option->new(Value => $q->param('txtOption1'));
my $opt2 = Business::eWAY::RapidAPI::Option->new(Value => $q->param('txtOption2'));
my $opt3 = Business::eWAY::RapidAPI::Option->new(Value => $q->param('txtOption3'));
$request->Options->Option([$opt1, $opt2, $opt3]);

$request->Payment->TotalAmount($q->param('txtAmount'));
$request->Payment->InvoiceNumber($q->param('txtInvoiceNumber'));
$request->Payment->InvoiceDescription( $q->param('txtInvoiceDescription') );
$request->Payment->InvoiceReference( $q->param('txtInvoiceReference') );
$request->Payment->CurrencyCode( $q->param('txtCurrencyCode') );

## Url to the page for getting the result with an AccessCode
$request->RedirectUrl($q->param('txtRedirectURL'));
## Method for this request. e.g. ProcessPayment, Create TokenCustomer, Update TokenCustomer & TokenPayment
$request->Method($q->param('ddlMethod'));

my $result = $rapidapi->CreateAccessCode($request);

## Save result into Session. payment.pl and results.pl will retrieve this result from Session
$session->param('TotalAmount', $q->param('txtAmount') );
$session->param('InvoiceReference', $q->param('txtInvoiceReference') );
$session->param('Response', $result );
$session->flush();

## Check if any error returns
if (defined( $result->{'Errors'} )) {
    $lblError = $rapidapi->ErrorsToString( $result->{'Errors'} );
} else {
    ## All good then redirect to the payment page
    print $session->header(-location => 'payment.pl');
    exit();
}

## $result is HASHREF contains
## FormActionURL
## AccessCode

GetAccessCodeResult

get payment result by previous stored AccessCode

my $request = Business::eWAY::RapidAPI::GetAccessCodeResultRequest->new();
$request->AccessCode($q->param('AccessCode'));

## Call RapidAPI to get the result
my $result = $rapidapi->GetAccessCodeResult($request);

## Check if any error returns
my $lblError;
if (defined($result->{'Errors'})) {
    $lblError = $rapidapi->ErrorsToString($result->{'Errors'});
}

## $result is HASHREF contains:
## ResponseCode
## Options
## TransactionID
## ... etc.

Transaction

Direct Payment http://api-portal.anypoint.mulesoft.com/eway/api/eway-rapid-31-api/docs/reference/direct-connection

## Create AccessCode Request Object
my $request = Business::eWAY::RapidAPI::TransactionRequest->new();

## Populate values for Customer Object
if (defined $q->param('txtTokenCustomerID')){
    $request->Customer->TokenCustomerID($q->param('txtTokenCustomerID'));
};
$request->Customer->Reference( $q->param('txtCustomerRef') );
$request->Customer->Title( $q->param('ddlTitle') );
# Note: FirstName is Required Field When Create/Update a TokenCustomer
$request->Customer->FirstName( $q->param('txtFirstName') );
# Note: LastName is Required Field When Create/Update a TokenCustomer
$request->Customer->LastName( $q->param('txtLastName') );
$request->Customer->CompanyName( $q->param('txtCompanyName') );
$request->Customer->JobDescription( $q->param('txtJobDescription') );
$request->Customer->Street1( $q->param('txtStreet1') );
$request->Customer->Street2( $q->param('txtStreet2') );
$request->Customer->City( $q->param('txtCity') );
$request->Customer->State( $q->param('txtState') );
$request->Customer->PostalCode( $q->param('txtPostalcode') );
# Note: Country is Required Field When Create/Update a TokenCustomer
$request->Customer->Country( $q->param('txtCountry') );
$request->Customer->Email( $q->param('txtEmail') );
$request->Customer->Phone( $q->param('txtPhone') );
$request->Customer->Mobile( $q->param('txtMobile') );
$request->Customer->Comments("Some Comments Here");
$request->Customer->Fax("0131 208 0321");
$request->Customer->Url("http://www.yoursite.com");

$request->Customer->CardDetails->Number('4444333322221111');
$request->Customer->CardDetails->Name('Card Holder Name');
$request->Customer->CardDetails->ExpiryMonth('12');
$request->Customer->CardDetails->ExpiryYear('16');
$request->Customer->CardDetails->CVN('123');
# $request->Customer->CardDetails->StartMonth('11');
# and others like StartYear, IssueNumber

## Populate values for ShippingAddress Object.
## This values can be taken from a Form POST as well. Now is just some dummy data.
$request->ShippingAddress->FirstName("John");
$request->ShippingAddress->LastName("Doe");
$request->ShippingAddress->Street1("9/10 St Andrew");
$request->ShippingAddress->Street2(" Square");
$request->ShippingAddress->City("Edinburgh");
$request->ShippingAddress->State("");
$request->ShippingAddress->Country("gb");
$request->ShippingAddress->PostalCode("EH2 2AF");
$request->ShippingAddress->Email('sales@eway.co.uk');
$request->ShippingAddress->Phone("0131 208 0321");
# ShippingMethod, e.g. "LowCost", "International", "Military". Check the spec for available values.
$request->ShippingAddress->ShippingMethod("LowCost");

## Populate values for LineItems
my $item1 = Business::eWAY::RapidAPI::LineItem->new();
$item1->SKU("SKU1");
$item1->Description("Description1");
my $item2 = Business::eWAY::RapidAPI::LineItem->new();
$item2->SKU("SKU2");
$item2->Description("Description2");
$request->Items->LineItem([ $item1, $item2 ]);

$request->Payment->TotalAmount($q->param('txtAmount'));
$request->Payment->InvoiceNumber($q->param('txtInvoiceNumber'));
$request->Payment->InvoiceDescription( $q->param('txtInvoiceDescription') );
$request->Payment->InvoiceReference( $q->param('txtInvoiceReference') );
$request->Payment->CurrencyCode( $q->param('txtCurrencyCode') );

## Method for this request. eg. ProcessPayment, CreateTokenCustomer, UpdateTokenCustomer, TokenPayment
$request->method('ProcessPayment');

## Method for this request. e.g. Purchase, MOTO, Recurring
$request->TransactionType('Purchase');

my $result = $rapidapi->Transaction($request);

## Check if any error returns
if (defined( $result->{'Errors'} )) {
    $lblError = $rapidapi->ErrorsToString( $result->{'Errors'} );
} else {
    ## All good. go ahead
    print "Transaction done.\n";
    exit();
}

## $result is HASHREF contains
## TransactionID
## TransactionStatus etc.

AUTHOR

Fayland Lam <fayland@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Fayland Lam.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.