NAME
Business::PxPay - PX Pay Interface for www.paymentexpress.com
VERSION
version 0.04
SYNOPSIS
use Business::PxPay;
my $pxpay = Business::PxPay->new(
userid => 'TestAccount',
key => 'c9fff215b9e2add78d252b78e214880b46a906e73190a380483c1c29acab4157'
);
# when submit the cart order
if ( $submit_order ) {
my $rtn = $pxpay->request($args); # $args from CGI params
if ( exists $rtn->{valid} and $rtn->{valid} == 1 ) {
print $q->redirect( $rtn->{URI} );
} else {
die Dumper(\$rtn);
}
}
# when user returns back from pxpal
elsif ( $in_return_or_cancel_page or $params->{result} ) {
my $rtn = $pxpay->result($params->{result});
if ( exists $rtn->{valid} and $rtn->{valid} == 1 ) {
print "Transaction Success!\n";
} else {
print "Transaction Failed!\n";
}
}
DESCRIPTION
PX Pay - Payment Express
new
my $pxpay = Business::PxPay->new(
userid => $user,
key => $key
);
* "userid" (required)
* "key" (required)
PxPayUserId & PxPayKey
* "ua"
* "ua_args"
By default, we use LWP::UserAgent->new as the UserAgent. you can
pass "ua" or "ua_args" to use a different one.
* "url"
my $pxpay = Business::PxPay->new(
userid => $user,
key => $key,
url => 'https://sec2.paymentexpress.com/pxpay/pxaccess.aspx', # to test?
);
The URL is 'https://www.paymentexpress.com/pxpay/pxaccess.aspx' by
default.
Arguments
All those arguments can be passed into Business::PxPay->new() or pass
into $pxpay->request later
{
TxnType => 'Purchase',
Amount => 10.9,
UrlFail => 'http://test.com',
UrlSuccess => 'http://example.com',
MerchantReference => 'Test Transaction',
EmailAddress => 'test@example.com',
TxnData1 => 'test=A',
TxnData2 => 'data2=B',
TxnData3 => 'data3=C',
};
* "Amount" (required)
Amount value in d.cc format
* "Currency" (required)
* "UrlFail" (required)
URL of the merchant transaction failure page. No parameters ("&" or
"?") are permitted.
* "UrlSuccess" (required)
URL of the merchant transaction success page. No parameters ("&" or
"?") are permitted.
* "TxnType" (required)
"Auth" or "Purchase"
* "MerchantReference" (required)
Reference field to appear on transaction reports
* "BillingId"
Optional identifier when adding a card for recurring billing
* "EmailAddress"
Optional email address
* "EnableAddBillCard"
Required when adding a card to the DPS system for recurring billing.
Set element to "1" for true
* "TxnId"
A value that uniquely identifies the transaction
* "TxnData1"
* "TxnData2"
* "TxnData3"
Optional free text
* "Opt"
Optional additional parameter
request
my $xml = $pxpay->request_xml($args);
my $rtn = $pxpay->request($args);
request and parse the response XML into HASHREF. sample:
$VAR1 = \{
'URI' => 'https://sec2.paymentexpress.com/pxpay/pxpay.aspx?userid=
TestAccount&request=v51flwn7rvSNcbY86uRMdJ74XB2gHd8ZY-WHqyEYoPm9xd1ROXX00pXYkkuk
dleLlS402E65EjOSCkrqvmAsZUWRCck8RkmIJcRLvG0KZLi7PQRBfpIQ0wzKwdHGKvBCpqhRH6Tx-w93
MRYsP0ThOK4btgTneR_hGEk0supyLeE1taNWCkyFj8KX7rzZ9ncdWRlmciNBsiV4zX4DQ_7Poi9qiblI
5o0Gm49yb90kUlUtH1hrV3ulzidQbn0CcQKhHFKGX8IVMXiAtVN29r_Cgdzc7dOrwOxY-LBY2h4Or5GQ
hJHB96kjBziu3GyGBvaGfsosNodT3-wyM29A5M-Z62ITkno6JUA6H4',
'valid' => '1'
};
Usually you need redirect to the $rtn->{URI} when valid is 1
result
my $xml = $pxpay->result_xml($ResponseCode);
my $rtn = $pxpay->result($ResponseCode);
if ( exists $rtn->{valid} and $rtn->{valid} == 1 ) {
print "Transaction Success!\n";
} else {
print "Transaction Failed!\n";
}
PxPay will POST to your "UrlSuccess" (or "UrlFail") when you finish the
transaction (or click Cancel button). the POST would contain a param
result which you can request to get the transaction status.
TIPS
I need params in "UrlSuccess"
For example, you want your UrlSuccess to be
'http://mysite.com/cgi-bin/cart.cgi?cart_id=ABC'.
you need write the request like:
my $rtn = $pxpay->request(
# others
UrlSuccess => 'http://mysite.com/cgi-bin/cart.cgi',
TxnData1 => 'ABC',
);
and you can get the "TxnData1" in
my $rtn = $pxpay->result($ResponseCode);
my $cart_id = $rtn->{TxnData1}
AUTHOR
Fayland Lam
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 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.