PHP - integracja PayU

0

Mam pytanie odnośnie integracji PayU. Chcę tworzyć zamówienie przez REST API, korzystam z dokumentacji https://github.com/PayU/openpayu_php . Mam pytanie odnośnie pola extOrderId , musi być ono unikalne. Czy mogę wykorzystać id zamównienia, które zostanie dodane do mojej bazy danych jako extOrderId, czy mam tam generować hash?

2

To jest identyfikator zamówienia po twojej stronie czyli np właśnie id płatności. Dlaczego płatności a nie zamówienia? Bo zamówienie może mieć kilka płatności. Te pole w obrębie twojego konkretnego sklepu na payu musi być unikalne. Jak wyślesz ponownie taką samą wartość to payu zwróci error.

0

a jeżeli chodzi o retrieveRequest, to powinienem je odbierać i dopiero wtedy wstawiać dane do bazy? Czy de facto wystarczy jak wyślę zamówienie i nie będę nic odbierał ? Bo nie bardzo rozumiem do czego służy odbieranie transakcji...

0

Tu masz przetwarzanie notyfikacji https://github.com/PayU/openpayu_php#handling-notifications-from-payu mając id i status z notyfikacji, robisz retrieve by potwierdzić że status który dostałeś jest prawdziwy. Nigdy nie wierz requestom od bramek płatności, zawsze to dodatkowo potwierdzaj.

0

Ok, rozumiem, i wtedy po sprawdzeniu, jeśli notyfikacja się zgadza, to powinienem wykonać dopiero wpis do bazy danych? (jako że transakcja przebiegła pomyślnie)

2

Nie. Cykl powinien wyglądać tak:

  • tworzysz wpis w bazie w tabelce w payment, i ustawiasz tam sobie, że status płatności "before start" oraz orderId = null
  • wysyłasz request do payu tworząc płatność po stronie payu, w odpowiedzi powinieneś dostac orderid oraz status "new" zapisujesz te wartości do utworzonego rekordu zgodnie z extOrderId
  • payu przysyła do ciebie kolejne statusy poprzez notyfikacje i updatujesz rekord w bazie po sprawdzeniu poprzez retrieve czy status się zmienił rzeczywiście.
  • wykonujesz odpowiednie akcje zgodne ze statusem np przy complete już wiesz, że opłacone więc możesz dać dostep do usługi/wysłać towar/etc,

Więcej informacji o restapi masz tutaj http://developers.payu.com/pl/restapi.html
Cykl statusów i co trzeba wykonać tutaj http://developers.payu.com/pl/restapi.html#notifications

Edit. To co opisałem jest dość uniwersalne i w zasadzie każda bramka płatności ma taki sam cykl.

0

Nie mogę sobie poradzić z jedną rzeczą - korzystam z konta sandboxowego. Jako parametr notifyUrl podałem ścieżkę do pliku, który ma odbierać powiadomienia od payu,

       if ($result->getResponse()->order->orderId) {

           /* Check if OrderId exists in Merchant Service, update Order data by OrderRetrieveRequest */
           $order = OpenPayU_Order::retrieve($result->getResponse()->order->orderId);
           if($order->getStatus() == 'SUCCESS'){
               //the response should be status 200
            //Tu chciałbym wykonać operacje na bazie
               header("HTTP/1.1 200 OK");
           }
       }

Natomiast, te operacje na bazie, które chce wykonać, nie wykonują się

0

Musisz podać pełny url, jak testujesz lokalnie to musisz podać łącznie z ip oraz przekierować sobie porty na routerze by twój apache był dostepny z zewnątrz.

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