PXPost Sample Code
PHP using OpenSSL
The Sample Code will not work without the following:
* openSSL extension for PHP (http://php.net/manual/en/book.openssl.php)
* SSL Certificate
* Development Account setup with DPS
If you dont have access to a Development account please click here to request it.
Standard Request Page
<head>
<title>PHP PXPost Example</title>
</head>
<?php
//error_reporting(0); //this is required to address bug in IIS
$formatedData =''; // result will be here
//form xml request
$XML_DATA='<Txn>
<PostUsername>[postUsername]</PostUsername>
<PostPassword>[postPassword]</PostPassword>
<CardHolderName>[cardHolderName]</CardHolderName>
<CardNumber>[cardNumber]</CardNumber>
<Amount>[amount]</Amount>
<DateExpiry>[dateExpiry]</DateExpiry>
<Cvc2>[cvc2]</Cvc2>
<InputCurrency>[inputCurrency]</InputCurrency>
<TxnType>[txnType]</TxnType>
<TxnId>[txnId]</TxnId>
<MerchantReference>[merchantReference]</MerchantReference>
</Txn>';
function initData($postUsername,$postPassword,$cardHolderName,
$cardNumber,$amount,$dateExpiry,$cvc2,$inputCurrency,
$txnType,$txnId,$merchantReference){
global $XML_DATA;
$message = $XML_DATA;
$message = str_replace('[postUsername]',$postUsername,$message);
$message = str_replace('[postPassword]',$postPassword,$message);
$message = str_replace('[cardHolderName]',$cardHolderName,$message);
$message = str_replace('[cardNumber]',$cardNumber,$message);
$message = str_replace('[amount]',$amount,$message);
$message = str_replace('[dateExpiry]',$dateExpiry,$message);
$message = str_replace('[cvc2]',$cvc2,$message);
$message = str_replace('[inputCurrency]',$inputCurrency,$message);
$message = str_replace('[txnType]',$txnType,$message);
$message = str_replace('[txnId]',$txnId,$message);
$message = str_replace('[merchantReference]',$merchantReference,$message);
return $message;
}
//parse xml response
function parse_xml($xml){
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
xml_parse($xml_parser, $xml, 1) ;
}
function startElement($parser, $tagName, $attrs){
global $formatedData;
$formatedData .=$tagName.': ';
}
function endElement($parser, $tagName){
}
function characterData($parser, $data){
global $formatedData;
$formatedData .=$data."</br>";
}
$data = initData('#Insert Username Here#','#Insert Password Here#','name','4111111111111111','1.01','1212',
'3456','NZD','Purchase','inv1278','reference');
//form post request
$message = "POST /pxpost.aspx HTTP/1.1\r\n".
"Host: sec.paymentexpress.com\r\n".
"Content-type: application/x-www-form-urlencoded\r\n".
"Content-length: ".strlen($data)."\r\n".
"Accept: */*\r\n".
"Connection: close\r\n\r\n".
$data."\r\n\r\n";
$fp = fsockopen('ssl://sec.paymentexpress.com',443,$errstr,$errnum,30) or die($errnum.$errstr);
//fwrite($fp,"POST /pxpost.aspx HTTP/1.1\r\n");
//fwrite($fp,"Host: sec.paymentexpress.com\r\n");
//fwrite( $fp,"Content-type: application/x-www-form-urlencoded\r\n" );
//fwrite($fp,"Content-length: ".strlen($data)."\r\n");
//fwrite( $fp,"Connection: close\r\n" );
//fwrite($fp,$data,"\r\n\r\n" );
//echo "still working";
fwrite($fp,$message);
fflush($fp);
$result = '';
{ while (!feof($fp)) { $result.=fread($fp, 128); }}
$start = strpos($result,'<Txn>');
$end = strpos($result,'</Txn>');
$result = substr($result,$start,$end-$start+6);
parse_xml($result);
echo $formatedData;
fclose($fp);
?>