Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > Buy Now кнопки, PayPal, SSL, PHP


Автор: artfabrique 15.4.2007, 15:44
в системе приема платежей PayPal есть 2 вида приема:
1)карзина
2)Buy Now (по одному-надал оформил-купил)


Меня интересует 2-е.
при нажатии на стандартную Buy Now кнопку открывается ссылка что то вроде такого:

paypal.com/buynow?имя_товара=Товар&его_цена=1000&другие_параметры

и при подмене цены можно в лёгкую за этот тавар меньше платить

paypal.com/buynow?имя_товара=Товар&его_цена=1&другие_параметры

а можно эту кнопку шифронуть типа

paypal.com/buynow?шифр=HF78Y3HF8Y4VN83467GV250FJJA8734HLDFKHK99568U

И тут уже них.. ничего не поменять. =)

Они пишут что поддерживают SSL.
Можете мне описать по пунктам как должно происходить генерация ссылки зашифрованной и какие настройки должны быть на стороне сервера и у меня. Естественно все это нада делать средствами PHP5+MySQL(где сами товары записаны)

Автор: ilyalyu 15.4.2007, 19:54
насколько я помню, надо после покупки с помощью скрипта проверить ее статус, в том числе величину платежа, валюту платежа и т.д. зашифрованными кнопками не пользовался.

Автор: Всемогущий 15.4.2007, 21:27
прикольно


Цитата(artfabrique @  15.4.2007,  17:44 Найти цитируемый пост)
paypal.com/buynow?имя_товара=Товар&его_цена=1000&другие_параметры

предположим ссылка генерируется автоматом
типа get_link(цена,номер товара,и другие параметры,,,);
мудрить не будем создаём массив из тех данных которые мы получили серелизуем их и шифруем

если строка будет черезчур длинной найди менее крутой алгоритм чем loki97

пожалуйста отпишись о результатах

Код

<?php
$delta=array('первый'=>'один');
echo $ddd=get_link($delta);
//далее эту белиберду можно расшифровать
 print_r(set_link($ddd)) ;




    function ccrupt($password){
      $key =  md5('ужасно длинный секретный пароль который никто никогда не узнает!');
$td = mcrypt_module_open ('loki97', '', 'cbc', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
$ks = mcrypt_enc_get_key_size ($td);
$key = substr ($key, 0, $ks);
mcrypt_generic_init ($td, $key, $iv);
$password = mcrypt_generic ($td, $password);
mcrypt_generic_deinit ($td);
$password = bin2hex($password);
//print "Зашифрованный пароль: $password<br>";
$hex_iv = bin2hex($iv);
//print "Вектор инициализации: $hex_iv<br>";
mcrypt_module_close ($td);
return(array($password,$hex_iv));
}
function unccrupt($password,$hex_iv) {
     $key =  md5('ужасно длинный секретный пароль который никто никогда не узнает!');
$password = pack("H*", $password);
$iv = pack("H*", $hex_iv);
$td = mcrypt_module_open ('loki97', '', 'cbc', '');
mcrypt_generic_init ($td, $key, $iv);
$password = mdecrypt_generic ($td, $password);
mcrypt_generic_deinit ($td);
mcrypt_module_close ($td);
return $password;  }

function get_link(){
       $new=serialize(func_get_args ()) ;
       $pass=ccrupt($new)  ;
      return  $pass[0].'|||'.$pass[1]   ;
        }




 function set_link($bileberda){
         $temp1=explode('|||',$bileberda);
         //расшифровываем
         $cruptunserialize=unccrupt($temp1[0],$temp1[1]);
         //далее получаем нормальный массив
         $forget=unserialize($cruptunserialize);
         //из гета пришло путь туда и поподает
         $_GET['crupt']=$forget;
         //зависит от желания этот массив можно и сразу получить
         return  $forget;
        }

?>

Автор: Всемогущий 15.4.2007, 22:25
успел...........
Код


<?php
//  данные можно не только шифровать но и подписывать

function do_link()  {
         $new=serialize(func_get_args());
         $output=$new.'|||'.md5('когда подбирают пробуют вставить всякую лажу в конец а у меня и в начале что то да есть'.$new.'секретный ключ не подберёшь!!:)');
         return base64_encode( $output);
         }

function unfrees_link($input)  {
         $new=base64_decode($input);
         $mydata=explode('|||',$new);
         $skey=md5('когда подбирают пробуют вставить всякую лажу в конец а у меня и в начале что то да есть'.$mydata[0].'секретный ключ не подберёшь!!:)');
         if($skey==$mydata[1]){
         $new=unserialize($mydata[0]);
         return $new;}else die('Ё моё злобный хакер :[');
         }

 $delta=array('первый'=>'один','второй'=>'два');
echo $ccrrupt=do_link($delta);

 print_r(unfrees_link($ccrrupt))  ;
  print_r(unfrees_link(base64_encode('a:1:{i:0;a:2:{s:6:"первый";s:4:"один";s:6:"второй";s:3:"ТРИ";}}|||5581df0451fc3b481ceb4cb3187d5aa2 ')))  ;

?>

Автор: Всемогущий 16.4.2007, 00:52
Код

<?php

 function unfrees_link($input)  {
 //я ещё подумал,а если вообще придёт не весть что?
 //то что придёт обязательно должно содержать |||
         $new=base64_decode($input);
         if(!stripos ($new,'|||')) die('Ё моё злобный хакер :[');
         $mydata=explode('|||',$new);
         $skey=md5('когда подбирают пробуют вставить всякую лажу в конец а у меня и в начале что то да есть'.$mydata[0].'секретный ключ не подберёшь!!:)');
         /* //вместо этой строки можно столько понаписать:)
         $skey='мега секретная надпись';
         //для начала а почему собственно сама строка только 1 раз, исправим это
         $skey.=$mydata[0].$mydata[0].$mydata[0].$mydata[0];
         //далее юзер агент не помешает пусть на чём работает вот пусть и не слазит
         $skey.=$_SERVER["HTTP_USER_AGENT"];
         //хорошо бы и время учесть пусть не отвлекается
         $skey.=' ';
         $skey='секретный ключ не подберёшь!!:)';
         $skey=md5($skey);         */

         if($skey==$mydata[1]){
         $new=unserialize($mydata[0]);
         return $new;}else die('Ё моё злобный хакер :[');
         }
 print_r(unfrees_link('YToyOntpOjA7aTo1O2k6MTtpOjY7fXx8fGRmZTEzYmQ3MjIzYWMwMDQ2MzNlNmY0ZTI4YmYzZTRi'));
?>

 smile 

Автор: artfabrique 16.4.2007, 01:57
ты не понял похоже... аглгорим шифрования придумать не сложно.
а как пэйпал разшифрует то что я ему послал?

Я поэтому и спрашиваю про SSL и сертефикаты как это все пашет.. как спомощью пхп и сертефера шифруют..
как делать сертеферы итд.

Автор: boombick 16.4.2007, 10:21
Что мешает после после факта оплаты проверить все? PayPal возвращает все данные о совершенной оплате.. Вот и проверяй, если оплата была меньше, чем заявлена, то бабло можешь оставит себе, а товар не отгружать smile И никто даже предъявить ничего не сможет

Автор: artfabrique 17.4.2007, 05:49
для этого чнловек нужен на зарплате. а система должна быть автоматизирована. Так что может кто-то с OpenSSL работал на PHP?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)