1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
action.php
См. документацию.
1<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();?><?
2include_once(GetLangFileName(dirname(__FILE__)."/", "/payment.php"));
3// Input:
4// $SALE_INPUT_PARAMS - Array of payment parameters
5// $INPUT_CARD_TYPE - Type of credit card
6// $INPUT_CARD_NUM - Number of credit card
7// $INPUT_CARD_EXP_MONTH - Expiration month of credit card
8// $INPUT_CARD_EXP_YEAR - Expiration year of credit card
9// $INPUT_CARD_CODE - CVC2 of credit card
10// $INPUT_SUM - Payment sum
11// $INPUT_CURRENCY - Currency of payment sum
12
13// Output:
14// $OUTPUT_ERROR_MESSAGE - Error message
15// $OUTPUT_STATUS - Payment status
16// $OUTPUT_STATUS_CODE - Payment status code
17// $OUTPUT_STATUS_DESCRIPTION - Payment status description
18// $OUTPUT_STATUS_MESSAGE - Payment system message
19// $OUTPUT_SUM - Paid sum
20// $OUTPUT_CURRENCY - Currency of paid sum
21// $OUTPUT_RESPONSE_DATE - Date
22
23include(dirname(__FILE__)."/common.php");
24
26
27$INPUT_CARD_NUM = preg_replace("/[\D]+/", "", $INPUT_CARD_NUM);
28if ($INPUT_CARD_NUM == '')
29 $strErrorMessage .= GetMessage("AN_CC_NUM")." ";
30
31$INPUT_CARD_CODE = preg_replace("[\D]+", "", $INPUT_CARD_CODE);
32
35 $strErrorMessage .= GetMessage("AN_CC_MONTH")." ";
36elseif (mb_strlen($INPUT_CARD_EXP_MONTH) < 2)
38
40if ($INPUT_CARD_EXP_YEAR < 2005)
41 $strErrorMessage .= GetMessage("AN_CC_YEAR")." ";
42
43$INPUT_SUM = str_replace(",", ".", $INPUT_SUM);
44$INPUT_SUM = DoubleVal($INPUT_SUM);
45if ($INPUT_SUM <= 0)
46 $strErrorMessage .= GetMessage("AN_CC_SUM")." ";
47
49if ($INPUT_CURRENCY == '')
50 $strErrorMessage .= GetMessage("AN_CC_CURRENCY")." ";
51
53
54if ($strErrorMessage == '')
55{
56 // Merchant Account Information
57 $strPostQueryString = "x_version=3.1";
58 $strPostQueryString .= "&x_login=".urlencode(CSalePaySystemAction::GetParamValue("PS_LOGIN"));
59 $strPostQueryString .= "&x_tran_key=".urlencode(CSalePaySystemAction::GetParamValue("PS_TRANSACTION_KEY"));
60 $strPostQueryString .= "&x_test_request=".(CSalePaySystemAction::GetParamValue("TEST_TRANSACTION") ? "TRUE" : "FALSE")."";
61
62 // Gateway Response Configuration
63 $strPostQueryString .= "&x_delim_data=True";
64 $strPostQueryString .= "&x_relay_response=False";
65 $strPostQueryString .= "&x_delim_char=,";
66 $strPostQueryString .= "&x_encap_char=|";
67
68 $arTmp = array("x_first_name" => "FIRST_NAME", "x_last_name" => "LAST_NAME",
69 "x_company" => "COMPANY", "x_address" => "ADDRESS", "x_city" => "CITY",
70 "x_state" => "STATE", "x_zip" => "ZIP", "x_country" => "COUNTRY",
71 "x_phone" => "PHONE", "x_fax" => "FAX"
72 );
73 foreach ($arTmp as $key => $value)
74 {
75 if (($val = CSalePaySystemAction::GetParamValue($value)) !== False)
76 $strPostQueryString .= "&".$key."=".urlencode($val);
77 }
78
79 // Additional Customer Data
80 $strPostQueryString .= "&x_cust_id=".urlencode($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["USER_ID"]);
81 if (($val = CSalePaySystemAction::GetParamValue("REMOTE_ADDR")) !== False)
82 $strPostQueryString .= "&x_customer_ip=".urlencode($val);
83
84 // Email Settings
85 if (($val = CSalePaySystemAction::GetParamValue("EMAIL")) !== False)
86 $strPostQueryString .= "&x_email=".urlencode($val);
87
88 $strPostQueryString .= "&x_email_customer=FALSE";
89 $strPostQueryString .= "&x_merchant_email=".urlencode(COption::GetOptionString("sale", "order_email", ""));
90
91 // Invoice Information
92 $strPostQueryString .= "&x_invoice_num=".urlencode($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ID"]);
93 $strPostQueryString .= "&x_description=".urlencode($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT"]);
94
95 // Customer Shipping Address
96 $arTmp = array("x_ship_to_first_name" => "SHIP_FIRST_NAME",
97 "x_ship_to_last_name" => "SHIP_LAST_NAME", "x_ship_to_company" => "SHIP_COMPANY",
98 "x_ship_to_address" => "SHIP_ADDRESS", "x_ship_to_city" => "SHIP_CITY",
99 "x_ship_to_state" => "SHIP_STATE", "x_ship_to_zip" => "SHIP_ZIP",
100 "x_ship_to_country" => "SHIP_COUNTRY"
101 );
102 foreach ($arTmp as $key => $value)
103 {
104 if (($val = CSalePaySystemAction::GetParamValue($value)) !== False)
105 $strPostQueryString .= "&".$key."=".urlencode($val);
106 }
107
108 // Transaction Data
109 $strPostQueryString .= "&x_amount=".$INPUT_SUM;
110 $strPostQueryString .= "&x_currency_code=".$INPUT_CURRENCY;
111 $strPostQueryString .= "&x_method=CC";
112 $strPostQueryString .= "&x_type=AUTH_CAPTURE";
113 $strPostQueryString .= "&x_recurring_billing=NO";
114 $strPostQueryString .= "&x_card_num=".urlencode($INPUT_CARD_NUM);
115 $strPostQueryString .= "&x_exp_date=".urlencode($INPUT_CARD_EXP_MONTH.$INPUT_CARD_EXP_YEAR); // MMYYYY
116 $strPostQueryString .= "&x_card_code=".urlencode($INPUT_CARD_CODE);
117
118 $strResult = QueryGetData("secure.authorize.net", 443, "/gateway/transact.dll", $strPostQueryString, $errno, $errstr, "POST", "ssl://");
119
120 $mass = explode("\|,\|", "|,".$strResult);
121
122 $hashValue = CSalePaySystemAction::GetParamValue("HASH_VALUE");
123 if ($hashValue <> '')
124 {
125 if (md5($hashValue.(CSalePaySystemAction::GetParamValue("PS_LOGIN")).$mass[7].$INPUT_SUM) != mb_strtolower($mass[38]))
126 {
127 $mass = array();
128 $mass[1] = 3;
129 $mass[4] = "MD5 transaction signature is incorrect!";
130 $mass[3] = 0;
131 $mass[2] = 0;
132 }
133 }
134
135 $OUTPUT_STATUS = ((intval($mass[1])==1) ? "Y" : "N");
136 $OUTPUT_STATUS_CODE = $mass[3];
137
138 if ($OUTPUT_STATUS=="Y")
139 $OUTPUT_STATUS_DESCRIPTION = "Approval Code: ".$mass[5].(!empty($mass[7]) ? "; Transaction ID: ".$mass[7] : "");
140 else
141 $OUTPUT_STATUS_DESCRIPTION = (intval($mass[1])==2 ? "Declined" : "Error").": ".$mass[4]." (Reason Code ".$mass[3]." / Sub ".$mass[2].")";
142
143 $OUTPUT_STATUS_MESSAGE = "";
144 if (!empty($mass[6]))
145 $OUTPUT_STATUS_MESSAGE .= "\nAVS Result: [".$mass[6]."] ".$arAVSErr[$mass[6]].";";
146
147 if (!empty($mass[39]))
148 $OUTPUT_STATUS_MESSAGE .= "\nCard Code Result: [".$mass[39]."] ".$arCVVErr[$mass[39]].";";
149
150 if (!empty($mass[40]))
151 $OUTPUT_STATUS_MESSAGE .= "\nCAVV: [".$mass[40]."] ".$arCAVVErr[$mass[40]].";";
152
153 $OUTPUT_SUM = $mass[10];
154 $OUTPUT_CURRENCY = $INPUT_CURRENCY;
155 $OUTPUT_RESPONSE_DATE = Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG)));
156}
157?>
static GetParamValue($key, $defaultValue=null)
Определения pay_system_action.php:76
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
QueryGetData($SITE, $PORT, $PATH, $QUERY_STR, &$errno, &$errstr, $sMethod="GET", $sProto="", $sContentType='N')
Определения tools.php:4287
GetMessage($name, $aReplace=null)
Определения tools.php:3397
GetLangFileName($before, $after, $lang=false)
Определения tools.php:3428
if(intval($iTestTransaction) > 0) $arTmp
Определения payment.php:22
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
die
Определения quickway.php:367
$val
Определения options.php:1793
$INPUT_CURRENCY
Определения action.php:48
$strErrorMessage
Определения action.php:25
$INPUT_CARD_EXP_MONTH
Определения action.php:33
$INPUT_CARD_CODE
Определения action.php:31
$INPUT_CARD_EXP_YEAR
Определения action.php:39
$OUTPUT_ERROR_MESSAGE
Определения action.php:52
$INPUT_SUM
Определения action.php:43
$INPUT_CARD_NUM
Определения action.php:27
$arCVVErr
Определения common.php:17
$arAVSErr
Определения common.php:3
$arCAVVErr
Определения common.php:25
$GLOBALS['_____370096793']
Определения update_client.php:1