Odbiór transakcji w Przelewy24 i jej weryfikacja.

0

Witam, mam problem związany z odbiorem danych z adresu p24_url_status(). W jaki sposób dostać się do danych i pobrać np. p24_order_id przekazanego przez metodę POST, aby następnie wysłać metodą post te dane pod adres https://sandbox.przelewy24.pl/trnVerify. Czy można podać jako adres p24_url_status taki sam jak p24_url_return?

1

Endpoint który wskazałeś w p24_url_status musi mieć atrybut HttpPost. Dane odbierasz tradycyjnie w sposób: Request["p24_order_id"].ToString()
p24_url_return to adres na który przeniesie klienta po tym jak zapłaci w banku, więc to powinna być jakaś strona w której zobaczy status swojej transakcji

0

Akcja "endpoint" w moim przypadku wyglada nastepujaco:

[HttpPost]
        public JsonResult CheckoutVerify()
        {
            // Request data
            var data = Request;

            // Keys request
            string[] keys = Request.Form.AllKeys;
            var value = "";
            for (int i = 0; i < keys.Length; i++)
            {
                value = Request.Form[keys[i]];
            }

            Przelewy24.Przelewy24 przelewy = new Przelewy24.Przelewy24();

            // Verify current transaction
            var trans = przelewy.VerifyTransaction(Request["p24_merchant_id"], Request["p24_pos_id"], Request["p24_session_id"], Request["p24_amount"], Request["p24_currency"], Request["p24_order_id"], Request["p24_method"], Request["p24_statent"], Request["p24_sign"]);
            
            return Json("", JsonRequestBehavior.AllowGet);
        }

Zamiast JsonResult próbowałem także ActionResult jednak nie wywołuje tej akcji(CheckoutVerify)
Wysłane url to:
<input id="p24_url_return" name="p24_url_return" value="http://localhost:49341/Checkout" type="hidden" />
<input id="p24_url_status" name="p24_url_status" value="http://localhost:49341/Manage/CheckoutVerify" type="hidden" />

0

Kontaktowałem się z Przelewy24 i dostałem informację że na p24_url_status zostaje wysłana informacja o płatności w takim razie w jaki sposób pobrać dane o p24_order_id jeśli potrzebna jest ona do weryfikacji transakcji(jak widnieje w specyfikacji Przelewy24).

0

w takim razie w jaki sposób pobrać dane o p24_order_id jeśli potrzebna jest ona do weryfikacji transakcji
dostałem informację że na p24_url_status zostaje wysłana informacja o płatności

właśnie w taki do p24_url_status jedynm z wysłanych parametrów jest orderId

0

Odświeżę, bo mam podobny problem.

p24_order_id jest uzyskiwany w momencie przekierowania na zadaną podstronę w momencie akceptacji płatności (napis Transakcja zakończona pomyślnie )? Czy tam leci osobny callback w tym czasie?

Sam redirect mi działa, ale request jest pusty.

Czyli mam tak, mam napis "Transakcja zakończona pomyślnie", przekierowuje mnie do mojej strony, ale płatność jest "failed'

2

Działa to tak:

  1. Serwer rejestruje płatność i przekierowuje klienta do strony płatności.
  2. Klient uiszcza opłatę i strona Przelewy24 przekierowuje go na stronę zapisaną w urlReturn
  3. Po kilku / kilkunastu sekundach serwer Przelewy24 wysyła metodę [HttpPost] do akcji zapisanej w urlStatus.
  4. Ta metoda ma za zadanie obliczyć sumę kontrolną i odesłać odpowiedź trnVerify

Zobacz na ostatni post mojego starego konta:
https://4programmers.net/Forum/C_i_.NET/342626-integracja_z_przelewy24_nie_otrzymuje_potwierdzenia_poprawnego_wykonania_operacji?page=2

Tam jest odpowiedź na Twoje pytanie

1

Działa to tak:
W starym api pod /trnRegister rejestrujesz transakcje.
Następnie (stare api) przekierowujesz pod /trnRequest/{token} , gdzie token otrzymałeś w akcji wyżej.
Podczas rejestracji transakcji w p24_url_status wpisujesz url pod który P24 wyślą POST a w tych danych będą dane do weryfikacji transakcji.
Transakcje weryfikujesz pod (stare api) /trnVerify
Ale uwaga P24 pod p24_url_status odezwie się tylko wtedy gdy transakcja się udała.

Jeśli chcesz dowiedzieć się co się dzieję z transakcją możesz zrobić tak:
W nowym api jest metoda /api/{version}/transaction/by/sessionId/{sessionId} , ta metoda zwróci ci dane transakcji i order_id. Mając już order id możesz ponownie weryfikować pod /trnVerify

1

Ogarnięte, dzięki :)

0

@gswidwa1: Stripe ma umowe z P24 jeśli chcesz mieć od razu międzynarodowe.

Inna sprawa, którą trzeba przemyśleć to kwestie podatkowe. P24 masz jako polską firmę, a stripe jako zagraniczną i to na 99% nie będzie to samo.

0

A jest gdzies jakas dokumetacja co i jak metody w nowym api bo na str nic nie mozna znalezc,znaczy jest jakas dokumentacja no ale to jakis zart xD

0

Dokumentacja jest w internecie. Wystarczy poszukac

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