function psigate_refund($params) { global $remote_ip; $psi = new PsiGatePayment(); if ($params['testmode'] == "on") { $psi->setGatewayURL("https://dev.psigate.com:7989/Messenger/XMLMessenger"); } else { $psi->setGatewayURL("https://secure.psigate.com:7934/Messenger/XMLMessenger"); } $psi->setStoreID($params['storeid']); $psi->setPassPhrase($params['passphrase']); $psi->setOrderID($params['invoiceid']); $psi->setPaymentType("CC"); $psi->setCardAction("3"); $psi->setSubTotal($params['amount']); $psi_xml_error = !($psi->doPayment() == PSIGATE_TRANSACTION_OK); $desc = "Action => Refund\nClient => " . $params['clientdetails']['firstname'] . " " . $params['clientdetails']['lastname'] . "\n"; $desc .= "Transaction Time => " . $psi->myResultTrxnTransTime . "\n"; $desc .= "Order ID => " . $psi->myResultTrxnOrderID . "\n"; $desc .= "Approved => " . $psi->myResultTrxnApproved . "\n"; $desc .= "Return Code => " . $psi->myResultTrxnReturnCode . "\n"; $desc .= "Error Message => " . $psi->myResultTrxnErrMsg . "\n"; $desc .= "Total => " . $psi->myResultTrxnFullTotal . "\n"; $desc .= "Payment Type => " . $psi->myResultTrxnPaymentType . "\n"; $desc .= "Card Number => " . $psi->myResultTrxnCardNumber . "\n"; $desc .= "Expiry Month => " . $psi->myResultTrxnCardExpMonth . "\n"; $desc .= "Expiry Year => " . $psi->myResultTrxnCardExpYear . "\n"; $desc .= "Reference Number => " . $psi->myResultTrxnTransRefNumber . "\n"; $desc .= "IP Result => " . $psi->myResultTrxnIPResult . "\n"; $desc .= "IP Country => " . $psi->myResultTrxnIPCountry . "\n"; $desc .= "IP Region => " . $psi->myResultTrxnIPRegion . "\n"; $desc .= "IP City => " . $psi->myResultTrxnIPCity . "\n"; $desc .= "Error => " . $psi->myError . "\n"; $desc .= "Error Message => " . $psi->myErrorMessage . "\n"; if ($psi->myResultTrxnApproved == "APPROVED") { return array("status" => "success", "transid" => $psi->myResultTrxnTransRefNumber, "rawdata" => $desc); } if ($psi->myResultTrxnApproved == "DECLINED") { return array("status" => "declined", "rawdata" => $desc); } return array("status" => "error", "rawdata" => $desc); }