Автозаполнение формы php
Доброго времени суток!
У меня есть задача научить php скрипт совершать внутренние переводы (с моего счета на счет другого человека) в qiwi, все бы хорошо но они выдают каждому переводу номер транзакции(как все). Сразу после нажатия на кнопку отправить httpfox палит ссылку на state.action в который отправляют сумму номер телефона и номер транзакции, следовательно номер транзакции присваевается в скрипте который находится на одной страничке с формой (https://w.qiwi.com/payment/transfer/form.action) получается мне сразу туда гетом отправлять номер и сумму? Если да то как? а то я с php не очень дружу, документацию и статейки по curl читал, но почти ничего не понял Все, заполнять получается но отправлять пока нет, оказывется уникальный номер транзакции генерится для кнопки "отправить" при каждом обновлении странички и его можно подглядеть в исходниках странички, но как вырвать его и перенести в запрос не понимаю <button>data-params="{"data":{"state":"CONFIRM","t":"-3750918538008430731","protected":"true"}}"</button> вот так выглядит кнопка, мне нужно забирать вот это "t":"-3750918538008430731" |
один из возможных cпособов манимупяляциями dom на серверной стороне это использование simple-dom.
Читаем описание на хабре. http://habrahabr.ru/post/114143/ Curl отвечает за эмуляцию поведения браузера а не пользователя. тоесть мы имитируем запросы браузера к серверной части, а не нажатие кнопок пользователем. сорри, новый год снегурочки и и коньяк Подробности завтра, сегодня я уже в хлам :) |
DjDiablo,
ты красавчик!:) ps они не дают плюсануть( |
Цитата:
|
возникла проблемка, когда я делаю запрос вот такого вида:
https://w.qiwi.com/user/payment/form/state.action?extra%5B%27account%27%5D=%2Bномер получателя&source=qiwi_RUB&amountInteger=сумма(рубли)&amountFraction=сумма(копейки)¤cy=RUB&extra%5B%27comment%27%5D=&state=CONFIRM&t=номер транзакции (вырывю из dom)&protected=true скрипт обрабатывающий запрос с радостью меня пропускает и просит подтвердить оплату, когда подтверждаю пишет 'техническая ошибка' перехожу вроде от куда нужно. Может они как то по реферу проверяют? |
хз, отсюда невидно :)
мож куки надо включить? рефер обходится через curl_setopt($curl, CURLOPT_REFERER, "url откуда якобы перешли"); есть ещё CURLOPT_AUTOREFERER. |
Так, вот код я что то не догоняю видимо.
<?php header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Content-Type: text/html; charset=utf-8"); header("Pragma: no-cache"); set_time_limit(0); error_reporting(E_ALL); define('ROOT', dirname(__FILE__).'/'); $cookie_filename = ROOT.'temp/'.uniqid(md5(time()), true).'.tmp'; $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1'); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_filename); curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_filename); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); $phone = ''; //телефон он счета в виде 79180000007 $password = ''; //пароль от счета $phoneClient = '';//телефон получателя в виде 79180000007 $t = '';// t оказывается просто генерируемая переменная, пока беру руками $rub = '1';//сколько рублей $cop = '00';//сколько копеек curl_setopt($curl, CURLOPT_REFERER, 'https://w.qiwi.com' ); curl_setopt($curl, CURLOPT_URL, 'https://w.qiwi.com/auth/login.action?source=MENU&login=%2B' .$phone. '&password=' .$password.'');//авторизация $page = curl_exec($curl); curl_setopt($curl, CURLOPT_REFERER, 'https://w.qiwi.com/payment/transfer/form.action' ); curl_setopt($curl, CURLOPT_URL, 'https://w.qiwi.com/user/payment/form/state.action?extra%5B%27account%27%5D=%2B'.$phoneClient.'&source=qiwi_RUB&amountInteger='.$rub.'&amountFraction='.$cop. '¤cy=RUB&extra%5B%27comment%27%5D=&state=CONFIRM&t='.$t.'&protected=true');//отправка данных на скрипт обработчик с рефером формы $page = curl_exec($curl); curl_setopt($curl, CURLOPT_REFERER, 'https://w.qiwi.com/payment/state.action?state=CONFIRM&t='.$t.'&protected=true'); curl_setopt($curl, CURLOPT_URL, 'https://w.qiwi.com/payment/form/state.action?state=PAY&t='.$t.'');//вроде как эмуляция кннопки "подтвердить" $page = curl_exec($curl); curl_setopt($curl, CURLOPT_URL, 'https://w.qiwi.com/payment/main.action?refresh=true');//обновление главной $page = curl_exec($curl); print_r( $page ); @unlink($cookie_filename); curl_close($curl); ?> t - оказывается просто переменная, а номер транзакции мы получаем при отправлении этого запроса https://w.qiwi.com/payment/form/stat...n?state=PAY&t= конечный запрос выглядит так: https://w.qiwi.com/user/offer/show.a...ion=3521236456 По задумке скрипт должен после авторизации подавать признаки жизни, но он не хочет. :-/ |
Часовой пояс GMT +3, время: 22:49. |