Jump to content
  • 0
Mateusz_K

dotpay problem

Question

Hej, mam problem. Stworzyłem sobie stronę test.html . W niej mam odwołanie do bloku, a w tym bloku mam include() do pliku .php na serwerze. W tym pliku mam : 

$member = \IPS\Member::loggedIn(); \IPS\DB::i()->insert('cms_custom_database_7', array('member_id' => $member->member_id, 'field_22' => time()));

Czyli prosty jakiś testowy wpis do bazy. Jak sam wklepię ten url do tej strony to wpis do bazy wpada. 

Ale w dotpay mam podany adres URLC i tam podaję adres do tej strony testowej, czyli test.html. I wtedy ten wpis do bazy nie wpada ? 

Próbowałem robić to też normalnie w bloku, stworzyłem przykładowy kod ktory wpisuje mi do pliku .txt jakiś przykładowy tekst i po dokonaniu płatności wpisuje mi do tego pliku ten tekst. Ale jak dodam ten kod z wpisem do bazy danych to wtedy już nie działa . 

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0

Jakbyś zerknął w logi to byś się domyślił 🙂

problem polega na tym, że jak Ty wchodzisz na stronę to

$member->member_id

zwraca jakąś wartość liczbową np. 12345, natomiast URLC jest wywoływane przez dotpay w tle, w związku z czym na tą stronę trafia jako gość, a wtedy nie jest zwracane ID tylko NULL, zamień  powyższe na:

intval( $member->member_id )

i będzie działać

Share this post


Link to post
Share on other sites
  • 0

Wpis do bazy wpadł, lecz 

intval( $member->member_id )

zwraca 0 🙂

Share this post


Link to post
Share on other sites
  • 0

a  co ma zwracać? pisałem, że dotpay wywołuje ten adres od siebie z serwera, więc to nigdy nie będzie zalogowany użytkownik tylko gość

Share this post


Link to post
Share on other sites
  • 0

No chcę aby zwracało mi id aktualnie zalogowanego usera, który zrobił płatność. 

Share this post


Link to post
Share on other sites
  • 0

Tak nie ma szans. To co Ty robisz, to zapisujesz ID aktualnie zalogowanego użytkownika, ale tak jak pisze URLC nie jest wywoływany, przez użytkownika tylko przez cron po stronie dotpay

Share this post


Link to post
Share on other sites
  • 0

Więc w jaki sposób mogę to zrobić ? I dlaczego coś takiego działa na starej wersji ? 

Share this post


Link to post
Share on other sites
  • 0

Nie wiem jak masz na starej wersji ale tak nie będzie działać. Chcesz ID użytkownika to powiąż transakcje z nim. zarówno w żądaniu do dotpay jak i w zwrotce otrzymujesz pewne informacje. Co i jak poustawiasz to już zależy od Ciebie i co później z tym zrobisz

  • Like 1

Share this post


Link to post
Share on other sites
  • 0

Dobra, rozjaśniłeś mi sytuację. Wiem już o co chodzi. Mam jeszcze jedno pytanie. 

Dotpay ma swój adres ip z którego przesyła powiadomienia do serwisów sprzedawców - w dokumentacji jest to IP : 195.150.9.37

W swoim kodzie sprawdzam, czy w/w tablica zawiera numer IP klienta który właśnie się z nami łączy, kod wygląda tak : 

$allow_server = array('217.17.41.5', '195.150.9.37');

if (!in_array($_SERVER['REMOTE_ADDR'], $allow_server)) {
    exit('You are not authorized to do this operation!'); 
}

Ale zawszę dostaję zwrotkę z IFa 😕 . Dlaczego ? 

Share this post


Link to post
Share on other sites
  • 0

Super, teraz działa 🙂 

Jeśli możesz, to nie zamykaj tematu. Gdybym miał jeszcze jakieś pytania to będe tutaj pisać. Dzięki

Share this post


Link to post
Share on other sites
  • 0

Zauważyłem też kolejny problem. Skrypt wykonuje się prawidłowo w pliku który jest podany w adresie URLC, na końcu pliku daję : 

echo "OK";

Wpis do bazy wpada, ale za jakiś czas jak odświeżę bazę to wpada kilka dodatkowych rekordów, tak jakby cały czas wykonywał się ten skrypt. Może to jest wina tego, że inne wcześniejsze skrypty źle się wykonywały, a z tego co wiem to jak ten skrypt z URLC nie zwróci odpowiedzi "OK", to wykonuje jeszcze kilkanaście prób. Czy to może być to ?

Share this post


Link to post
Share on other sites
  • 0

A co się dzieje jak wejdziesz na tą stronę? jest biała strona i napis OK, czy coś jeszcze się pojawia? Jeśli jest coś jeszcze to daj po tym echo po prostu:

exit;

i będzie ok

Share this post


Link to post
Share on other sites
  • 0

Znaczy teraz jak przejdę na tę stronę to nie kieruje mnie na nią, tylko następuje przekierowanie na inną, bo mam zrobioną obsługę, że z palca jak by ktoś sie chciał dostać na stronę to go wywali z niej. Ale jak wcześniej sprawdzałem, to tylko OK sie wyświetlało, nic więcej. 

Dodałem exit po tym echo i dalej wpadają rekordy do bazy 😕

Share this post


Link to post
Share on other sites
  • 0

Bo w dokumentacji widzę, że to jest potrzebne do zabezpieczenia. Korzystasz ze starej wersji dotpay, czy nowej ? 

Share this post


Link to post
Share on other sites
  • 0

Czyli nie jest to jakieś niezbędne, że bez tego istnieje duże ryzyko niebezpieczeństwa? 

Share this post


Link to post
Share on other sites
  • 0

Mam też jeszcze jedno pytanie. Po dokonanej płatności ustalam dla usera grupę Członka klubu. W zależności jaki wybierze wariant (konto na 1 msc, 3, 6 lub 12 miesiecy),  w bazie wpada rekord z datą wygaśnięcia karty. Teraz się zastanawiam w jaki sposób mogę zrobić obsługę tego, że gdy minie ten czas abonamentu, np użytkownik wykupił na 1 miesiąc i po tym miesiącu ma być usunięta z bazy danych grupa Członka klubu. 

Ogólne założenie jest proste, trzeba sprawdzać czy data wygaśnięcia abonamentu jest mniejsza od aktualnej daty, jeśli jest to usunąć trzeba grupe z bazy. Tylko gdzie wkleić taki kod ? Jakiś cron ? 

Share this post


Link to post
Share on other sites
  • 0

Ok, tylko gdzie mogę to zrobić ? Znalazłem w admince coś z zadaniami, tylko nie wiem gdzie mogę podpiąć mój plik do tego

Share this post


Link to post
Share on other sites
  • 0

Hmm, jakiś tutek jak zrobić plugin albo apke ? I co prościej ? 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.