/** * React to DSP response triggered by {@link processPayment()}. */ public function processResponse() { if (preg_match('/^PXHOST/i', $_SERVER['HTTP_USER_AGENT'])) { $dpsDirectlyConnecting = 1; } // @todo more solid page detection (check if published) $page = DataObject::get_one('DPSHostedPaymentPage'); //$pxaccess = new PxAccess($PxAccess_Url, $PxAccess_Userid, $PxAccess_Key, $Mac_Key); $pxpay = new PxPay(DPSHostedPayment::$pxPay_Url, DPSHostedPayment::get_px_pay_userid(), DPSHostedPayment::get_px_pay_key()); $enc_hex = $_REQUEST["result"]; $rsp = $pxpay->getResponse($enc_hex); if (isset($dpsDirectlyConnecting) && $dpsDirectlyConnecting) { // DPS Service connecting directly $success = $rsp->getSuccess(); # =1 when request succeeds echo $success == '1' ? "success" : "failure"; } else { // Human visitor $paymentID = $rsp->getTxnId(); $SQL_paymentID = (int) $paymentID; $payment = DataObject::get_one('DPSHostedPayment', "`TxnID` = '{$SQL_paymentID}'"); if (!$payment) { // @todo more specific error messages $redirectURL = $page->Link() . '/error'; $this->redirect($redirectURL); } $success = $rsp->getSuccess(); if ($success == '1') { // @todo Use AmountSettlement for amount setting? $payment->TxnRef = $rsp->getDpsTxnRef(); $payment->Status = "Success"; $payment->AuthorizationCode = $rsp->getAuthCode(); $redirectURL = $page->Link() . '/success'; } else { $payment->Message = $rsp->getResponseText(); $payment->Status = "Failure"; $redirectURL = $page->Link() . '/error'; } $payment->write(); $this->redirect($redirectURL); } }
/** * React to DSP response triggered by {@link processPayment()}. */ public function processResponse() { if (preg_match('/^PXHOST/i', $_SERVER['HTTP_USER_AGENT'])) { $dpsDirectlyConnecting = 1; } //$pxaccess = new PxAccess($PxAccess_Url, $PxAccess_Userid, $PxAccess_Key, $Mac_Key); $pxpay = new PxPay(DPSHostedPayment::$pxPay_Url, DPSHostedPayment::get_px_pay_userid(), DPSHostedPayment::get_px_pay_key()); $enc_hex = $_REQUEST["result"]; $rsp = $pxpay->getResponse($enc_hex); if (isset($dpsDirectlyConnecting) && $dpsDirectlyConnecting) { // DPS Service connecting directly $success = $rsp->getSuccess(); # =1 when request succeeds echo $success == '1' ? "success" : "failure"; } else { // Human visitor $paymentID = $rsp->getTxnId(); $SQL_paymentID = (int) $paymentID; $payment = DataObject::get_one('DPSHostedPayment', "`TxnID` = '{$SQL_paymentID}'"); if (!$payment) { // @todo more specific error messages return array('RedirectLink' => AccountPage::find_link()); } $success = $rsp->getSuccess(); if ($success == '1') { // @todo Use AmountSettlement for amount setting? $payment->TxnRef = $rsp->getDpsTxnRef(); $payment->Status = "Success"; $payment->AuthorizationCode = $rsp->getAuthCode(); } else { $payment->Message = $rsp->getResponseText(); $payment->Status = "Failure"; } $payment->write(); //TODO: this needs to be generalised in Payment?? $redirectURL = $payment->PaidObject() && $payment->PaidObject()->Link() ? $payment->PaidObject()->Link() : 'home'; Director::redirect($redirectURL); return null; } }
/** * React to DSP response triggered by {@link processPayment()}. */ public function processResponse() { if (preg_match('/^PXHOST/i', $_SERVER['HTTP_USER_AGENT'])) { $dpsDirectlyConnecting = 1; } $pxpay = new PxPay(DPSHostedPayment::$pxPay_Url, DPSHostedPayment::get_px_pay_userid(), DPSHostedPayment::get_px_pay_key()); $enc_hex = $_REQUEST["result"]; $rsp = $pxpay->getResponse($enc_hex); if (isset($dpsDirectlyConnecting) && $dpsDirectlyConnecting) { // DPS Service connecting directly $paymentID = $rsp->getTxnId(); $SQL_paymentID = (int) $paymentID; $payment = DataObject::get_one('DPSHostedPayment', "`TxnID` = '{$SQL_paymentID}'"); if (!$payment) { echo "failure"; return; } $success = $rsp->getSuccess(); # =1 when request succeeds if ($success == '1') { $payment->TxnRef = $rsp->getDpsTxnRef(); $payment->Status = "Success"; $payment->AuthorizationCode = $rsp->getAuthCode(); echo "success"; } else { $payment->Message = $rsp->getResponseText(); $payment->Status = "Failure"; echo "failure"; } $payment->write(); $payment->redirectToOrder(); } else { // Human visitor $paymentID = $rsp->getTxnId(); $SQL_paymentID = (int) $paymentID; $payment = DataObject::get_one('DPSHostedPayment', "`TxnID` = '{$SQL_paymentID}'"); if (!$payment) { $payment->redirectToOrder(); return; } $success = $rsp->getSuccess(); if ($success == '1') { // @todo Use AmountSettlement for amount setting? $payment->TxnRef = $rsp->getDpsTxnRef(); $payment->Status = "Success"; $payment->AuthorizationCode = $rsp->getAuthCode(); } else { $payment->Message = $rsp->getResponseText(); $payment->Status = "Failure"; } $payment->write(); $payment->redirectToOrder(); } }