public function process($data) { //Construct the request $request = new PxPayRequest(); $request->setAmountInput($data['Amount']); $request->setCurrencyInput($data['Currency']); //Set PxPay properties if (isset($data['Reference'])) { $request->setMerchantReference($data['Reference']); } if (isset($data['EmailAddress'])) { $request->setEmailAddress($data['EmailAddress']); } $request->setUrlFail($this->cancelURL); $request->setUrlSuccess($this->returnURL); //Generate a unique identifier for the transaction $request->setTxnId(uniqid('ID')); $request->setTxnType('Purchase'); //Get encrypted URL from DPS to redirect the user to $request_string = $this->makeProcessRequest($request, $data); //Obtain output XML $response = new MifMessage($request_string); //Parse output XML $url = $response->get_element_text('URI'); $valid = $response->get_attribute('valid'); //If this is a fail or incomplete (cannot reach gateway) then mark payment accordingly and redirect to payment if ($valid && is_numeric($valid) && $valid == 1) { //Redirect to payment page Controller::curr()->redirect($url); } else { if (is_numeric($valid) && $valid == 0) { return new PaymentGateway_Failure(); } else { return new PaymentGateway_Incomplete(); } } }
/** * Executed in form submission *before* anything * goes out to DPS. */ public function processPayment($data, $form) { // generate a unique transaction ID $this->TxnID = DPSHostedPayment::generate_txn_id(); $this->write(); // generate request from thirdparty pxpayment classes $request = $this->prepareRequest($data); // decorate request (if necessary) $this->extend('prepareRequest', $request); // set currency $this->Amount->Currency = $request->getInputCurrency(); // submit payment request to get the URL for redirection $pxpay = new PxPay(self::$pxPay_Url, self::$pxPay_Userid, self::$pxPay_Key); $request_string = $pxpay->makeRequest($request); $response = new MifMessage($request_string); $url = $response->get_element_text("URI"); $valid = $response->get_attribute("valid"); // set status to pending if ($valid) { $this->Status = 'Pending'; $this->write(); } //provide iframe with payment gateway form in it if (self::$use_iframe) { return new Payment_Processing(array('Content' => "<iframe src =\"{$url}\" width=\"100%\" height=\"380\" frameborder=\"0\" name=\"payframe\"><a href=\"{$url}\">" . _t('DPSHostedPayment.CLICKHERE', "click here to pay") . "</a></iframe>")); } Director::redirect($url); return new Payment_Processing(); }
function redirect_form() { global $pxpay; $request = new PxPayRequest(); $http_host = getenv("HTTP_HOST"); $request_uri = getenv("SCRIPT_NAME"); $server_url = "http://{$http_host}"; #$script_url = "$server_url/$request_uri"; //using this code before PHP version 4.3.4 #$script_url = "$server_url$request_uri"; //Using this code after PHP version 4.3.4 $script_url = version_compare(PHP_VERSION, "4.3.4", ">=") ? "{$server_url}{$request_uri}" : "{$server_url}/{$request_uri}"; # the following variables are read from the form $Quantity = $_REQUEST["Quantity"]; $MerchantReference = $_REQUEST["Reference"]; $Address1 = $_REQUEST["Address1"]; $Address2 = $_REQUEST["Address2"]; $Address3 = $_REQUEST["Address3"]; #Calculate AmountInput $AmountInput = 19.95 * $Quantity; #Generate a unique identifier for the transaction $TxnId = uniqid("ID"); #Set PxPay properties $request->setMerchantReference($MerchantReference); $request->setAmountInput($AmountInput); $request->setTxnData1($Address1); $request->setTxnData2($Address2); $request->setTxnData3($Address3); $request->setTxnType("Purchase"); $request->setCurrencyInput("NZD"); $request->setEmailAddress("*****@*****.**"); $request->setUrlFail($script_url); # can be a dedicated failure page $request->setUrlSuccess($script_url); # can be a dedicated success page $request->setTxnId($TxnId); #The following properties are not used in this case # $request->setEnableAddBillCard($EnableAddBillCard); # $request->setBillingId($BillingId); # $request->setOpt($Opt); #Call makeRequest function to obtain input XML $request_string = $pxpay->makeRequest($request); #Obtain output XML $response = new MifMessage($request_string); #Parse output XML $url = $response->get_element_text("URI"); $valid = $response->get_attribute("valid"); #Redirect to payment page header("Location: " . $url); }
/** * Executed in form submission *before* anything * goes out to DPS. */ public function processPayment($data, $form) { // generate a unique transaction ID $this->TxnID = DPSHostedPayment::generate_txn_id(); $this->write(); // generate request from thirdparty pxpayment classes $request = $this->prepareRequest($data); // decorate request (if necessary) $this->extend('prepareRequest', $request); // set currency $this->Currency = $request->getInputCurrency(); // submit payment request to get the URL for redirection $pxpay = new PxPay(self::$pxPay_Url, self::$pxPay_Userid, self::$pxPay_Key); $request_string = $pxpay->makeRequest($request); $response = new MifMessage($request_string); $valid = $response->get_attribute("valid"); // set status to pending if ($valid) { $this->Status = 'Pending'; $this->write(); } // MifMessage was clobbering ampersands on some environments; SimpleXMLElement is more robust $xml = new SimpleXMLElement($request_string); $urls = $xml->xpath('//URI'); $url = $urls[0] . ''; header("Location: " . $url); die; }
function doDPSHostedPayment($inputs, $payment) { $request = new PxPayRequest(); foreach ($inputs as $element => $value) { $funcName = 'set' . $element; $request->{$funcName}($value); } // submit payment request to get the URL for redirection $pxpay = new PxPay(self::$pxPay_Url, self::$pxPay_Userid, self::$pxPay_Key); $request_string = $pxpay->makeRequest($request); $response = new MifMessage($request_string); $valid = $response->get_attribute("valid"); if ($valid) { // MifMessage was clobbering ampersands on some environments; SimpleXMLElement is more robust $xml = new SimpleXMLElement($request_string); $urls = $xml->xpath('//URI'); $url = $urls[0] . ''; DB::getConn()->transactionEnd(); if (self::$mode == "Unit_Test_Only") { return $url; } else { header("Location: " . $url); die; } } else { $payment->Message = "Invalid Request String"; $payment->write(); } }