From e6f47c57bd0cd506cf02f5fe6cd9e7332b7dfb72 Mon Sep 17 00:00:00 2001 From: bsevgin Date: Thu, 9 Apr 2020 22:10:28 +0300 Subject: [PATCH 1/2] =?UTF-8?q?Genel=20bugfix=20+=20kullan=C4=B1m=C4=B1=20?= =?UTF-8?q?kolayla=C5=9Ft=C4=B1racak=20d=C3=BCzenlemeler=20yap=C4=B1ld?= =?UTF-8?q?=C4=B1=20+=20.gitignore=20eklendi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + GarantiPos.php | 559 +++++++++++++++++++++++++------------------------ README.md | 93 ++++---- example.php | 95 ++++----- 4 files changed, 375 insertions(+), 375 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d0a5eed --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.idea +.DS_Store +composer.lock \ No newline at end of file diff --git a/GarantiPos.php b/GarantiPos.php index e6abbcc..78a107b 100644 --- a/GarantiPos.php +++ b/GarantiPos.php @@ -8,40 +8,41 @@ class GarantiPos { - //Buraya pos bilgileri girilecek(example.php'de buralar set ediliyor) >>>>> - public $debugMode = false; - public $debugUrlUse = false; - public $version = "v0.01"; - public $mode = "PROD"; //Test ortamı "TEST", gerçek ortam için "PROD" - public $terminalMerchantID = ""; //Üye işyeri numarası - public $terminalID = ""; //Terminal numarası - public $provUserID = ""; //Terminal prov kullanıcı adı - public $provUserPassword = ""; //Terminal prov kullanıcı şifresi - public $garantiPayProvUserID = ""; //GarantiPay için prov kullanıcı adı - public $garantiPayProvUserPassword = ""; //GarantiPay için prov kullanıcı şifresi - public $storeKey = ""; //24byte hex 3D secure anahtarı - public $successUrl = "?action=success"; //3D başarıyla sonuçlandığında yönlenecek sayfa - public $errorUrl = "?action=error"; //3D başarısız olduğunda yönlenecek sayfa - //<<<<< Buraya pos bilgileri girilecek + public $debugMode = false; + public $debugUrlUse = false; + public $version = "v0.01"; + public $mode = "TEST"; // Test ortamı "TEST", gerçek ortam için "PROD" + public $terminalMerchantID = ""; // Üye işyeri numarası + public $terminalID = ""; // Terminal numarası + public $provUserID = ""; // Terminal prov kullanıcı adı + public $provUserPassword = ""; // Terminal prov kullanıcı şifresi + public $garantiPayProvUserID = ""; // GarantiPay için prov kullanıcı adı + public $garantiPayProvUserPassword = ""; // GarantiPay için prov kullanıcı şifresi + public $storeKey = ""; // 24byte hex 3D secure anahtarı + public $successUrl = "?action=success"; // 3D başarıyla sonuçlandığında yönlenecek sayfa + public $errorUrl = "?action=error"; // 3D başarısız olduğunda yönlenecek sayfa + public $paymentType = "creditcard"; // Ödeme tipi - kredi kartı için: "creditcard", GarantiPay için: "garantipay" public $terminalID_; - public $paymentUrl = "https://sanalposprov.garanti.com.tr/servlet/gt3dengine"; - public $debugPaymentUrl = "https://eticaret.garanti.com.tr/destek/postback.aspx"; - public $provisionUrl = "https://sanalposprov.garanti.com.tr/VPServlet"; //Provizyon için xml'in post edileceği adres - public $currencyCode = "949"; //TRY=949, USD=840, EUR=978, GBP=826, JPY=392 - public $lang = "tr"; - public $paymentRefreshTime = "0"; //Ödeme alındıktan bekletilecek süre - public $timeOutPeriod = "60"; - public $addCampaignInstallment = "N"; - public $totalInstallamentCount = "0"; + public $paymentUrl = "https://sanalposprov.garanti.com.tr/servlet/gt3dengine"; + public $paymentTestUrl = "https://sanalposprovtest.garanti.com.tr/servlet/gt3dengine"; + public $debugPaymentUrl = "https://eticaret.garanti.com.tr/destek/postback.aspx"; + public $provisionUrl = "https://sanalposprov.garanti.com.tr/VPServlet"; // Provizyon için xml'in post edileceği adres + public $provisionTestUrl = "https://sanalposprovtest.garanti.com.tr/VPServlet"; // Provizyon için xml'in post edileceği adres + public $currencyCode = "949"; // TRY=949, USD=840, EUR=978, GBP=826, JPY=392 + public $lang = "tr"; + public $paymentRefreshTime = "0"; // Ödeme alındıktan bekletilecek süre + public $timeOutPeriod = "60"; + public $addCampaignInstallment = "N"; + public $totalInstallamentCount = "0"; public $installmentOnlyForCommercialCard = "N"; - //GarantiPay tanımlamalar - public $useGarantipay = "Y"; //GarantiPay kullanımı: Y/N - public $useBnsuseflag = "Y"; //Bonus kullanımı: Y/N - public $useFbbuseflag = "Y"; //Fbb kullanımı: Y/N - public $useChequeuseflag = "N"; //Çek kullanımı: Y/N - public $useMileuseflag = "N"; //Mile kullanımı: Y/N + // GarantiPay tanımlamalar + public $useGarantipay = "Y"; // GarantiPay kullanımı: Y/N + public $useBnsuseflag = "Y"; // Bonus kullanımı: Y/N + public $useFbbuseflag = "Y"; // Fbb kullanımı: Y/N + public $useChequeuseflag = "N"; // Çek kullanımı: Y/N + public $useMileuseflag = "N"; // Mile kullanımı: Y/N public $companyName; public $orderNo; @@ -56,8 +57,12 @@ class GarantiPos public $customerEmail; public $orderAddress; - //Bankadan dönen hata kodları ve mesajları - public $mdStatuses = [ + /** + * Bankadan dönen hata kodları ve mesajları + * + * @var array + */ + public $mdStatuses = array( 0 => "Doğrulama başarısız, 3-D Secure imzası geçersiz", 1 => "Tam doğrulama", 2 => "Kart sahibi banka veya kart 3D-Secure üyesi değil", @@ -67,30 +72,50 @@ class GarantiPos 7 => "Sistem hatası", 8 => "Bilinmeyen kart numarası", 9 => "Üye işyeri 3D-Secure üyesi değil", - ]; + ); /** - * Ödeme işlemleri için gerekli sipariş ve ödeme bilgileri setleniyor + * GarantiPos constructor. + */ + public function __construct() + { + } + + /** + * Ödeme işlemi için tanımlar set ediliyor * * @param $params */ - public function __construct($params) + public function setParams($params) { - $this->companyName = $params['companyName']; - $this->orderNo = $params['orderNo']; //Her işlemde yeni sipariş numarası gönderilmeli - $this->amount = str_replace([",","."], "", $params['amount']); //İşlem Tutarı 1 TL için 1.00 gönderilmeli - $this->installmentCount = $params['installmentCount']>1 ? $params['installmentCount'] : ""; //Taksit yapılmayacaksa boş gönderilmeli - $this->currencyCode = $params['currencyCode'] ? $params['currencyCode'] : $this->currencyCode; - $this->customerIP = $params['customerIP']; - $this->customerEmail = $params['customerEmail']; - $this->cardName = $params['cardName']; - $this->cardNumber = $params['cardNumber']; + $this->mode = $params['mode']; + $this->terminalMerchantID = $params['merchantID']; + $this->terminalID = $params['terminalID']; + $this->terminalID_ = "0" . $params['terminalID']; + $this->provUserID = $params['provUserID']; + $this->provUserPassword = $params['provUserPassword']; + $this->garantiPayProvUserID = $params['garantiPayProvUserID']; + $this->garantiPayProvUserPassword = $params['garantiPayProvUserPassword']; + $this->storeKey = $params['storeKey']; + $this->successUrl = $params['successUrl']; + $this->errorUrl = $params['errorUrl']; + $this->paymentType = $params['paymentType']; + + $this->companyName = $params['companyName']; + $this->orderNo = $params['orderNo']; // Her işlemde yeni sipariş numarası gönderilmeli + $this->amount = str_replace(array(",", "."), "", $params['amount']); // İşlem tutarı 1 TL için 1.00 gönderilmeli + $this->installmentCount = $params['installmentCount'] > 1 ? $params['installmentCount'] : ""; // Taksit yapılmayacaksa boş gönderilmeli + $this->currencyCode = $params['currencyCode'] ? $params['currencyCode'] : $this->currencyCode; + $this->customerIP = $params['customerIP']; + $this->customerEmail = $params['customerEmail']; + $this->cardName = $params['cardName']; + $this->cardNumber = $params['cardNumber']; $this->cardExpiredMonth = $params['cardExpiredMonth']; - $this->cardExpiredYear = $params['cardExpiredYear']; - $this->cardCVV = $params['cardCvv']; + $this->cardExpiredYear = $params['cardExpiredYear']; + $this->cardCVV = $params['cardCvv']; - //Fatura bilgileri gönderildiğinde ekleniyor - if(!empty($params['orderAddresses'])){ + // Fatura bilgileri gönderildiğinde ekleniyor + if (!empty($params['orderAddresses'])) { $this->orderAddresses = $params['orderAddresses']; } } @@ -98,34 +123,32 @@ public function __construct($params) /** * Kredi kartı ile ödeme için buraya istek yapılacak */ - public function pay($type="creditcard") + public function pay() { - if($type=="creditcard"){ - $params = [ - "secure3dsecuritylevel" => "3D", - "txntype" => "sales", - "cardname" => $this->cardName, - "cardnumber" => $this->cardNumber, - "cardexpiredatemonth" => $this->cardExpiredMonth, - "cardexpiredateyear" => $this->cardExpiredYear, - "cardcvv2" => $this->cardCVV, - "refreshtime" => $this->paymentRefreshTime, - ]; - } - elseif($type=="garantipay"){ - $this->provUserID = $this->garantiPayProvUserID; + $params = array( + 'refreshtime' => $this->paymentRefreshTime, + 'paymenttype' => $this->paymentType + ); + if ($this->paymentType == "creditcard") { + $params['secure3dsecuritylevel'] = "3D"; + $params['txntype'] = "sales"; + $params['cardname'] = $this->cardName; + $params['cardnumber'] = $this->cardNumber; + $params['cardexpiredatemonth'] = $this->cardExpiredMonth; + $params['cardexpiredateyear'] = $this->cardExpiredYear; + $params['cardcvv2'] = $this->cardCVV; + } elseif ($this->paymentType == "garantipay") { + $this->provUserID = $this->garantiPayProvUserID; $this->provUserPassword = $this->garantiPayProvUserPassword; - $params = [ - "secure3dsecuritylevel" => "CUSTOM_PAY", - "txntype" => "gpdatarequest", - "txnsubtype" => "sales", - "garantipay" => $this->useGarantipay, - "bnsuseflag" => $this->useBnsuseflag, - "fbbuseflag" => $this->useFbbuseflag, - "chequeuseflag" => $this->useChequeuseflag, - "mileuseflag" => $this->useMileuseflag, - "refreshtime" => $this->paymentRefreshTime, - ]; + + $params['secure3dsecuritylevel'] = "CUSTOM_PAY"; + $params['txntype'] = "gpdatarequest"; + $params['txnsubtype'] = "sales"; + $params['garantipay'] = $this->useGarantipay; + $params['bnsuseflag'] = $this->useBnsuseflag; + $params['fbbuseflag'] = $this->useFbbuseflag; + $params['chequeuseflag'] = $this->useChequeuseflag; + $params['mileuseflag'] = $this->useMileuseflag; } $this->redirect_for_payment($params); @@ -135,192 +158,197 @@ public function pay($type="creditcard") * Bankadan dönen cevap success ise burası çağrılacak * * @param string $type - * - * @return bool|mixed + * @param string $action + * @return array */ - public function callback($action="", $type="creditcard") + public function callback($action = "") { - if($type=="creditcard"){ - return $this->creditcard_callback($action); + $postParams = $_POST; + + if ($this->debugMode) { + echo '
' . var_export($postParams, true) . '
'; } - elseif($type=="garantipay"){ - return $this->garantipay_callback(); + + $result = array(); + if ($this->paymentType == "creditcard") { + $result = $this->creditcard_callback($postParams, $action); + } elseif ($this->paymentType == "garantipay") { + $result = $this->garantipay_callback($postParams); } + + $result['paymenttype'] = $this->paymentType; + $result['postParams'] = $postParams; + + return $result; } /** * Kredi kartı ile ödemede success durumunda burası çağrılacak * - * @return bool|mixed + * @param $postParams + * @param string $action + * @return array */ - private function creditcard_callback($action="") + private function creditcard_callback($postParams, $action = "") { - $postParams = $_POST; - - if($this->debugMode){ - echo '
'.var_export($postParams, true).'
'; - } - - $strMDStatus = isset($this->mdStatuses[$postParams["mdstatus"]]) ? $postParams["mdstatus"] : 7; - if(!in_array($strMDStatus, [1,2,3,4])){ - if($postParams['errmsg']){ - $result = $postParams['errmsg']; - } - else{ - $result = $this->mdStatuses[$strMDStatus]; + $strMDStatus = isset($this->mdStatuses[$postParams["mdstatus"]]) ? $postParams["mdstatus"] : 7; // 7=Sistem hatası + if ($action == "success" && in_array($strMDStatus, array(1, 2, 3, 4))) { + // Tam Doğrulama, Kart Sahibi veya bankası sisteme kayıtlı değil, Kartın bankası sisteme kayıtlı değil, Kart sahibi sisteme daha sonra kayıt olmayı seçmiş cevaplarını alan işlemler için provizyon almaya çalışıyoruz + + $strNumber = ""; // Kart bilgilerinin boş gitmesi gerekiyor + $strExpireDate = ""; // Kart bilgilerinin boş gitmesi gerekiyor + $strCVV2 = ""; // Kart bilgilerinin boş gitmesi gerekiyor + $strCardholderPresentCode = "13"; // 3D Model işlemde bu değer 13 olmalı + $strType = $postParams["txntype"]; + $strMotoInd = "N"; + $strAuthenticationCode = $postParams["cavv"]; + $strSecurityLevel = $postParams["eci"]; + $strTxnID = $postParams["xid"]; + $strMD = $postParams["md"]; + $SecurityData = strtoupper(sha1($this->provUserPassword . $this->terminalID_)); + $HashData = strtoupper(sha1($this->orderNo . $this->terminalID . $this->amount . $SecurityData)); //Daha kısıtlı bilgileri HASH ediyoruz. + + // Provizyona Post edilecek XML Şablonu + $strXML = " + + {$this->mode} + {$this->version} + + + {$this->provUserID} + {$HashData} + {$this->terminalMerchantID} + {$this->terminalID} + {$this->terminalMerchantID} + + + {$this->customerIP} + {$this->customerEmail} + + + {$strNumber} + {$strExpireDate} + {$strCVV2} + + + {$this->orderNo} + + +
+ B + + + + + + + + + +
+
+
+ + {$strType} + {$this->installmentCount} + {$this->amount} + {$this->currencyCode} + {$strCardholderPresentCode} + {$strMotoInd} + + {$strAuthenticationCode} + {$strSecurityLevel} + {$strTxnID} + {$strMD} + + +
"; + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, ($this->mode == "TEST" ? $this->provisionTestUrl : $this->provisionUrl)); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, "data=" . $strXML); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); + $resultContent = curl_exec($ch); + curl_close($ch); + + if ($this->debugMode) { + echo '
' . var_export($resultContent, true) . '
'; } - } - else{ - $result = false; - } - if($action=="success" && !$result){ - //Tam Doğrulama, Kart Sahibi veya bankası sisteme kayıtlı değil, Kartın bankası sisteme kayıtlı değil, Doğrulama denemesi, kart sahibi sisteme daha sonra kayıt olmayı seçmiş responselarını alan işlemler için Provizyon almaya çalışıyoruz - if(in_array($strMDStatus, [1,2,3,4])){ - $strNumber = ""; //Kart bilgilerinin boş gitmesi gerekiyor - $strExpireDate = ""; //Kart bilgilerinin boş gitmesi gerekiyor - $strCVV2 = ""; //Kart bilgilerinin boş gitmesi gerekiyor - $strCardholderPresentCode = "13"; //3D Model işlemde bu değer 13 olmalı - $strType = $postParams["txntype"]; - $strMotoInd = "N"; - $strAuthenticationCode = $postParams["cavv"]; - $strSecurityLevel = $postParams["eci"]; - $strTxnID = $postParams["xid"]; - $strMD = $postParams["md"]; - $SecurityData = strtoupper(sha1($this->provUserPassword.$this->terminalID_)); - $HashData = strtoupper(sha1($this->orderNo.$this->terminalID.$this->amount.$SecurityData)); //Daha kısıtlı bilgileri HASH ediyoruz. - - //Provizyona Post edilecek XML Şablonu - $strXML = " - - {$this->mode} - {$this->version} - - - {$this->provUserID} - {$HashData} - {$this->terminalMerchantID} - {$this->terminalID} - {$this->terminalMerchantID} - - - {$this->customerIP} - {$this->customerEmail} - - - {$strNumber} - {$strExpireDate} - {$strCVV2} - - - {$this->orderNo} - - -
- B - - - - - - - - - -
-
-
- - {$strType} - {$this->installmentCount} - {$this->amount} - {$this->currencyCode} - {$strCardholderPresentCode} - {$strMotoInd} - - {$strAuthenticationCode} - {$strSecurityLevel} - {$strTxnID} - {$strMD} - - -
"; - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $this->provisionUrl); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS, "data=".$strXML); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); - $resultContent = curl_exec($ch); - curl_close($ch); - - if($this->debugMode){ - echo '
'.var_export($resultContent, true).'
'; - } - - $resultXML = simplexml_load_string($resultContent); - $responseCode = $resultXML->Transaction->Response->Code; - $responseMessage = $resultXML->Transaction->Response->Message; - if($responseCode=="00" || $responseMessage=="Approved"){ - $result = true; //Ödeme başarıyla alındı - } - else{ - $result = $resultXML->Transaction->Response->ErrorMsg[0]; //Hata mesajı gönderiliyor - } + $resultXML = simplexml_load_string($resultContent); + $responseCode = $resultXML->Transaction->Response->Code; + $responseMessage = $resultXML->Transaction->Response->Message; + if ($responseCode == "00" || $responseMessage == "Approved") { + $result = array( + 'status' => 'success', + 'message' => 'OK' + ); + } else { + $result = array( + 'status' => 'error', + 'message' => $resultXML->Transaction->Response->ErrorMsg[0] + ); } + } else { + // MD status değeri Tam Doğrulama, Kart Sahibi veya bankası sisteme kayıtlı değil, Kartın bankası sisteme kayıtlı değil veya Kart sahibi sisteme daha sonra kayıt olmayı seçmiş haricindeyse hata mesajı alınıyor + $result = array( + 'status' => 'error', + 'message' => $postParams['errmsg'] ? $postParams['errmsg'] : ($postParams['ErrorMsg'] ? $postParams['ErrorMsg'] : ($postParams['mderrormessage'] ? $postParams['mderrormessage'] : ($postParams['mdErrorMsg'] ? $postParams['mdErrorMsg'] : "3D process failure"))) + ); } - return $this->result($result); + return $result; } /** - * GarantiPAY ile ödemede success durumunda burası çağrılacak + * GarantiPay ile ödemede success durumunda burası çağrılacak * - * @return bool + * @param $postParams + * @return array */ - private function garantipay_callback() + private function garantipay_callback($postParams) { - $postParams = $_POST; - - if($this->debugMode){ - echo '
'.var_export($postParams, true).'
'; - } - - //GarantiPay için dönen cevabın bankadan geldiği doğrulanıyor + // GarantiPay için dönen cevabın bankadan geldiği doğrulanıyor $responseHashparams = $postParams["hashparams"]; - $responseHash = $postParams["hash"]; - $isValidHash = false; - if($responseHashparams!==null && $responseHashparams!==""){ + $responseHash = $postParams["hash"]; + $isValidHash = false; + if ($responseHashparams !== null && $responseHashparams !== "") { $digestData = ""; - $paramList = explode(":", $responseHashparams); - foreach($paramList as $param){ - if(isset($postParams[strtolower($param)])){ + $paramList = explode(":", $responseHashparams); + foreach ($paramList as $param) { + if (isset($postParams[strtolower($param)])) { $value = $postParams[strtolower($param)]; - if($value==null){ + if ($value == null) { $value = ""; } $digestData .= $value; } } - $digestData .= $this->storeKey; + $digestData .= $this->storeKey; $hashCalculated = base64_encode(pack('H*', sha1($digestData))); - if($responseHash==$hashCalculated){ + if ($responseHash == $hashCalculated) { $isValidHash = true; } } - if($isValidHash){ - $result = true; //Ödeme başarıyla alındı - } - else{ - $result = $postParams['errmsg']; //Hata mesajı gönderiliyor + if ($isValidHash) { + $result = array( + 'status' => 'success', + 'message' => 'OK', + ); + } else { + $result = array( + 'status' => 'error', + 'message' => $postParams['errmsg'] + ); } - return $this->result($result); + return $result; } /** @@ -330,56 +358,53 @@ private function garantipay_callback() */ private function redirect_for_payment($params) { - $params['companyname'] = $this->companyName; - $params['apiversion'] = $this->version; - $params['mode'] = $this->mode; - $params['terminalprovuserid'] = $this->provUserID; - $params['terminaluserid'] = $this->terminalID; - $params['terminalid'] = $this->terminalID; - $params['terminalmerchantid'] = $this->terminalMerchantID; - $params['orderid'] = $this->orderNo; - $params['customeremailaddress'] = $this->customerEmail; - $params['customeripaddress'] = $this->customerIP; - $params['txnamount'] = $this->amount; - $params['txncurrencycode'] = $this->currencyCode; - $params['txninstallmentcount'] = $this->installmentCount; - $params['successurl'] = $this->successUrl; - $params['errorurl'] = $this->errorUrl; - $params['lang'] = $this->lang; - $params['txntimestamp'] = time(); - $params['txntimeoutperiod'] = $this->timeOutPeriod; - $params['addcampaigninstallment'] = $this->addCampaignInstallment; - $params['totallinstallmentcount'] = $this->totalInstallamentCount; + $params['companyname'] = $this->companyName; + $params['apiversion'] = $this->version; + $params['mode'] = $this->mode; + $params['terminalprovuserid'] = $this->provUserID; + $params['terminaluserid'] = $this->terminalID; + $params['terminalid'] = $this->terminalID; + $params['terminalmerchantid'] = $this->terminalMerchantID; + $params['orderid'] = $this->orderNo; + $params['customeremailaddress'] = $this->customerEmail; + $params['customeripaddress'] = $this->customerIP; + $params['txnamount'] = $this->amount; + $params['txncurrencycode'] = $this->currencyCode; + $params['txninstallmentcount'] = $this->installmentCount; + $params['successurl'] = $this->successUrl; + $params['errorurl'] = $this->errorUrl; + $params['lang'] = $this->lang; + $params['txntimestamp'] = time(); + $params['txntimeoutperiod'] = $this->timeOutPeriod; + $params['addcampaigninstallment'] = $this->addCampaignInstallment; + $params['totallinstallmentcount'] = $this->totalInstallamentCount; $params['installmentonlyforcommercialcard'] = $this->installmentOnlyForCommercialCard; - - $SecurityData = strtoupper(sha1($this->provUserPassword.$this->terminalID_)); - $HashData = strtoupper(sha1($this->terminalID.$params['orderid'].$params['txnamount'].$params['successurl'].$params['errorurl'].$params['txntype'].$params['txninstallmentcount'].$this->storeKey.$SecurityData)); + $SecurityData = strtoupper(sha1($this->provUserPassword . $this->terminalID_)); + $HashData = strtoupper(sha1($this->terminalID . $params['orderid'] . $params['txnamount'] . $params['successurl'] . $params['errorurl'] . $params['txntype'] . $params['txninstallmentcount'] . $this->storeKey . $SecurityData)); $params['secure3dhash'] = $HashData; - if($this->debugMode){ - echo "
";
-            print_r($params);
-            echo "
";
+        if ($this->debugMode) {
+            echo '
' . var_export($params, true) . '
'; } print(''); print(''); print(''); - print('
'); - foreach($params as $name => $value){ - print(''); + print('paymentTestUrl : $this->paymentUrl)) . '" method="post" id="three_d_form"/>'); + foreach ($params as $name => $value) { + print(''); } - if($this->orderAddress){ + if ($this->orderAddress) { $i = 1; - foreach($this->orderAddress as $orderAdress){ - print(''); - foreach($orderAdress as $name => $value){ - print(''); + foreach ($this->orderAddress as $orderAdress) { + print(''); + foreach ($orderAdress as $name => $value) { + print(''); } $i++; } } - print(''); + print(''); print('