1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
payment.php
См. документацию.
1<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();?><?
2include(dirname(__FILE__)."/common.php");
3
10$strExeDir = dirname(CSalePaySystemAction::GetParamValue("PAYFLOW_EXE_PATH"));
12$ORDER_ID = IntVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ID"]);
13?>
14<table border="0" width="100%" cellpadding="2" cellspacing="2">
15 <tr>
16 <td class="but2" align="center">
17 <?
18 //***************************************************
19 //*** START ACTION ********************************
20 //***************************************************
22 $bNonePay = True;
23 if (strlen($_POST["GetPayRes"]) > 0)
24 {
25 $cardnum = htmlspecialcharsbx(Trim($_POST["cardnum"]));
26 $cardnum = preg_replace("#[\D]#i", "", $cardnum);
27 if (strlen($cardnum) <=0 )
28 $strErrorTmp.= "Please fill in \"Credit Card Number\" field. ";
29
30 $cvv2 = htmlspecialcharsbx(Trim($_POST["cvv2"]));
31 if (strlen($cvv2) <= 0)
32 $strErrorTmp.= "Please fill in \"CVV2\" field. ";
33
34 $cardexp1 = IntVal(htmlspecialcharsbx($_POST["cardexp1"]));
35 $cardexp2 = IntVal(htmlspecialcharsbx($_POST["cardexp2"]));
36 if ($cardexp1 < 1 || $cardexp1 > 12)
37 $strErrorTmp.= "Please fill in \"Expiration Date\" field. ";
38 elseif ($cardexp2 < 4 || $cardexp2 > 99)
39 $strErrorTmp.= "Please fill in \"Expiration Date\" field. ";
40 else
41 {
42 $cardexp1 = ((strlen($cardexp1) < 2) ? "0".$cardexp1 : $cardexp1);
43 $cardexp2 = ((strlen($cardexp2) < 2) ? "0".$cardexp2 : $cardexp2);
44 }
45
46 $noc = htmlspecialcharsbx(trim($_POST["noc"]));
47 if (strlen($noc) <= 0)
48 $strErrorTmp.= "Please fill in \"Cardholder\" field. ";
49
50 $address1 = htmlspecialcharsbx(trim($_POST["address1"]));
51 if (strlen($address1) <= 0)
52 $strErrorTmp.= "Please fill in \"Address\" field. ";
53
54 $zipcode = htmlspecialcharsbx(trim($_POST["zipcode"]));
55 if (strlen($zipcode) <= 0)
56 $strErrorTmp.= "Please fill in \"Zip\" field. ";
57
58 if (strlen($strErrorTmp) <= 0)
59 {
60 $ret_var = "";
61
62 $AMT = $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"];
63 if ($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"] != "USD")
64 {
65 $AMT = CCurrencyRates::ConvertCurrency($AMT, $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"], "USD");
66
67 $additor = 1;
68 for ($i = 0; $i < SALE_VALUE_PRECISION; $i++)
69 $additor = $additor / 10;
70
71 $AMT_tmp = round($AMT, SALE_VALUE_PRECISION);
72 while ($AMT_tmp < $AMT)
73 $AMT_tmp = round($AMT_tmp + $additor, SALE_VALUE_PRECISION);
74
75 $AMT = $AMT_tmp;
76 }
77 $AMT = str_replace(",", ".", $AMT);
78 $cardExp = $cardexp1.$cardexp2;
79
80 $parms = "ACCT=".urlencode($cardnum); // Credit card number
81 $parms .= "&CVV2=".urlencode($cvv2); // CVV2
82 $parms .= "&AMT=".urlencode($AMT); // Amount (US Dollars)
83 $parms .= "&EXPDATE=".urlencode($cardExp); // Expiration date
84 $parms .= "&PARTNER=".urlencode($PF_PARTNER); // Partner
85 $parms .= "&PWD=".urlencode($PF_PWD); // Password
86 $parms .= "&TENDER=C"; // ...
87 $parms .= "&TRXTYPE=S"; // Kind of transaction: Sale
88 $parms .= "&USER=".urlencode($PF_USER); // Login ID
89 $parms .= "&VENDOR=".urlencode($PF_USER); // Vendor ID
90 $parms .= "&ZIP=".urlencode($zipcode); // Zip
91 $parms .= "&STREET=".urlencode($address1); // Address
92 $parms .= "&COMMENT1=".urlencode($ORDER_ID);
93 $parms .= "&COMMENT2=".urlencode($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT"]);
94
95 $ret_com = "$strExePath $PF_HOST $PF_PORT \"$parms\" 30";
96
97 putenv("PFPRO_CERT_PATH=".$PFPRO_CERT_PATH);
98 putenv("LD_LIBRARY_PATH=".$strExeDir);
99
100 exec($ret_com, $arOutput, $ret_var);
101
102 $strOutput = $arOutput[0];
103 parse_str($strOutput, $arResult);
104
105 if (is_array($arResult) && strlen($arResult["RESULT"])>0)
106 {
108 "PS_STATUS" => (($arResult["RESULT"]==0) ? "Y" : "N"),
109 "PS_STATUS_CODE" => $arResult["RESULT"],
110 "PS_STATUS_DESCRIPTION" => $arResult["RESPMSG"]." - ".$arResult["PREFPSMSG"],
111 "PS_STATUS_MESSAGE" => $arResult["PNREF"],
112 "PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG)))
113 );
114
115 $arResult["RESULT"] = IntVal($arResult["RESULT"]);
116 if ($arResult["RESULT"]==0)
117 {
118 CSaleOrder::PayOrder($ORDER_ID, "Y");
119 }
120
122
123 $arResult["RESULT"] = IntVal($arResult["RESULT"]);
124 if ($arResult["RESULT"]==0)
125 $bNonePay = False;
126 else
127 {
128 if ($arResult["RESULT"]<0)
129 {
130 $strErrorTmp.= "Communication Error: [".$arResult["RESULT"]."] ".$arResult["RESPMSG"]." - ".$arResult["PREFPSMSG"].". ";
131 }
132 elseif ($arPaySysRes_tmp["RESULT"]==125)
133 {
134 $strErrorTmp.= "Your payment is declined by Fraud Service. Please contact us to make payment. ";
135 }
136 elseif ($arResult["RESULT"]==126)
137 {
138 $strErrorTmp.= "Your payment is under review by Fraud Service. We contact you in 48 hours to get more specific information. ";
139 }
141 {
142 $strErrorTmp.= $arErrorCodes[$arResult["RESULT"]].". ";
143 }
144 else
145 {
146 $strErrorTmp.= "Unknown error. ";
147 }
148 }
149 }
150 else
151 $strErrorTmp.= "Response error. ";
152 }
153 }
154 //***************************************************
155 //*** END ACTION **********************************
156 //***************************************************
157
158 if (!$bNonePay)
159 {
160 ?>
161 <font class="text" color="#009900"><b>
162 Thank you for purchasing!<br>
163 You have been billed <?echo SaleFormatCurrency($AMT, "USD") ?></b>
164 </font>
165 <?
166 }
167 else
168 {
169 if (strlen($strErrorTmp) > 0)
170 echo "<font color=\"#FF0000\"><b>".$strErrorTmp."</b></font><br>";
171
175 ?>
176 <script type="text/javascript">
177 function checkFields(frm)
178 {
179 if (frm.elements['cardnum'].value == '')
180 {
181 alert('Card number missing');
182 return false;
183 }
184 if (frm.elements['cvv2'].value == '')
185 {
186 alert('CVV2 missing');
187 return false;
188 }
189
190 var now = new Date();
191
192 expyear = parseInt("20" + frm.elements['cardexp2'].value);
193 expmonth = parseInt("" + frm.elements['cardexp1'].value);
194 curMonth = now.getMonth();
195 if ( (expyear < now.getFullYear()) || ((expyear == now.getFullYear()) && (expmonth <= curMonth)) )
196 {
197 alert('Incorrect expiration date');
198 return false;
199 }
200 if (frm.elements['noc'].value == '')
201 {
202 alert('Cardholder name missing');
203 return false;
204 }
205 if (frm.elements['address1'].value == '')
206 {
207 alert('Cardholder address missing');
208 return false;
209 }
210 if (frm.elements['zipcode'].value == '')
211 {
212 alert('Cardholder zip code missing');
213 return false;
214 }
215 return true;
216 }
217 </script>
218
219 <form onsubmit="return checkFields(this)" method="post" action="">
220 <input type="hidden" name="CurrentStep" value="<?= IntVal($GLOBALS["CurrentStep"]) ?>">
221 <input type="hidden" name="ORDER_ID" value="<?= $ORDER_ID ?>">
222 <input type="hidden" name="GetPayRes" value="YES">
223 <table>
224 <tr>
225 <th><font class="text">Credit&nbsp;Card&nbsp;Number</font></th>
226 <td><input class="inputtext" maxlength="16" type="text" name="cardnum" value="<?= htmlspecialcharsbx($cardnum) ?>" size="35"></td>
227 </tr>
228 <tr>
229 <th><font class="text">CVV2</font></th>
230 <td><input type="text" class="inputtext" maxlength="4" name="cvv2" value="<?= htmlspecialcharsbx($cvv2) ?>" size="5"></td>
231 </tr>
232 <tr>
233 <th><font class="text">Expiration&nbsp;Date&nbsp;(MM/YY)</font></th>
234 <td>
235 <select name="cardexp1" class="inputselect">
236 <?
237 $curMonth = intval(date("m"));
238 if (empty($cardexp1)) $cardexp1 = $curMonth;
239 for ($i = 1; $i <= 12; $i++)
240 {
241 $val = (($i < 10) ? "0" : "").$i;
242 ?>
243 <option value="<?= $val ?>" <?if ($cardexp1 == $val) echo "selected=\"selected\"";?>><?= $val ?></option>
244 <?
245 }
246 ?>
247 </select>
248 <select name="cardexp2" class="inputselect">
249 <?
250 $curYear = intval(date("y"));
251 if (empty($cardexp2)) $cardexp2 = $curYear;
252 for ($i = $curYear; $i <= $curYear + 10; $i++)
253 {
254 $val = (($i < 10) ? "0" : "").$i;
255 $fullYear = 2000 + intval($val);
256 ?>
257 <option value="<?= $val ?>" <?if ($cardexp2 == $val) echo "selected";?>><?= $fullYear ?></option>
258 <?
259 }
260 ?>
261 </SELECT>
262 </td>
263 </tr>
264 <tr>
265 <th>Cardholder</th>
266 <td><input type="text" maxlength="250" class="inputtext" name="noc" value="<?echo (strlen($noc) > 0) ? $noc : $noc_def ?>"></td>
267 </tr>
268 <tr>
269 <th>Address</th>
270 <td><input type="text" size="30" maxlength="250" class="inputtext" name="address1" value="<?echo (strlen($address1) > 0) ? $address1 : $address1_def ?>"></td>
271 </tr>
272 <tr>
273 <th>Zip</th>
274 <td><input type="text" maxlength="10" class="inputtext" name="zipcode" value="<?echo (strlen($zipcode) > 0) ? $zipcode : $zipcode_def ?>"></td>
275 </tr>
276 <tr>
277 <th></th>
278 <td>
279 <input type="submit" value="Proceed" class="inputbutton">
280 </td>
281 </tr>
282 </table>
283
284 </form>
285 <?
286 }
287 ?>
288 </td>
289 </tr>
290</table>
return select
Определения access_edit.php:440
$arResult
Определения generate_coupon.php:16
static ConvertCurrency($valSum, $curFrom, $curTo, $valDate="")
Определения currency_rate.php:393
static GetParamValue($key, $defaultValue=null)
Определения pay_system_action.php:76
static Update($ID, $arFields, $bDateUpdate=true)
Определения order.php:140
$arFields
Определения dblapprove.php:5
& nbsp
Определения epilog_main_admin.php:38
bx popup label bx width30 PAGE_NEW_MENU_NAME text width
Определения file_new.php:677
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
background color
Определения file_new.php:745
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
is_set($a, $k=false)
Определения tools.php:2133
$noc_def
Определения payment.php:172
$strErrorTmp
Определения payment.php:21
$strExeDir
Определения payment.php:10
$zipcode_def
Определения payment.php:174
for($i=1; $i<=12; $i++) $curYear
Определения payment.php:250
$curMonth
Определения payment.php:237
$address1_def
Определения payment.php:173
$bNonePay
Определения payment.php:22
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
die
Определения quickway.php:367
$i
Определения factura.php:643
font size
Определения invoice.php:442
$ORDER_ID
Определения html.php:2
text align
Определения template.php:556
SaleFormatCurrency($fSum, $strCurrency, $OnlyValue=false, $withoutFormat=false)
Определения include.php:142
const SALE_VALUE_PRECISION
Определения include.php:46
$val
Определения options.php:1793
$strExePath
Определения action.php:31
$PF_USER
Определения action.php:28
$PF_PARTNER
Определения action.php:30
$PFPRO_CERT_PATH
Определения action.php:32
$PF_PORT
Определения action.php:27
$PF_HOST
Определения action.php:26
$PF_PWD
Определения action.php:29
$arErrorCodes
Определения common.php:2
$GLOBALS['_____370096793']
Определения update_client.php:1