Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Integracja płatności Transferuj.pl
Forum PHP.pl > Forum > Przedszkole
nikestylex7
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
  1. <?php // sprawdzenie adresu IP oraz występowania zmiennych POST
  2. if($_SERVER['REMOTE_ADDR']=='195.149.229.109' && !empty($_POST)){
  3. $id_sprzedawcy = $_POST['id'];
  4. $status_transakcji = $_POST['tr_status'];
  5. $id_transakcji = $_POST['tr_id'];
  6. $kwota_transakcji = $_POST['tr_amount'];
  7. $kwota_zaplacona = $_POST['tr_paid'];
  8. $blad = $_POST['tr_error'];
  9. $data_transakcji = $_POST['tr_date'];
  10. $opis_transakcji = $_POST['tr_desc'];
  11. $ciag_pomocniczy = $_POST['tr_crc'];
  12. $email_klienta = $_POST['tr_email'];
  13. $suma_kontrolna = $_POST['md5sum'];
  14. // sprawdzenie stanu transakcji
  15. if($status_transakcji=='TRUE' && $blad=='none'){
  16. /* Dalsze przetwarzanie, np: - identyfikacja transakcji na podstawie ciągu pomocniczego - weryfikacja transakcji (sprawdzenie poprawności kwoty itp.) - realizacja zamówienia */
  17. } else {
  18. // transakcja wykonana niepoprawnie
  19. } } echo 'TRUE';
  20. // odpowiedź dla serwera o odebraniu danych ?>
kayman
ż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 smile.gif

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

btw. instrukcja jest ok, po chwili sie połapiesz co co chodzi
nikestylex7
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
to znaczy ze masz źle skonfigurowany formularz wysyłania w stosunku do ustawień konta w transferuj

a jak masz ustawiony to wiesz tylko ty smile.gif

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

e:/

niestety nie bardzo mogę pokazać ale robiłem to z instrukcji smile.gif
nikestylex7
pokaż ale zamianst danych umieść zmienna np $koza bede wiedział mniej więcej
kayman
  1. function getTicketForm($brutto, $nazwa, $ticket, $netto) {
  2. echo '<form style="text-align: center;" action="https://secure.transferuj.pl" method="post" accept-charset="utf-8">';
  3. echo '<input type="hidden" name="id" value="8888">';
  4. $id = '8888'; // twoje id czy inny kod z transferuj
  5. $cena = str_replace(',', '.', $brutto);
  6. $crc = $this->codeBackUrl($brutto, $ticket, $netto); // to tworzy ciąg znaków powrotnych
  7. $kod = 'to wazne'; // jakis twoj kod na transferuj
  8. $md5sum = md5($id . $cena . $crc . $kod);
  9. echo '<input type="hidden" name="kwota" value="' . $cena . '">';
  10. echo '<input type="hidden" name="opis" value="' . $nazwa . '">';
  11. echo '<input type="hidden" name="crc" value="' . $crc . '">';
  12. echo '<input type="hidden" name="md5sum" value="' . $md5sum . '">';
  13. echo '<input type="hidden" name="wyn_url" value="' . SITE . 'payment.html">';
  14. echo '<input type="hidden" name="wyn_email" value="Adres mailowy powiadomienia">';
  15. echo '<input type="hidden" name="opis_sprzed" value="jakas firma">';
  16. echo '<input type="hidden" name="pow_url" value="' . SITE . 'payok.html">';
  17. echo '<input type="hidden" name="pow_url_blad" value="' . SITE . 'paybad.html">';
  18. echo '<input type="hidden" name="email" value=""> <input type="hidden" name="nazwisko" value="">';
  19. echo '<input type="hidden" name="imie" value="">';
  20. echo '<input type="hidden" name="adres" value="">';
  21. echo '<input type="hidden" name="miasto" value="">';
  22. echo '<input type="hidden" name="kod" value="">';
  23. echo '<input type="hidden" name="kraj" value="">';
  24. echo '<input type="hidden" name="telefon" value="">';
  25. echo '<input type="hidden" name="jezyk" value="pl">';
  26. $this->getTRButtonForForm('Kupuję ' . $nazwa);
  27. echo '</form>';
  28. }
nikestylex7
a co masz po odbiorze tzn żeby wiedzieć jaka osoba kupiła jak odbierasz powrotne dane??
kayman
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 smile.gif
nikestylex7
ok powalcze z tym. Dam znać co i jak

a możesz podazać jak skonfigurowałeś to odbieranie danych
kayman
  1. function pay() {
  2. // sprawdzenie adresu IP oraz występowania zmiennych POST
  3. if ($_SERVER['REMOTE_ADDR'] == '195.149.229.109' && !empty($_POST)) {
  4. $id_sprzedawcy = $_POST['id'];
  5. $status_transakcji = $_POST['tr_status'];
  6. $id_transakcji = $_POST['tr_id'];
  7. $kwota_transakcji = $_POST['tr_amount'];
  8. $kwota_zaplacona = $_POST['tr_paid'];
  9. $blad = $_POST['tr_error'];
  10. $data_transakcji = $_POST['tr_date'];
  11. $opis_transakcji = $_POST['tr_desc'];
  12. $ciag_pomocniczy = $_POST['tr_crc'];
  13. $email_klienta = $_POST['tr_email'];
  14. $suma_kontrolna = $_POST['md5sum'];
  15. // sprawdzenie stanu transakcji
  16. if ($status_transakcji == 'TRUE' && $blad == 'none') {
  17.  
  18. // obrobka togo co odebralem
  19.  
  20.  
  21. echo 'TRUE'; // odpowiedź dla serwera o odebraniu danych
  22. }
  23. }


jak mówiłem kopia twojego kodu smile.gif
nikestylex7
a jak obrabiasz to co odebrales?
kayman
tego już pokazać nie mogę smile.gif 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
To tylko zmienne dlaczego nie mozesz pokazać jak się boisz to zmien zmienne i to mi pomoże smile.gif
kayman
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 smile.gif
nikestylex7
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
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
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
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
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
  1. <form action="https://secure.transferuj.pl" method="post">
  2. <?php
  3. $id = "111111"; // twoje id czy inny kod z transferuj
  4. $cena = "139.99";
  5. $crc = "dsfsfsfsfs"; // to tworzy ciąg znaków powrotnych
  6. $kod = "f691ea8d7363b9ae"; // jakis twoj kod na transferuj
  7. $md5sum = md5($id . $cena . $crc . $kod);
  8. ?>
  9. <input type="hidden" name="id" value="11111">
  10. <input type="hidden" name="kwota" value="<? echo $cena; ?>">
  11. <input type="hidden" name="opis" value="Płatność za abonament">
  12. <input type="hidden" name="crc" value="<? echo $crc; ?>">
  13. <input type="hidden" name="md5sum" value="<? echo $md5sum; ?>">
  14. <input type="hidden" name="wyn_url" value="https://strona.com/payment.php">
  15. <input type="hidden" name="wyn_email" value="Adres mailowy powiadomienia">
  16. <input type="hidden" name="opis_sprzed" value="Twoja Giełda">
  17. <input type="hidden" name="pow_url" value="https://strona.com/payok.php">
  18. <input type="hidden" name="pow_url_blad" value="https://strona.com/paybad.php">
  19. <input type="hidden" name="email" value="">
  20. <input type="hidden" name="nazwisko" value="">
  21. <input type="hidden" name="imie" value="">
  22. <input type="hidden" name="adres" value="">
  23. <input type="hidden" name="miasto" value="">
  24. <input type="hidden" name="kod" value="">
  25. <input type="hidden" name="kraj" value="">
  26. <input type="hidden" name="telefon" value="">
  27. <input type="hidden" name="jezyk" value="pl">
  28. <input type="submit" name="Przejdź do płatności">
  29. </form>
  30. <?
  31. if($_SERVER['REMOTE_ADDR']=='195.149.229.109' && !empty($_POST)){
  32. $id_sprzedawcy = $_POST['id'];
  33. $status_transakcji = $_POST['tr_status'];
  34. $id_transakcji = $_POST['tr_id'];
  35. $kwota_transakcji = $_POST['tr_amount'];
  36. $kwota_zaplacona = $_POST['tr_paid'];
  37. $blad = $_POST['tr_error'];
  38. $data_transakcji = $_POST['tr_date'];
  39. $opis_transakcji = $_POST['tr_desc'];
  40. $ciag_pomocniczy = $_POST['tr_crc'];
  41. $email_klienta = $_POST['tr_email'];
  42. $suma_kontrolna = $_POST['md5sum'];
  43. if($status_transakcji=='TRUE' && $blad=='none'){
  44. echo "dddddddd";
  45. } else {
  46. echo "eeeeeeeeee";
  47. } } echo 'TRUE';


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
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ł smile.gif

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 smile.gif
nikestylex7
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
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 smile.gif
nikestylex7
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
  1. $user = $_SESSION['sss'];
  2. $date = date("YmdHis");
  3. $crc = $user."a".$date;


a używasz tych dodatkowych parametrów zwrotnych typu zaplacona kwota id , suma kontrolna?
kayman
$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ć smile.gif

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

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 smile.gif

zrób sobie funkcje np crcDecode($params) i crcEncode($params) i jak w jednej coś robisz to w drugiej robisz odwrotnie i po sprawie smile.gif
nikestylex7
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
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 smile.gif
nikestylex7
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
ja tą jesem początkujący i mam problemy ze zintegrowaiem platności bedę sledził temat smile.gif
nikestylex7
mi już działa jak chcesz to pomogę smile.gif
andrzejd
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
Przeczytaj od początku temat wszystko tutaj jest w razie w pomogę.
andrzejd
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
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ę

  1. <form action="https://secure.transferuj.pl" method="post">
  2. <?php
  3. $id = "xxxxx"; // twoje id czy inny kod z transferuj
  4. $cena = "119.99";
  5. $user = $_SESSION['xxxxx'];
  6. $crc = $user; // to tworzy ciąg znaków powrotnych
  7. $kod = "sssssssssssss"; // jakis twoj kod na transferuj
  8. $md5sum = md5($id . $cena . $crc . $kod); // - tutaj koduje nam to
  9. ?>
  10. <input type="hidden" name="id" value="xxxxxx"> //twoj kod transferuj
  11. <input type="hidden" name="kwota" value="<? echo $cena; ?>">
  12. <input type="hidden" name="opis" value="Płatność za abonament">
  13. <input type="hidden" name="crc" value="<? echo $crc; ?>">
  14. <input type="hidden" name="md5sum" value="<? echo $md5sum; ?>">
  15. <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
  16. <input type="hidden" name="wyn_email" value="Adres mailowy powiadomienia">
  17. <input type="hidden" name="opis_sprzed" value="Nazwa strony lub opis sprzedarzy">
  18. <input type="hidden" name="pow_url" value="https://ccc.com/payok.php"> // jeśli wszystko ok
  19. <input type="hidden" name="pow_url_blad" value="https://ddd.com/paybad.php"> // jeśli wszystko zle
  20. <input type="hidden" name="email" value="">
  21. <input type="hidden" name="nazwisko" value="">
  22. <input type="hidden" name="imie" value="">
  23. <input type="hidden" name="adres" value="">
  24. <input type="hidden" name="miasto" value="">
  25. <input type="hidden" name="kod" value="">
  26. <input type="hidden" name="kraj" value="">
  27. <input type="hidden" name="telefon" value="">
  28. <input type="hidden" name="jezyk" value="pl">
  29. <div id="editProfileButton">
  30. <div id="editProfileButtonSubmit">
  31. <input type="submit" name="Przejdź do płatności" value="Kup/Przedłuż abonament">
  32. </div>
  33. </div>
  34. </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
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.