PayU - aktualizacja statusu zamówienia w bazie

0

Hej, już któryś raz mam problem z payu i aktualizacją statusu zamówienia.
Dokonuję transakcji, płatność jest przyjmowana, w koncie sandbox mam przyjętą płatność, status zakończona jednak nie wiem jak odebrać info o udanej płatności w swoim systemie tak aby zmienić status zamówienia.
Pomyślałem że może by uruchomić cron'a i pobierać dane dla zamówień. Jeśli mają płatność zakończoną zmieniać status w bazie?

Jak to powinno wyglądać?

2

Gdy wysyłałeś do payU zamowienie to podawales adres notify na ktory system ma da zwrotke o statusie zamowienia tak? wtedy tam odbierasz od nich info masz ID statusu i robisz tak:

$body = file_get_contents('php://input');
$data = trim($body);
$result = OpenPayU_Order::consumeNotification($data);
$order_verified = OpenPayU_Order::retrieve($result->getResponse()->order->orderId);
if (!empty($order_verified) && !in_array($order->order_status , [Order::CANCELED, Order::COMPLETED])) {
// tutaj w zaleznosci od stausu zamowienia pending, complete itd robi co trzeba
}

a jesli sam chcesz sprawdzic status w cronie czy na zadanie to robisz

$response = OpenPayU_Order::retrieve('Z963D5JQR2230925GUEST000P01');
//tutaj parametr to orderId

a jak chcesz zobaczyc status transakcji to robisz

$response = OpenPayU_Order::retrieveTransaction('Z963D5JQR2230925GUEST000P01'); // tak samo order id

fajne jest to ze OpenPayU_Order::consumeNotification($data); sprawdza ci juz podpisy i wiesz ze ta zwrotka nie jest falszywa
Akurat jeste na czasie bo robie platnosci cykliczne :)

Ważna uwaga:
ten Order::CANCELED to jest moj model i w nim mam te stale, pobieram Order z mojej tabeli orders wiec dlatego użylem $order->order_status u ciebie moze to byc inaczej wiec to Order::CANCELED nie ma nic wspolnego z bibliotekami PayU

2

https://developers.payu.com/pl/restapi.html#update_notification_for_order_status

Powiadomienia wysyłane są w formacie JSON za pomocą metody POST.

Podczas tworzenia płatności musisz wskazać parę rzeczy określonych w https://developers.payu.com/pl/restapi.html#references_form_parameters.
Jedną z nich jest notifyUrl :

Adres URL, na który przychodzić będą powiadomienia o zmianie statusu zamówienia lub zwrotu.

Podajesz tam adres, na który PayU ma Ci wysłać odpowiedź.
Możesz - jak napisałeś, cyklicznie odpytywać serwer o status płatności, ale lepiej będzie jak PayU Ci napisze o tym, że coś się stało. Ewentualnie, jakby z jakiegoś powodu takie powiadomienie się zagubiło, to możesz co jakiś czas sprawdzać status płatności dłużej czekających na opłacenie. Na ogół płatność idzie w kilka(naście) sekund.

1 użytkowników online, w tym zalogowanych: 0, gości: 1