Guest User

Код для автоматизации продаж через сервис Oplata.info

a guest
Aug 7th, 2010
727
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.89 KB | None | 0 0
  1. function confirm_getcode($code) {
  2.         // $code - сюда передаешь код, который юзер получил при покупке.
  3.         if (!$code) die('NO_CODE_GIVEN');
  4.  
  5.         $fp = fsockopen("shop.digiseller.ru", 80);
  6.         if (!$fp) die('NO_SOCK');
  7.  
  8.         $seller_id = тут_твой_digiseller_id;
  9.         $pwd = 'пароль_к_сервису_digisellect';
  10.         // формируем подпись
  11.         $sign = md5($seller_id . ":" . $code . ":" . $pwd);
  12.  
  13.         $postdata = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>".
  14.                     "<digiseller.request> <id_seller>$seller_id</id_seller> <unique_code>$code</unique_code> <sign>$sign</sign> </digiseller.request>";
  15.  
  16.         fputs($fp,      "POST /xml/check_unique_code.asp HTTP/1.1\r\n".
  17.                                 "Host: shop.digiseller.ru\r\n".
  18.                                 "User-Agent: Web-Parser Client\r\n".
  19.                                 "Connection: close\r\n".
  20.                                 "Content-Length: ".strlen($postdata)."\r\n\r\n".$postdata);
  21.         $recv = '';
  22.         while (!feof($fp)) {
  23.                 $recv .= fgets($fp, 1024);
  24.         }
  25.         fclose($fp);
  26. // в $recv твой буффер с xml
  27.  
  28.         $regex = "#.*?<digiseller\.response>.*?<retval>(\d+)</retval>.*?<retdesc>(.*?)</retdesc>.*?<id_seller>\d+</id_seller>.*?<unique_code>.*?</unique_code>.*?<inv>.*?</inv>.*?<id_goods>.*?</id_goods>.*?$
  29. // теперь просто парсим - и выдираем значения
  30.        if (preg_match($regex, $recv, $matches)) {
  31.                list($self, $retval, $retdesc, $amount,$type_curr,$unit_goods,$cnt_goods) = $matches;
  32.                if ($retval!=0) {
  33.                        $retdesc = "Возникла ошибка при обращении к DigiSeller... Если будет повторяться - обратитесь к нам за помощью :)";
  34.                        if (preg_match("#<retdesc>(.*?)</retdesc>#", $recv, $error)) $retdesc = $error[1];
  35.                        die($retdesc);
  36.                 }
  37.               // ... что-то делаем с данными ($code - код переденный клиентом, $amount - колич. полученных денег, $type_curr - валюта (напр. WMZ)
  38.              // $unit_goods - ед. измерения товара
  39.              // $cnt_goods - кол-во ед. товара
  40.              // $retval - возвращаемое значение. если != 0, то смотреть описание ошибки (оно будет в $retdesc)
  41.        
  42.           // если дошло до этого места - то успех.
  43.           // выводим какие-то данные клиенту  
  44.        
  45.            } else  {
  46.                 die("Вероятно, введенный код недействителен");
  47.         }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment