%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/sale/payment/payflow_pro/ |
| Current File : //home/bitrix/www/bitrix/modules/sale/payment/payflow_pro/action.php |
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();?><?
// Input:
// $SALE_INPUT_PARAMS - Array of payment parameters
// $INPUT_CARD_TYPE - Type of credit card
// $INPUT_CARD_NUM - Number of credit card
// $INPUT_CARD_EXP_MONTH - Expiration month of credit card
// $INPUT_CARD_EXP_YEAR - Expiration year of credit card
// $INPUT_CARD_CODE - CVC2 of credit card
// $INPUT_SUM - Payment sum
// $INPUT_CURRENCY - Currency of payment sum
// Output:
// $OUTPUT_ERROR_MESSAGE - Error message
// $OUTPUT_STATUS - Payment status
// $OUTPUT_STATUS_CODE - Payment status code
// $OUTPUT_STATUS_DESCRIPTION - Payment status description
// $OUTPUT_STATUS_MESSAGE - Payment system message
// $OUTPUT_SUM - Paid sum
// $OUTPUT_CURRENCY - Currency of paid sum
// $OUTPUT_RESPONSE_DATE - Date
include(dirname(__FILE__)."/common.php");
$strErrorMessage = "";
$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");
$PFPRO_CERT_PATH = CSalePaySystemAction::GetParamValue("PAYFLOW_CERT_PATH");
$ORDER_ID = IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ID"]);
$INPUT_CARD_NUM = Trim($INPUT_CARD_NUM);
if (!isset($INPUT_CARD_NUM) || strlen($INPUT_CARD_NUM) <= 0)
$strErrorMessage .= "Please enter valid credit card number".". ";
$INPUT_CARD_NUM = preg_replace("/[\D]+/", "", $INPUT_CARD_NUM);
if (strlen($INPUT_CARD_NUM) <= 0)
$strErrorMessage .= "Please enter valid credit card number".". ";
$INPUT_CARD_CODE = Trim($INPUT_CARD_CODE);
if (!isset($INPUT_CARD_CODE) || strlen($INPUT_CARD_CODE) <= 0)
$strErrorMessage .= "Please enter valid credit card CVC2".". ";
$INPUT_CARD_EXP_MONTH = IntVal($INPUT_CARD_EXP_MONTH);
if ($INPUT_CARD_EXP_MONTH < 1 || $INPUT_CARD_EXP_MONTH > 12)
$strErrorMessage .= "Please enter valid credit card expiration month".". ";
elseif (strlen($INPUT_CARD_EXP_MONTH) < 2)
$INPUT_CARD_EXP_MONTH = "0".$INPUT_CARD_EXP_MONTH;
$INPUT_CARD_EXP_YEAR = IntVal($INPUT_CARD_EXP_YEAR);
if ($INPUT_CARD_EXP_YEAR < 2005 || $INPUT_CARD_EXP_YEAR > 2099)
$strErrorMessage .= "Please enter valid credit card expiration year".". ";
else
$INPUT_CARD_EXP_YEAR = IntVal($INPUT_CARD_EXP_YEAR - 2000);
$INPUT_SUM = str_replace(",", ".", $INPUT_SUM);
$INPUT_SUM = DoubleVal($INPUT_SUM);
if ($INPUT_SUM <= 0)
$strErrorMessage .= "Please enter valid sum. ";
$INPUT_CURRENCY = Trim($INPUT_CURRENCY);
if (strlen($INPUT_CURRENCY) <= 0)
$strErrorMessage .= "Please enter valid currency. ";
$OUTPUT_ERROR_MESSAGE = $strErrorMessage;
if (strlen($strErrorMessage) <= 0)
{
$ret_var = "";
if ($INPUT_CURRENCY != "USD")
{
$INPUT_SUM = CCurrencyRates::ConvertCurrency($INPUT_SUM, $INPUT_CURRENCY, "USD");
$additor = 1;
for ($i = 0; $i < SALE_VALUE_PRECISION; $i++)
$additor = $additor / 10;
$INPUT_SUM_tmp = round($INPUT_SUM, SALE_VALUE_PRECISION);
while ($INPUT_SUM_tmp < $INPUT_SUM)
$INPUT_SUM_tmp = round($INPUT_SUM_tmp + $additor, SALE_VALUE_PRECISION);
$INPUT_SUM = $INPUT_SUM_tmp;
}
$parms = "ACCT=".urlencode($INPUT_CARD_NUM); // Credit card number
$parms .= "&CVV2=".urlencode($INPUT_CARD_CODE); // CVV2
$parms .= "&AMT=".urlencode($INPUT_SUM); // Amount (US Dollars)
$parms .= "&EXPDATE=".urlencode($INPUT_CARD_EXP_MONTH.$INPUT_CARD_EXP_YEAR); // 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 .= "&COMMENT1=".urlencode($GLOBALS["SALE_INPUT_PARAMS"]["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);
exec($ret_com, $arOutput, $ret_var);
$strOutput = $arOutput[0];
parse_str($strOutput, $arResult);
if (is_array($arResult) && strlen($arResult["RESULT"])>0)
{
$OUTPUT_STATUS = (($arResult["RESULT"] == 0) ? "Y" : "N");
$OUTPUT_STATUS_CODE = $arResult["RESULT"];
$OUTPUT_STATUS_DESCRIPTION = $arResult["RESPMSG"]." - ".$arResult["PREFPSMSG"];
$OUTPUT_STATUS_MESSAGE = $arResult["PNREF"];
$OUTPUT_SUM = $INPUT_SUM;
$OUTPUT_CURRENCY = "USD";
$OUTPUT_RESPONSE_DATE = Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", SITE_ID)));
$arResult["RESULT"] = IntVal($arResult["RESULT"]);
if ($arResult["RESULT"] != 0)
{
if ($arResult["RESULT"] < 0)
$OUTPUT_STATUS_MESSAGE .= "Communication Error: [".$arResult["RESULT"]."] ".$arResult["RESPMSG"]." - ".$arResult["PREFPSMSG"].". ";
elseif ($arPaySysRes_tmp["RESULT"] == 125)
$OUTPUT_STATUS_MESSAGE .= "Your payment is declined by Fraud Service. Please contact us to make payment".". ";
elseif ($arResult["RESULT"] == 126)
$OUTPUT_STATUS_MESSAGE .= "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"]))
$OUTPUT_STATUS_MESSAGE .= $arErrorCodes[$arResult["RESULT"]].". ";
else
$OUTPUT_STATUS_MESSAGE .= "Unknown error".". ";
}
}
else
$OUTPUT_STATUS_MESSAGE .= "Response error".". ";
/*
$OUTPUT_STATUS = "Y";
$OUTPUT_STATUS_CODE = "44FRT";
$OUTPUT_STATUS_DESCRIPTION = "Good test";
$OUTPUT_STATUS_MESSAGE = "Yes";
$OUTPUT_SUM = $INPUT_SUM;
$OUTPUT_CURRENCY = "USD";
$OUTPUT_RESPONSE_DATE = Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", SITE_ID)));
$OUTPUT_STATUS_MESSAGE = "";
*/
}
?>