nikestylex7
31.12.2013, 17:48:23
Witam. Czy robił już to ktoś? Staram się zrobić tak jak tłumaczą lecz nie są zwracane żadne dane. Chciałbym aby dodatkowo w płatności było id osoby która tą płatność dokonała, data kiedy potem po prostu zrobić update bazy dodać 30dni dodatkowo. Może mógłby mnie ktoś nakierować?
Przykładowy odbiór ma wyglądać tak
<?php // sprawdzenie adresu IP oraz występowania zmiennych POST
if($_SERVER['REMOTE_ADDR']=='195.149.229.109' && !empty($_POST)){ $id_sprzedawcy = $_POST['id'];
$status_transakcji = $_POST['tr_status'];
$id_transakcji = $_POST['tr_id'];
$kwota_transakcji = $_POST['tr_amount'];
$kwota_zaplacona = $_POST['tr_paid'];
$blad = $_POST['tr_error'];
$data_transakcji = $_POST['tr_date'];
$opis_transakcji = $_POST['tr_desc'];
$ciag_pomocniczy = $_POST['tr_crc'];
$email_klienta = $_POST['tr_email'];
$suma_kontrolna = $_POST['md5sum'];
// sprawdzenie stanu transakcji
if($status_transakcji=='TRUE' && $blad=='none'){
/* Dalsze przetwarzanie, np: - identyfikacja transakcji na podstawie ciągu pomocniczego - weryfikacja transakcji (sprawdzenie poprawności kwoty itp.) - realizacja zamówienia */
} else {
// transakcja wykonana niepoprawnie
// odpowiedź dla serwera o odebraniu danych ?>
kayman
31.12.2013, 18:05:00
żeby mieć id osoby lub inne dane trzeba je najpierw do nich wysłać
generalnie w formularzu wysyłania jest przewidziane pole/pola dla dodatkowych danych
ja robiłem coś takiego że przykładowo miałem do wysłania id + data + kwota netto to robiłem ciąg znaków -> 15a20131030a402a45 gdzie pierwsza liczba to id druga data trzecia kwota czwarta grosze

oczywiście to uproszczenie ale podaje ci pomysł jak prosto zakodować a potem rozkodować co potrzebujesz przemycić

btw. instrukcja jest ok, po chwili sie połapiesz co co chodzi
nikestylex7
31.12.2013, 18:20:06
Zakodować mogę w md5 lub hash lecz wysyłając do nich te dane oni nie zwracają mi ich z powrotem
mógłbyś pokazać jak zbudowałeś formularz?
kayman
31.12.2013, 18:22:06
to znaczy ze masz źle skonfigurowany formularz wysyłania w stosunku do ustawień konta w transferuj
a jak masz ustawiony to wiesz tylko ty

jak tryb testowy odpowie to i produkcyjny będzie działać

e:/
niestety nie bardzo mogę pokazać ale robiłem to z instrukcji
nikestylex7
31.12.2013, 18:24:05
pokaż ale zamianst danych umieść zmienna np $koza bede wiedział mniej więcej
kayman
31.12.2013, 18:36:05
function getTicketForm($brutto, $nazwa, $ticket, $netto) {
echo '<form style="text-align: center;" action="https://secure.transferuj.pl" method="post" accept-charset="utf-8">'; echo '<input type="hidden" name="id" value="8888">'; $id = '8888'; // twoje id czy inny kod z transferuj
$crc = $this->codeBackUrl($brutto, $ticket, $netto); // to tworzy ciąg znaków powrotnych
$kod = 'to wazne'; // jakis twoj kod na transferuj
$md5sum = md5($id . $cena . $crc . $kod); echo '<input type="hidden" name="kwota" value="' . $cena . '">'; echo '<input type="hidden" name="opis" value="' . $nazwa . '">'; echo '<input type="hidden" name="crc" value="' . $crc . '">'; echo '<input type="hidden" name="md5sum" value="' . $md5sum . '">'; echo '<input type="hidden" name="wyn_url" value="' . SITE
. 'payment.html">'; echo '<input type="hidden" name="wyn_email" value="Adres mailowy powiadomienia">'; echo '<input type="hidden" name="opis_sprzed" value="jakas firma">'; echo '<input type="hidden" name="pow_url" value="' . SITE
. 'payok.html">'; echo '<input type="hidden" name="pow_url_blad" value="' . SITE
. 'paybad.html">'; echo '<input type="hidden" name="email" value=""> <input type="hidden" name="nazwisko" value="">'; echo '<input type="hidden" name="imie" value="">'; echo '<input type="hidden" name="adres" value="">'; echo '<input type="hidden" name="miasto" value="">'; echo '<input type="hidden" name="kod" value="">'; echo '<input type="hidden" name="kraj" value="">'; echo '<input type="hidden" name="telefon" value="">'; echo '<input type="hidden" name="jezyk" value="pl">'; $this->getTRButtonForForm('Kupuję ' . $nazwa);
}
nikestylex7
31.12.2013, 18:39:15
a co masz po odbiorze tzn żeby wiedzieć jaka osoba kupiła jak odbierasz powrotne dane??
kayman
31.12.2013, 18:42:37
odbieram formularzem który pokazałeś i z pola crc rozkodowuje co mi potrzebne -> w wypadku tego potrzebuję id sprzedanego biletu by zmniejszyć ich dostępna ilość no i kwoty bo ktoś miedzy czasie mógł podać kod rabatowy
nikestylex7
31.12.2013, 18:50:22
ok powalcze z tym. Dam znać co i jak
a możesz podazać jak skonfigurowałeś to odbieranie danych
kayman
31.12.2013, 18:59:04
function pay() {
// sprawdzenie adresu IP oraz występowania zmiennych POST
if ($_SERVER['REMOTE_ADDR'] == '195.149.229.109' && !empty($_POST)) { $id_sprzedawcy = $_POST['id'];
$status_transakcji = $_POST['tr_status'];
$id_transakcji = $_POST['tr_id'];
$kwota_transakcji = $_POST['tr_amount'];
$kwota_zaplacona = $_POST['tr_paid'];
$blad = $_POST['tr_error'];
$data_transakcji = $_POST['tr_date'];
$opis_transakcji = $_POST['tr_desc'];
$ciag_pomocniczy = $_POST['tr_crc'];
$email_klienta = $_POST['tr_email'];
$suma_kontrolna = $_POST['md5sum'];
// sprawdzenie stanu transakcji
if ($status_transakcji == 'TRUE' && $blad == 'none') {
// obrobka togo co odebralem
echo 'TRUE'; // odpowiedź dla serwera o odebraniu danych }
}
jak mówiłem kopia twojego kodu
nikestylex7
31.12.2013, 19:10:14
a jak obrabiasz to co odebrales?
kayman
31.12.2013, 19:17:37
tego już pokazać nie mogę

generalnie jest to insert/update do 2-3 tabel w bazie typu zdjęcie ilości dostępnych biletów lub co tam potrzeba
klasa rozbija -> $ciag_pomocniczy = $_POST['tr_crc']; przez explode() i ma co obrabiać
nikestylex7
31.12.2013, 19:21:40
To tylko zmienne dlaczego nie mozesz pokazać jak się boisz to zmien zmienne i to mi pomoże
kayman
31.12.2013, 19:27:23
ale tu wszytko widać
to z przykładu -> ciąg znaków -> 15a20131030a402a45 gdzie pierwsza liczba to id druga data trzecia kwota czwarta grosze rozbijam $c= explode('a',$ciag_znakow) i wiem że $c[0] to id $c[1] to data etc
potem odpowiednie zapytania do bazy i koniec
poza tym to mój pomysł, wcale nie wiem czy najlepszy ale chodzi na kilku stronach i problemu nie ma
nikestylex7
1.01.2014, 16:44:45
nie wiem coś jest nie tak jakby serwer nie zwracał mi tych danych w post. Po zapłaceniu przekierowuje mnie na moją stronę i nic nawet komunikatu mojego nie wyświetla.
kayman
1.01.2014, 16:54:21
tu -> echo '<input type="hidden" name="wyn_url" value="' . SITE . 'payment.html">'; podaj pełny poprawny adres skryptu, potem sobie przekierujesz w .htaccess jak to bedzie konieczne, pełny to znaczy
http://domena.pl/skrypt.php
nikestylex7
1.01.2014, 17:05:08
a jak to Ci działa bo masz podane że dane ma Ci wysłać na payment a masz też podane żeby jak transakcja będzie poprawna to na payok
kayman
1.01.2014, 17:11:27
paymanent.html -> przekierowanie przez htaccess na skrypt php -> to obrabia co zwrócił serwer transferuj
payok.html -> statyczny html co sie wyswielta userowi jak platnosc jest ok
paybad.html -> jak wyzej tylko jak cos nie tak z platnoscia
wszedzie trzeba podac pelny adres -> u mnie to robi stala SITE plus nazwa dokumentu
nikestylex7
1.01.2014, 17:54:27
hmmm powiem Ci tak coś mam nie tak formularz mam dobrze bo tranzakcja przebiega poprawnie i jak przekierowywuje mnie to na payok a nie na payment wiec nic sie nie dzieje jak ustawie na payment gdzie mam obrobke to tak jak by zadne dane nie zostaly wyslane od serwera...
w panelu transferuj mam
Adres powiadomienia URL
https://strona.com/payment.php Zezwól na nadpisanie tak
w payment mam
<form action="https://secure.transferuj.pl" method="post">
<?php
$id = "111111"; // twoje id czy inny kod z transferuj
$cena = "139.99";
$crc = "dsfsfsfsfs"; // to tworzy ciąg znaków powrotnych
$kod = "f691ea8d7363b9ae"; // jakis twoj kod na transferuj
$md5sum = md5($id . $cena . $crc . $kod); ?>
<input type="hidden" name="id" value="11111">
<input type="hidden" name="kwota" value="
<? echo $cena; ?>">
<input type="hidden" name="opis" value="Płatność za abonament">
<input type="hidden" name="crc" value="
<? echo $crc; ?>">
<input type="hidden" name="md5sum" value="
<? echo $md5sum; ?>">
<input type="hidden" name="wyn_url" value="https://strona.com/payment.php">
<input type="hidden" name="wyn_email" value="Adres mailowy powiadomienia">
<input type="hidden" name="opis_sprzed" value="Twoja Giełda">
<input type="hidden" name="pow_url" value="https://strona.com/payok.php">
<input type="hidden" name="pow_url_blad" value="https://strona.com/paybad.php">
<input type="hidden" name="email" value="">
<input type="hidden" name="nazwisko" value="">
<input type="hidden" name="imie" value="">
<input type="hidden" name="adres" value="">
<input type="hidden" name="miasto" value="">
<input type="hidden" name="kod" value="">
<input type="hidden" name="kraj" value="">
<input type="hidden" name="telefon" value="">
<input type="hidden" name="jezyk" value="pl">
<input type="submit" name="Przejdź do płatności">
</form>
<?
if($_SERVER['REMOTE_ADDR']=='195.149.229.109' && !empty($_POST)){ $id_sprzedawcy = $_POST['id'];
$status_transakcji = $_POST['tr_status'];
$id_transakcji = $_POST['tr_id'];
$kwota_transakcji = $_POST['tr_amount'];
$kwota_zaplacona = $_POST['tr_paid'];
$blad = $_POST['tr_error'];
$data_transakcji = $_POST['tr_date'];
$opis_transakcji = $_POST['tr_desc'];
$ciag_pomocniczy = $_POST['tr_crc'];
$email_klienta = $_POST['tr_email'];
$suma_kontrolna = $_POST['md5sum'];
if($status_transakcji=='TRUE' && $blad=='none'){
} else {
oczywiście na razie dane sprawdzające tylko żeby zobaczyć czy dostaje odp od serwera a tu nic żadnego komunikatu od razu mi przechodzi na payok a co z payment i odbiorem danych?
kayman
1.01.2014, 17:58:04
tak ma być, user widzi payok.html, dane z serwera idą do innego skryptu
zwróć uwagę na to ze ze może być sytuacja ze serwer przekieruje usera na payok.html natychmiast a wyśle dane do payment.html np za 2 min po transakcji kiedy już user dawno wyszedł ze strony i zapomniał ze coś płacił

bardzo często występuje 30+ sek opóźnienia w odbieraniu danych w stosunku do przekierowania, ktoś słusznie uznał ze nie ma co wstrzymywać usera az serwer transferuj obrobi dane
nikestylex7
1.01.2014, 18:29:15
hmm czyli wszystko jest ok? i dane ktore wpisze w crc obrobie i updatuje do bazy wszystko bedzie smigac?
kurde a nie podesłał byś tego kodu swojej obróbki ? muszę to skończyć na dzisiaj a normalnie czuje się jak 0
kayman
1.01.2014, 18:30:49
przetestuj do skutku bo tu w grę wchodzi kasa, jak na stronie źle się wyświetli metatag to srał piej ale jak komuś wetnie 1000 zl lub nie będzie wiadomo czego one dotyczą to możne być przykro
nikestylex7
1.01.2014, 18:43:58
co do pieniedzy to mam to jako stała bo jest u mnie stała wartość już testuje a co do ciągu znaków to sam kodujesz dzieląc je litera "a" ? bo ja musze zakodować id i aktualną datę
chcę zrobić takie coś $crc = md5($id."a".$date);
potem do rozkodowaći podzielić
ale nie to nie może być kodowane więc bez md5
coś takiego
$user = $_SESSION['sss'];
$crc = $user."a".$date;
a używasz tych dodatkowych parametrów zwrotnych typu zaplacona kwota id , suma kontrolna?
kayman
1.01.2014, 18:47:21
$data_transakcji = $_POST['tr_date']; -> można wykorzystać to, wtedy masz w crc do przesłania tylko id i nie trzeba nic kodować ani rozkodowywać

e:/zacieram dane -. np id mnożę przez 2 lub dodaje dzisiejszy dzień miesiąca albo coś innego np losowy mnożnik/suma zmieniająca

wiesz jak to jest id biletu to nie są to dane wrażliwe w jakimkolwiek stopniu ale jak to może wskazywać na usera lub jego nawet id to już zmieniam

zrób sobie funkcje np crcDecode($params) i crcEncode($params) i jak w jednej coś robisz to w drugiej robisz odwrotnie i po sprawie
nikestylex7
1.01.2014, 18:53:19
w sumie racja a data podawana jest w formacie Y-m-d H:i:s ?
a w payok i paybad masz cos konkretnego czy tylko komunikaty o poprawności lub nie?
kayman
1.01.2014, 19:04:43
prosta strona statyczny html na zasadzie -> dziękujemy za zakup bla bla bla, kilka linków takich co sobie klient życzy czy po prostu button/link 'powrot' etc
nikestylex7
1.01.2014, 19:31:32
ok zaraz zobaczymy czy podziała na testowym
działa lecz w bazie owe dane pojawiają się z opóźnieniem jakimś z 1min użytkownik może być wkurzony jak zobaczy że nie został abonament przedłużony
hmm chyba teraz do bazy napływają te wszystkie moje próby które się nie udały bo widze co jakiś czas nowy rekord dochodzi
WOJCIECH543
5.01.2014, 07:44:00
ja tą jesem początkujący i mam problemy ze zintegrowaiem platności bedę sledził temat
nikestylex7
5.01.2014, 09:59:36
mi już działa jak chcesz to pomogę
andrzejd
23.02.2014, 12:27:53
hej,
mam podobny problem - czy mógłbyś podzielić się rozwiązaniem? W moim przypadku mam jedną i tą samą stronę która w zależności od parametrów pokazuje albo treść za którą można wnieść opłatę, albo potwierdzenie, albo przekierowuje na transferuj.pl. W kolejnym widoku chcę zrobić odebranie danych od transferuj i wszelkie kwestie bazodanowe związane z obróbką, ale w odpowiedzi z portalu nie dostaję żadnych danych w POST albo GET. Czy mogli byście dać znać jak sobie z tym poradziliście?
z góry dziękuję
a.
nikestylex7
23.02.2014, 13:26:58
Przeczytaj od początku temat wszystko tutaj jest w razie w pomogę.
andrzejd
23.02.2014, 13:45:14
dzięki - przeczytałem i jak rozumiem kwestia jest taka, że system nie zwraca od razu statusu transakcji, tylko może to chwilę potrwać, więc trzeba przygotować system tak, aby odbierał i zapisywał do bazy rzeczy niezależnie od tego co wyświetla użytkownikowi zaraz po powrocie z systemu płatności. Czy dobrze zrozumiałem? Tak Ci się udało dogadać z transferuj?
a.
nikestylex7
23.02.2014, 13:54:20
4 pliki
1.
payment.php - gdzie jest button zapłać i formularz w hidden myślę że wiesz o co chodzi.
nie powinienem tego dodawać ale pomogę
<form action="https://secure.transferuj.pl" method="post">
<?php
$id = "xxxxx"; // twoje id czy inny kod z transferuj
$cena = "119.99";
$user = $_SESSION['xxxxx'];
$crc = $user; // to tworzy ciąg znaków powrotnych
$kod = "sssssssssssss"; // jakis twoj kod na transferuj
$md5sum = md5($id . $cena . $crc . $kod); // - tutaj koduje nam to ?>
<input type="hidden" name="id" value="xxxxxx"> //twoj kod transferuj
<input type="hidden" name="kwota" value="
<? echo $cena; ?>">
<input type="hidden" name="opis" value="Płatność za abonament">
<input type="hidden" name="crc" value="
<? echo $crc; ?>">
<input type="hidden" name="md5sum" value="
<? echo $md5sum; ?>">
<input type="hidden" name="wyn_url" value="https://xxxx.com/paymentA.php"> //strona gdzie serwer transferuj ma wysłać dane, tam je odbierasz i robisz co chcesz dodajesz do bazy itp
<input type="hidden" name="wyn_email" value="Adres mailowy powiadomienia">
<input type="hidden" name="opis_sprzed" value="Nazwa strony lub opis sprzedarzy">
<input type="hidden" name="pow_url" value="https://ccc.com/payok.php"> // jeśli wszystko ok
<input type="hidden" name="pow_url_blad" value="https://ddd.com/paybad.php"> // jeśli wszystko zle
<input type="hidden" name="email" value="">
<input type="hidden" name="nazwisko" value="">
<input type="hidden" name="imie" value="">
<input type="hidden" name="adres" value="">
<input type="hidden" name="miasto" value="">
<input type="hidden" name="kod" value="">
<input type="hidden" name="kraj" value="">
<input type="hidden" name="telefon" value="">
<input type="hidden" name="jezyk" value="pl">
<div id="editProfileButton">
<div id="editProfileButtonSubmit">
<input type="submit" name="Przejdź do płatności" value="Kup/Przedłuż abonament">
</div>
</div>
</form>
2.
paymentA.php - gdzie serwer wysyła dane
3.
paymentOk.php - plik w którym dajesz komunikat wszystko ok bla bla bla
4.
paymentBad.php - plik w którym masz komunikat error bla bla bla
andrzejd
23.02.2014, 13:59:21
tak - dzięki wielkie, to wszystko jest w 100% jasne. Natomiast mam problem podobny do opisywanego - i chciałbym to dobrze zrozumieć. Rozumiem, że momenc w którym system wysyła dane do teog co nazwałeś paymentA.php nie musi się pokrywać z momentem w którym user powraca na stronę. Czy dobrze to złapałem?
nikestylex7
23.02.2014, 15:02:26
powiem tak usera przekierowywuje zależnie czy zapłaci u nich na stronie czy nie albo bad-zle albo ok-dobrze na wskazaną strone a dane zostają wysyłane na paymentA niezależnie może być opóźnienie 1min. Pamiętaj żeby testować na włączonym trybie test
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.