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?
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
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" />
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).
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
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'
Działa to tak:
- Serwer rejestruje płatność i przekierowuje klienta do strony płatności.
- Klient uiszcza opłatę i strona Przelewy24 przekierowuje go na stronę zapisaną w
urlReturn
- Po kilku / kilkunastu sekundach serwer Przelewy24 wysyła metodę [HttpPost] do akcji zapisanej w
urlStatus
. - 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
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
Ogarnięte, dzięki :)
@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.
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
Dokumentacja jest w internecie. Wystarczy poszukac