Server IP : 85.193.89.191 / Your IP : 3.145.186.142 Web Server : Apache System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64 User : bitrix ( 600) PHP Version : 8.1.27 Disable Function : NONE MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/bitrix/www/bitrix/modules/sale/payment/payflow_pro/ |
Upload File : |
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();?><? include(dirname(__FILE__)."/common.php"); $PF_HOST = CSalePaySystemAction::GetParamValue("PAYFLOW_URL"); $PF_PORT = CSalePaySystemAction::GetParamValue("PAYFLOW_PORT"); $PF_USER = CSalePaySystemAction::GetParamValue("PAYFLOW_USER"); $PF_PWD = CSalePaySystemAction::GetParamValue("PAYFLOW_PASSWORD"); $PF_PARTNER = CSalePaySystemAction::GetParamValue("PAYFLOW_PARTNER"); $strExePath = CSalePaySystemAction::GetParamValue("PAYFLOW_EXE_PATH"); $strExeDir = dirname(CSalePaySystemAction::GetParamValue("PAYFLOW_EXE_PATH")); $PFPRO_CERT_PATH = CSalePaySystemAction::GetParamValue("PAYFLOW_CERT_PATH"); $ORDER_ID = IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ID"]); ?> <table border="0" width="100%" cellpadding="2" cellspacing="2"> <tr> <td class="but2" align="center"> <? //*************************************************** //*** START ACTION ******************************** //*************************************************** $strErrorTmp = ""; $bNonePay = True; if (strlen($_POST["GetPayRes"]) > 0) { $cardnum = htmlspecialcharsbx(Trim($_POST["cardnum"])); $cardnum = preg_replace("#[\D]#i", "", $cardnum); if (strlen($cardnum) <=0 ) $strErrorTmp.= "Please fill in \"Credit Card Number\" field. "; $cvv2 = htmlspecialcharsbx(Trim($_POST["cvv2"])); if (strlen($cvv2) <= 0) $strErrorTmp.= "Please fill in \"CVV2\" field. "; $cardexp1 = IntVal(htmlspecialcharsbx($_POST["cardexp1"])); $cardexp2 = IntVal(htmlspecialcharsbx($_POST["cardexp2"])); if ($cardexp1 < 1 || $cardexp1 > 12) $strErrorTmp.= "Please fill in \"Expiration Date\" field. "; elseif ($cardexp2 < 4 || $cardexp2 > 99) $strErrorTmp.= "Please fill in \"Expiration Date\" field. "; else { $cardexp1 = ((strlen($cardexp1) < 2) ? "0".$cardexp1 : $cardexp1); $cardexp2 = ((strlen($cardexp2) < 2) ? "0".$cardexp2 : $cardexp2); } $noc = htmlspecialcharsbx(trim($_POST["noc"])); if (strlen($noc) <= 0) $strErrorTmp.= "Please fill in \"Cardholder\" field. "; $address1 = htmlspecialcharsbx(trim($_POST["address1"])); if (strlen($address1) <= 0) $strErrorTmp.= "Please fill in \"Address\" field. "; $zipcode = htmlspecialcharsbx(trim($_POST["zipcode"])); if (strlen($zipcode) <= 0) $strErrorTmp.= "Please fill in \"Zip\" field. "; if (strlen($strErrorTmp) <= 0) { $ret_var = ""; $AMT = $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"]; if ($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"] != "USD") { $AMT = CCurrencyRates::ConvertCurrency($AMT, $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"], "USD"); $additor = 1; for ($i = 0; $i < SALE_VALUE_PRECISION; $i++) $additor = $additor / 10; $AMT_tmp = round($AMT, SALE_VALUE_PRECISION); while ($AMT_tmp < $AMT) $AMT_tmp = round($AMT_tmp + $additor, SALE_VALUE_PRECISION); $AMT = $AMT_tmp; } $AMT = str_replace(",", ".", $AMT); $cardExp = $cardexp1.$cardexp2; $parms = "ACCT=".urlencode($cardnum); // Credit card number $parms .= "&CVV2=".urlencode($cvv2); // CVV2 $parms .= "&AMT=".urlencode($AMT); // Amount (US Dollars) $parms .= "&EXPDATE=".urlencode($cardExp); // Expiration date $parms .= "&PARTNER=".urlencode($PF_PARTNER); // Partner $parms .= "&PWD=".urlencode($PF_PWD); // Password $parms .= "&TENDER=C"; // ... $parms .= "&TRXTYPE=S"; // Kind of transaction: Sale $parms .= "&USER=".urlencode($PF_USER); // Login ID $parms .= "&VENDOR=".urlencode($PF_USER); // Vendor ID $parms .= "&ZIP=".urlencode($zipcode); // Zip $parms .= "&STREET=".urlencode($address1); // Address $parms .= "&COMMENT1=".urlencode($ORDER_ID); $parms .= "&COMMENT2=".urlencode($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT"]); $ret_com = "$strExePath $PF_HOST $PF_PORT \"$parms\" 30"; putenv("PFPRO_CERT_PATH=".$PFPRO_CERT_PATH); putenv("LD_LIBRARY_PATH=".$strExeDir); exec($ret_com, $arOutput, $ret_var); $strOutput = $arOutput[0]; parse_str($strOutput, $arResult); if (is_array($arResult) && strlen($arResult["RESULT"])>0) { $arFields = array( "PS_STATUS" => (($arResult["RESULT"]==0) ? "Y" : "N"), "PS_STATUS_CODE" => $arResult["RESULT"], "PS_STATUS_DESCRIPTION" => $arResult["RESPMSG"]." - ".$arResult["PREFPSMSG"], "PS_STATUS_MESSAGE" => $arResult["PNREF"], "PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))) ); $arResult["RESULT"] = IntVal($arResult["RESULT"]); if ($arResult["RESULT"]==0) { CSaleOrder::PayOrder($ORDER_ID, "Y"); } CSaleOrder::Update($ORDER_ID, $arFields); $arResult["RESULT"] = IntVal($arResult["RESULT"]); if ($arResult["RESULT"]==0) $bNonePay = False; else { if ($arResult["RESULT"]<0) { $strErrorTmp.= "Communication Error: [".$arResult["RESULT"]."] ".$arResult["RESPMSG"]." - ".$arResult["PREFPSMSG"].". "; } elseif ($arPaySysRes_tmp["RESULT"]==125) { $strErrorTmp.= "Your payment is declined by Fraud Service. Please contact us to make payment. "; } elseif ($arResult["RESULT"]==126) { $strErrorTmp.= "Your payment is under review by Fraud Service. We contact you in 48 hours to get more specific information. "; } elseif (is_set($arErrorCodes, $arResult["RESULT"])) { $strErrorTmp.= $arErrorCodes[$arResult["RESULT"]].". "; } else { $strErrorTmp.= "Unknown error. "; } } } else $strErrorTmp.= "Response error. "; } } //*************************************************** //*** END ACTION ********************************** //*************************************************** if (!$bNonePay) { ?> <font class="text" color="#009900"><b> Thank you for purchasing!<br> You have been billed <?echo SaleFormatCurrency($AMT, "USD") ?></b> </font> <? } else { if (strlen($strErrorTmp) > 0) echo "<font color=\"#FF0000\"><b>".$strErrorTmp."</b></font><br>"; $noc_def = htmlspecialcharsbx(CSalePaySystemAction::GetParamValue("NOC")); $address1_def = htmlspecialcharsbx(CSalePaySystemAction::GetParamValue("ADDRESS")); $zipcode_def = htmlspecialcharsbx(CSalePaySystemAction::GetParamValue("ZIP")); ?> <script type="text/javascript"> function checkFields(frm) { if (frm.elements['cardnum'].value == '') { alert('Card number missing'); return false; } if (frm.elements['cvv2'].value == '') { alert('CVV2 missing'); return false; } var now = new Date(); expyear = parseInt("20" + frm.elements['cardexp2'].value); expmonth = parseInt("" + frm.elements['cardexp1'].value); curMonth = now.getMonth(); if ( (expyear < now.getFullYear()) || ((expyear == now.getFullYear()) && (expmonth <= curMonth)) ) { alert('Incorrect expiration date'); return false; } if (frm.elements['noc'].value == '') { alert('Cardholder name missing'); return false; } if (frm.elements['address1'].value == '') { alert('Cardholder address missing'); return false; } if (frm.elements['zipcode'].value == '') { alert('Cardholder zip code missing'); return false; } return true; } </script> <form onsubmit="return checkFields(this)" method="post" action=""> <input type="hidden" name="CurrentStep" value="<?= IntVal($GLOBALS["CurrentStep"]) ?>"> <input type="hidden" name="ORDER_ID" value="<?= $ORDER_ID ?>"> <input type="hidden" name="GetPayRes" value="YES"> <table> <tr> <th><font class="text">Credit Card Number</font></th> <td><input class="inputtext" maxlength="16" type="text" name="cardnum" value="<?= htmlspecialcharsbx($cardnum) ?>" size="35"></td> </tr> <tr> <th><font class="text">CVV2</font></th> <td><input type="text" class="inputtext" maxlength="4" name="cvv2" value="<?= htmlspecialcharsbx($cvv2) ?>" size="5"></td> </tr> <tr> <th><font class="text">Expiration Date (MM/YY)</font></th> <td> <select name="cardexp1" class="inputselect"> <? $curMonth = intval(date("m")); if (empty($cardexp1)) $cardexp1 = $curMonth; for ($i = 1; $i <= 12; $i++) { $val = (($i < 10) ? "0" : "").$i; ?> <option value="<?= $val ?>" <?if ($cardexp1 == $val) echo "selected=\"selected\"";?>><?= $val ?></option> <? } ?> </select> <select name="cardexp2" class="inputselect"> <? $curYear = intval(date("y")); if (empty($cardexp2)) $cardexp2 = $curYear; for ($i = $curYear; $i <= $curYear + 10; $i++) { $val = (($i < 10) ? "0" : "").$i; $fullYear = 2000 + intval($val); ?> <option value="<?= $val ?>" <?if ($cardexp2 == $val) echo "selected";?>><?= $fullYear ?></option> <? } ?> </SELECT> </td> </tr> <tr> <th>Cardholder</th> <td><input type="text" maxlength="250" class="inputtext" name="noc" value="<?echo (strlen($noc) > 0) ? $noc : $noc_def ?>"></td> </tr> <tr> <th>Address</th> <td><input type="text" size="30" maxlength="250" class="inputtext" name="address1" value="<?echo (strlen($address1) > 0) ? $address1 : $address1_def ?>"></td> </tr> <tr> <th>Zip</th> <td><input type="text" maxlength="10" class="inputtext" name="zipcode" value="<?echo (strlen($zipcode) > 0) ? $zipcode : $zipcode_def ?>"></td> </tr> <tr> <th></th> <td> <input type="submit" value="Proceed" class="inputbutton"> </td> </tr> </table> </form> <? } ?> </td> </tr> </table>