Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Способы реализации оплаты через кредитные карты в Израилье (Вопрос к valenok)
Форумы портала PHP.SU » Разное » Прочее » Способы реализации оплаты через кредитные карты в Израилье (Вопрос к valenok)

Страниц (1): [1]
 

1. Land - 14 Апреля, 2011 - 10:27:55 - перейти к сообщению
Вопрос к valenok

Взялся за проект онлайн магазина, клиент не настаивает, но сказал что было бы неплохо создать такую опцию оплаты. Много раз заказывал через Zap, все магазины довольно похожи, не удивлюсь если одной и той же CMS. Интересует как можно принимать от клиентов оплату с карт? Есть ли специальные моды для ecommerce или у нас существуют другие альтернативы?

Спасибо.
2. valenok - 14 Апреля, 2011 - 12:09:05 - перейти к сообщению
Оплата кредитками происходит через специальных агентов
pelecard.co.il и tranzila.com
открытие счета стоит у них порядка 120$
в последствии вы от них получите учетную запись, ссылку и документацию по доступу к их веб сервису. За каждую транзакцию вам будет поступать около 96% от суммы покупки.

В отличии от веб мани, пользователь не перенаправляется на другой сайт для оплаты.
Оплата происходит следующим образом:
пользователь вводит на твоем сайте данные своей кредитки,
ты в своем скрипте открываешь сокет и подключаешься к серверу одной из этих компаний,
отправляешь им эти данные, ждешь пол секунды и получаешь один из сотни возможных кодов-ответов. Чаще всего это "все ок" или "какие-то данные не верны".

Еще желательно выписать клиенту квитанцию об оплате.
Для этого я использовал сервис invoice4u.co.il
у которырх регистрация бесплатна и оплата получается парой центов за квитанцию.
После регистрации так-же получаешь йд и пароль, который и отправляешь в качестве одного из параметров в своем коде. В ответ получаешь ссылку на квитанцию.
Сервис умеет одновременно и отправлять квитанцию на имейл пользователя.

Для pelecard и invoice4u у меня есть готовые функции.
Правда без документаций от них они могут быть не очень понятными.

PHP:
скопировать код в буфер обмена
  1.  
  2. class paylecard
  3. {
  4.         public static $host = "secure.pelecard.co.il";
  5.         public static $path = "/NetsafeWebSrvc/NetSafeSrvc.asmx/DebitRegularType";
  6.        
  7.         public static function pay($creditcard, $creditcarddateMMYY, $total, $taz, $cvv, $parmx,
  8.                                  $TermNo = '0962210', $ShopNo = '1', $currency = 1)
  9.         {
  10.  
  11.                 $data = 'TermNo='.$TermNo.'&ShopNo='.$ShopNo.'&creditcard='.$creditcard.
  12.                                 '&creditcarddateMMYY='.$creditcarddateMMYY.'&total='.$total.'&ID='.$taz.'&CVV='.$cvv.
  13.                                 '&ParmX='.$parmx.'&Currncy='.$currency ;
  14.                
  15.                 $fp = fsockopen( paylecard::$host, 443, $errno, $errstr, 10 );
  16.                 if(!$fp) return "socket error";
  17.                
  18.                 fputs
  19.                 (
  20.                         $fp,
  21.                         "POST ". paylecard::$path ." HTTP/1.1\n".
  22.                         "Host: ".paylecard::$host." \n" .
  23.                         "Accept: application/x-www-form-urlencoded\n" .
  24.                         "Connection: Close\n" .
  25.                         "Content-type: application/x-www-form-urlencoded\n".
  26.                         "Content-length: ".strlen( $data )."\n\n" . $data ."\n\n"
  27.                 );
  28.                
  29.                 $out = '';
  30.                 while (!feof($fp)) $out .= fgets($fp, 128);
  31.                 fclose($fp);
  32.                 $GLOBALS['out'] = $out;
  33.  
  34.  
  35.                 $res = substr(trim(strip_tags(substr($out, 10+strpos($out, "Service1\">")))), 0, 3);
  36.                 $GLOBALS['res'] = $res;
  37.                
  38.                 if($res == '000') return true;
  39.                 return $res;
  40.  
  41.         }
  42.        
  43.        
  44.        
  45.        
  46.        
  47.        
  48.        
  49.        
  50.         public static function invoice4u($itemid, $description, $quantity, $item_price,
  51.         $shipment_price, $client, $email, $invoice_overall_description='' , $comments = '', $discount = 0)
  52.         {
  53.                
  54.                 global $i4u_username, $i4u_maam_rate, $i4u_shipment_text, $i4u_userkey;
  55.                 $data = http_build_query( array
  56.                 (
  57.                         'ReplyURL' => '',//'invoiceSent.php',
  58.                         'TransType' => 'IR:CREATE',
  59.                         'Username' => $i4u_username,
  60.                         'Key' => $i4u_userkey,
  61.                         'InvoiceSubject' => iconv('UTF-8', 'Windows-1255', $invoice_overall_description),
  62.                         'InvoiceItemCode' => $itemid.'|0', // Append shipment
  63.                         'InvoiceItemDescription' => iconv('UTF-8', 'Windows-1255', $description).'|'.$i4u_shipment_text,
  64.                         'InvoiceItemQuantity' => $quantity."|1", // append one shipment
  65.                         'InvoiceItemPrice' => ($item_price/((100+$i4u_maam_rate)/100))."|".($shipment_price/((100+$i4u_maam_rate)/100)),
  66.                         'InvoiceDiscount' => $discount,
  67.                         'InvoiceComments' => iconv('UTF-8', 'Windows-1255', $comments),
  68.                         'CompanyCode' => '',
  69.                         'CompanyInfo' => iconv('UTF-8', 'Windows-1255',$client),
  70.                         'MailTo' => $email
  71.                 ));
  72.                
  73.                
  74.                 // for multiple items in a single invoice, sepereate them with |
  75.                 // InvoiceItemCode, InvoiceItemDescription, InvoiceItemQuantity, InvoiceItemPrice must have the same count of items.
  76.                 // Items are separated by the PIPE symbol.
  77.  
  78.                
  79.  
  80.                 $ch = curl_init('http://account.invoice4u.co.il/public/HttpPost.aspx');
  81.                 curl_setopt($ch, CURLOPT_POST, 1);
  82.                 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  83.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  84.  
  85.                 $r = curl_exec($ch);
  86.                 $response = explode('<BR>',$r);
  87.                
  88.        
  89.                 $return = new stdClass();
  90.                
  91.                 $responseCode = explode(':',$response[0]);
  92.                 $return->code =  $responseCode[1];
  93.                
  94.                 $responseStatus = explode(':',$response[1]);
  95.                 $return->status =  $responseStatus[1];
  96.                
  97.                 $docNum = explode(':',$response[2]);
  98.                 $return->docnum = $docNum[1];
  99.                
  100.                 $docUrl = explode(':', $response[3]);
  101.                 $return->url = $docUrl[1].':'.$docUrl[2]; // http : // ...
  102.                
  103.                 return $return;
  104.  
  105.         }
  106.                
  107. }      
  108.  
3. Land - 14 Апреля, 2011 - 13:27:34 - перейти к сообщению
В очередной раз большое спасибо за помощь, valenok. Приду домой, обязательно изучу информацию.

С уважением, Land.

 

Powered by ExBB FM 1.0 RC1