";
$message .= "Your transaction was not successful."."
";
$message .= "Click here to go back to checkout page.";
$_SESSION['wpsc_checkout_misc_error_messages'][] = $message;
header("Location:".get_option('transact_url').$seperator."eway=1&result=".$sessionid."&message=1");
}else{
$wpdb->query("UPDATE `".WPSC_TABLE_PURCHASE_LOGS."` SET `processed`='2' WHERE `sessionid`='".$sessionid."' LIMIT 1");
header("Location: ".$transact_url.$seperator."sessionid=".$sessionid);
//transaction_results($sessionid, true);
}
exit();
}
function submit_linkpoint() {
update_option('linkpoint_store_number', $_POST['linkpoint_store_number']);
update_option('linkpoint_test', $_POST['linkpoint_test']);
return true;
}
function form_linkpoint() {
if (get_option('linkpoint_test')==1){
$linkpoint_test1 = "checked='checked'";
} else {
$linkpoint_test2 = "checked='checked'";
}
return "
Store Number
Test Enviroment
Yes
No
";
}
/* lphp.php LINKPOINT PHP MODULE */
/* A php interlocutor CLASS for
LinkPoint: LINKPOINT LSGS API using
libcurl, liblphp.so and liblpssl.so
v3.0.005 20 Aug. 2003 smoffet */
# Copyright 2003 LinkPoint International, Inc. All Rights Reserved.
#
# This software is the proprietary information of LinkPoint International, Inc.
# Use is subject to license terms.
### YOU REALLY DO NOT NEED TO EDIT THIS FILE! ###
class lphp {
var $debugging;
###########################################
#
# F U N C T I O N p r o c e s s ( )
#
# process a hash table or XML string
# using LIBLPHP.SO and LIBLPSSL.SO
#
###########################################
function process($data) {
$using_xml = 0;
$webspace = 1;
if (isset($data["webspace"])) {
if ($data["webspace"] == "false") // if explicitly set to false, don't use html output
$webspace = 0;
}
if ( isset($data["debugging"]) || isset($data["debug"]) ) {
if ($data["debugging"] == "true" || $data["debug"] == "true" ) {
$this->debugging = 1;
# print out incoming hash
if ($webspace) {
echo "at process, incoming data: ";
while (list($key, $value) = each($data))
echo htmlspecialchars($key) . " = " . htmlspecialchars($value) . " \n";
} else { // don't use html output
echo "at process, incoming data: \n";
while (list($key, $value) = each($data))
echo "$key = $value\n";
}
reset($data);
}
}
if (isset($data["xml"])){
$using_xml = 1;
$xml = $data["xml"];
} else {
// otherwise convert incoming hash to XML string
$xml = $this->buildXML($data);
}
// then set up transaction variables
$key = $data["keyfile"];
$host = $data["host"];
$port = $data["port"];
# FOR PERFORMANCE, Use the 'extensions' statement in your php.ini to load
# this library at PHP startup, then comment out the next seven lines
// load library
if (!extension_loaded('liblphp')) {
if (!dl('liblphp.so')) {
exit("cannot load liblphp.so, bye\n");
}
}
if ($this->debugging) {
if ($webspace)
echo " sending xml string: " . htmlspecialchars($xml) . "
";
else
echo "\nsending xml string:\n$xml\n\n";
}
// send transaction to LSGS
$retstg = send_stg($xml, $key, $host, $port);
if (strlen($retstg) < 4)
exit ("cannot connect to lsgs, exiting");
if ($this->debugging) {
if ($this->webspace) // we're web space
echo " server responds: " . htmlspecialchars($retstg) . "
";
else // not html output
echo "\nserver responds:\n $retstg\n\n";
}
if ($using_xml != 1) {
// convert xml response back to hash
$retarr = $this->decodeXML($retstg);
// and send it back to caller
return ($retarr);
} else {
// send server response back
return $retstg;
}
}
#####################################################
#
# F U N C T I O N c u r l _ p r o c e s s ( )
#
# process hash table or xml string table using
# curl, either with PHP built-in curl methods
# or binary executable curl
#
#####################################################
function curl_process($data) {
$using_xml = 0;
$webspace = 1;
if (isset($data["webspace"])) {
if ($data["webspace"] == "false") // if explicitly set to false, don't use html output
$webspace = 0;
}
if (isset($data["debugging"]) || isset($data["debug"]) ) {
if ($data["debugging"] == "true" || $data["debug"] == "true" ) {
$this->debugging = 1;
# print out incoming hash
if ($webspace) {
echo "at curl_process, incoming data: ";
while (list($key, $value) = each($data))
echo htmlspecialchars($key) . " = " . htmlspecialchars($value) . " \n";
} else {
echo "at curl_process, incoming data: \n";
while (list($key, $value) = each($data))
echo "$key = $value\n";
}
reset($data);
}
}
if (isset($data["xml"])) {
$using_xml = 1;
$xml = $data["xml"];
} else {
// otherwise convert incoming hash to XML string
$xml = $this->buildXML($data);
}
if ($this->debugging) {
if ($webspace)
echo " sending xml string: " . htmlspecialchars($xml) . "
";
else
echo "\nsending xml string:\n$xml\n\n";
}
// set up transaction variables
$key = $data["keyfile"];
$port = $data["port"];
$host = "https://".$data["host"].":".$port."/LSGSXML";
if (isset($data["cbin"])) {
if ($data["cbin"] == "true") {
if (isset($data["cpath"]))
$cpath = $data["cpath"];
else {
if (getenv("OS") == "Windows_NT")
$cpath = "c:\\curl\\curl.exe";
else
$cpath = "/usr/bin/curl";
}
// look for $cargs variable, otherwise use default curl arguments
if (isset($data["cargs"]))
$args = $data["cargs"];
else
$args = "-m 300 -s -S"; // default curl args; 5 min. timeout
# TRANSACT #
if (getenv("OS") == "Windows_NT") {
if ($this->debugging)
$result = exec ("$cpath -v -d \"$xml\" -E $key -k $host", $retarr, $retnum);
else
$result = exec ("$cpath -d \"$xml\" -E $key -k $host", $retarr, $retnum);
} else { //*nix string
if ($this->debugging)
$result = exec ("'$cpath' $args -v -E '$key' -d '$xml' '$host'", $retarr, $retnum);
else
$result = exec ("'$cpath' $args -E '$key' -d '$xml' '$host'", $retarr, $retnum);
}
# EVALUATE RESPONSE #
if (strlen($result) < 2) {
$result = "FAILURECould not connect.";
return $result;
}
if ($this->debugging) {
if ($this->webspace)
echo " server responds: " . htmlspecialchars($result) . "
";
else // non html output
echo "\nserver responds:\n $result\n\n";
}
if ($using_xml == 1) {
// return xml string straight from server
return ($result);
} else {
// convert xml response back to hash
$retarr = $this->decodeXML($result);
// and send it back to caller. Done.
return ($retarr);
}
}
} else { // using BUILT-IN PHP curl methods
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL,$host);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $xml);
if (is_file($key)) {
curl_setopt ($ch, CURLOPT_SSLCERT, $key);
}
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
if ($this->debugging)
curl_setopt ($ch, CURLOPT_VERBOSE, 1);
# use curl to send the xml SSL string
$result = curl_exec ($ch);
curl_close($ch);
if (strlen($result) < 2) {
$result = "FAILURECould not connect.";
return $result;
}
if ($this->debugging) {
if ($webspace) // html-friendly output
echo " server responds: " . htmlspecialchars($result) . "
";
else
echo "\nserver responds:\n $result\n\n";
}
if ($using_xml) {
# send xml response back
return $result;
} else {
#convert xml response to hash
$retarr = $this->decodeXML($result);
# and send it back
return ($retarr);
}
}
}
#############################################
#
# F U N C T I O N d e c o d e X M L ( )
#
# converts the LSGS response xml string
# to a hash of name-value pairs
#
#############################################
function decodeXML($xmlstg) {
preg_match_all ("/<(.*?)>(.*?)\", $xmlstg, $out, PREG_SET_ORDER);
$n = 0;
while (isset($out[$n])) {
$retarr[$out[$n][1]] = strip_tags($out[$n][0]);
$n++;
}
return $retarr;
}
############################################
#
# F U N C T I O N b u i l d X M L ( )
#
# converts a hash of name-value pairs
# to the correct XML format for LSGS
#
############################################
function buildXML($pdata)
{
// while (list($key, $value) = each($pdata))
// echo htmlspecialchars($key) . " = " . htmlspecialchars($value) . " \n";
### ORDEROPTIONS NODE ###
$xml = "";
if (isset($pdata["ordertype"]))
$xml .= "" . $pdata["ordertype"] . "";
if (isset($pdata["result"]))
$xml .= "" . $pdata["result"] . "";
$xml .= "";
### CREDITCARD NODE ###
$xml .= "";
if (isset($pdata["cardnumber"]))
$xml .= "" . $pdata["cardnumber"] . "";
if (isset($pdata["cardexpmonth"]))
$xml .= "" . $pdata["cardexpmonth"] . "";
if (isset($pdata["cardexpyear"]))
$xml .= "" . $pdata["cardexpyear"] . "";
if (isset($pdata["cvmvalue"]))
$xml .= "" . $pdata["cvmvalue"] . "";
if (isset($pdata["cvmindicator"]))
$xml .= "" . $pdata["cvmindicator"] . "";
if (isset($pdata["track"]))
$xml .= "";
$xml .= "";
### BILLING NODE ###
$xml .= "";
if (isset($pdata["name"]))
$xml .= "" . $pdata["name"] . "";
if (isset($pdata["company"]))
$xml .= "" . $pdata["company"] . "";
if (isset($pdata["address1"]))
$xml .= "" . $pdata["address1"] . "";
elseif (isset($pdata["address"]))
$xml .= "" . $pdata["address"] . "";
if (isset($pdata["address2"]))
$xml .= "" . $pdata["address2"] . "";
if (isset($pdata["city"]))
$xml .= "" . $pdata["city"] . "";
if (isset($pdata["state"]))
$xml .= "" . $pdata["state"] . "";
if (isset($pdata["zip"]))
$xml .= "" . $pdata["zip"] . "";
if (isset($pdata["country"]))
$xml .= "" . $pdata["country"] . "";
if (isset($pdata["userid"]))
$xml .= "" . $pdata["userid"] . "";
if (isset($pdata["email"]))
$xml .= "" . $pdata["email"] . "";
if (isset($pdata["phone"]))
$xml .= "" . $pdata["phone"] . "";
if (isset($pdata["fax"]))
$xml .= "" . $pdata["fax"] . "";
if (isset($pdata["addrnum"]))
$xml .= "" . $pdata["addrnum"] . "";
$xml .= "";
## SHIPPING NODE ##
$xml .= "";
if (isset($pdata["sname"]))
$xml .= "" . $pdata["sname"] . "";
if (isset($pdata["saddress1"]))
$xml .= "" . $pdata["saddress1"] . "";
if (isset($pdata["saddress2"]))
$xml .= "" . $pdata["saddress2"] . "";
if (isset($pdata["scity"]))
$xml .= "" . $pdata["scity"] . "";
if (isset($pdata["sstate"]))
$xml .= "" . $pdata["sstate"] . "";
elseif (isset($pdata["state"]))
$xml .= "" . $pdata["sstate"] . "";
if (isset($pdata["szip"]))
$xml .= "" . $pdata["szip"] . "";
elseif (isset($pdata["sip"]))
$xml .= "" . $pdata["zip"] . "";
if (isset($pdata["scountry"]))
$xml .= "" . $pdata["scountry"] . "";
if (isset($pdata["scarrier"]))
$xml .= "" . $pdata["scarrier"] . "";
if (isset($pdata["sitems"]))
$xml .= "" . $pdata["sitems"] . "";
if (isset($pdata["sweight"]))
$xml .= "" . $pdata["sweight"] . "";
if (isset($pdata["stotal"]))
$xml .= "" . $pdata["stotal"] . "";
$xml .= "";
### TRANSACTIONDETAILS NODE ###
$xml .= "";
if (isset($pdata["oid"]))
$xml .= "" . $pdata["oid"] . "";
if (isset($pdata["ponumber"]))
$xml .= "" . $pdata["ponumber"] . "";
if (isset($pdata["recurring"]))
$xml .= "" . $pdata["recurring"] . "";
if (isset($pdata["taxexempt"]))
$xml .= "" . $pdata["taxexempt"] . "";
if (isset($pdata["terminaltype"]))
$xml .= "" . $pdata["terminaltype"] . "";
if (isset($pdata["ip"]))
$xml .= "" . $pdata["ip"] . "";
if (isset($pdata["reference_number"]))
$xml .= "" . $pdata["reference_number"] . "";
if (isset($pdata["transactionorigin"]))
$xml .= "" . $pdata["transactionorigin"] . "";
if (isset($pdata["tdate"]))
$xml .= "" . $pdata["tdate"] . "";
$xml .= "";
### MERCHANTINFO NODE ###
$xml .= "";
if (isset($pdata["configfile"]))
$xml .= "" . $pdata["configfile"] . "";
if (isset($pdata["keyfile"]))
$xml .= "" . $pdata["keyfile"] . "";
if (isset($pdata["host"]))
$xml .= "" . $pdata["host"] . "";
if (isset($pdata["port"]))
$xml .= "" . $pdata["port"] . "";
if (isset($pdata["appname"]))
$xml .= "" . $pdata["appname"] . "";
$xml .= "";
### PAYMENT NODE ###
$xml .= "";
if (isset($pdata["chargetotal"]))
$xml .= "" . $pdata["chargetotal"] . "";
if (isset($pdata["tax"]))
$xml .= "" . $pdata["tax"] . "";
if (isset($pdata["vattax"]))
$xml .= "" . $pdata["vattax"] . "";
if (isset($pdata["shipping"]))
$xml .= "" . $pdata["shipping"] . "";
if (isset($pdata["subtotal"]))
$xml .= "" . $pdata["subtotal"] . "";
$xml .= "";
### CHECK NODE ###
if (isset($pdata["voidcheck"]))
{
$xml .= "1";
}
elseif (isset($pdata["routing"]))
{
$xml .= "";
$xml .= "" . $pdata["routing"] . "";
if (isset($pdata["account"]))
$xml .= "" . $pdata["account"] . "";
if (isset($pdata["bankname"]))
$xml .= "" . $pdata["bankname"] . "";
if (isset($pdata["bankstate"]))
$xml .= "" . $pdata["bankstate"] . "";
if (isset($pdata["ssn"]))
$xml .= "" . $pdata["ssn"] . "";
if (isset($pdata["dl"]))
$xml .= "
" . $pdata["dl"] . "
";
if (isset($pdata["dlstate"]))
$xml .= "" . $pdata["dlstate"] . "";
if (isset($pdata["checknumber"]))
$xml .= "" . $pdata["checknumber"] . "";
if (isset($pdata["accounttype"]))
$xml .= "" . $pdata["accounttype"] . "";
$xml .= "";
}
### PERIODIC NODE ###
if (isset($pdata["startdate"]))
{
$xml .= "";
$xml .= "" . $pdata["startdate"] . "";
if (isset($pdata["installments"]))
$xml .= "" . $pdata["installments"] . "";
if (isset($pdata["threshold"]))
$xml .= "" . $pdata["threshold"] . "";
if (isset($pdata["periodicity"]))
$xml .= "" . $pdata["periodicity"] . "";
if (isset($pdata["pbcomments"]))
$xml .= "" . $pdata["pbcomments"] . "";
if (isset($pdata["action"]))
$xml .= "" . $pdata["action"] . "";
$xml .= "";
}
### NOTES NODE ###
if (isset($pdata["comments"]) || isset($pdata["referred"]))
{
$xml .= "";
if (isset($pdata["comments"]))
$xml .= "" . $pdata["comments"] . "";
if (isset($pdata["referred"]))
$xml .= "" . $pdata["referred"] . "";
$xml .= "";
}
### ITEMS AND OPTIONS NODES ###
if ($this->debugging) // make it easy to see
{ // LSGS doesn't mind whitespace
reset($pdata);
while (list ($key, $val) = each ($pdata))
{
if (is_array($val))
{
$otag = 0;
$ostag = 0;
$items_array = $val;
$xml .= "\n\n";
while(list($key1, $val1) = each ($items_array))
{
$xml .= "\t\n";
while (list($key2, $val2) = each ($val1))
{
if (!is_array($val2))
$xml .= "\t\t<$key2>$val2$key2>\n";
else
{
if (!$ostag)
{
$xml .= "\t\t\n";
$ostag = 1;
}
$xml .= "\t\t\t\n";
$otag = 0;
}
}
if ($ostag)
{
$xml .= "\t\t\n";
$ostag = 0;
}
$xml .= "\t\n";
}
$xml .= "\n";
}
}
}
else // !debugging
{
while (list ($key, $val) = each ($pdata))
{
if (is_array($val))
{
$otag = 0;
$ostag = 0;
$items_array = $val;
$xml .= "";
while(list($key1, $val1) = each ($items_array))
{
$xml .= "";
while (list($key2, $val2) = each ($val1))
{
if (!is_array($val2))
$xml .= "<$key2>$val2$key2>";
else
{
if (!$ostag)
{
$xml .= "";
$ostag = 1;
}
$xml .= "";
$otag = 0;
}
}
if ($ostag)
{
$xml .= "";
$ostag = 0;
}
$xml .= "";
}
$xml .= "";
}
}
}
$xml .= "";
return $xml;
}
}
?>