PayU problem z wysłaniem zamówienia

0

Witajcie
Integruję PayU z aplikacją. Na razie staram się zrobić integrację w aplikacji konsolowej, później przeniosę to na .net core.
Uzyskuję token od sandbox`a PayU i udaje mi się w postmanie wysłać request z utworzeniem nowego zamówienia. Niestety nie działa mi to w aplikacji:

                var handler = new HttpClientHandler()
                {
                    AllowAutoRedirect = false
                };
                var client2 = HttpClientFactory.Create(handler);

                var request2 = new HttpRequestMessage(HttpMethod.Post, "https://secure.snd.payu.com/api/v2_1/orders")
                {
                    Content = new StringContent(JsonConvert.SerializeObject(new Order("1233")), Encoding.UTF8, "application/json")
                    
                };
                request2.Headers.Add("Authorization", "Bearer" + token.access_token.ToString());

                HttpResponseMessage response2 = await client2.SendAsync(request2);
                if (response2.IsSuccessStatusCode)
                {
                    createReponse = await response.Content.ReadFromJsonAsync<CreateReponse>();
                }
                else
                {
                    var error = response2.Content.ReadFromJsonAsync<dynamic>();
                    createReponse = null;
                    Console.WriteLine(error.Result);
                }

Niestety odpowiedź jaką dostaję od ich Api to :
{"status":{"statusCode":"ERROR_SYNTAX","code":"103","codeLiteral":"ERROR_SYNTAX","statusDesc":"Bad syntax"}}
I tu nie za dużo można się dowiedzieć, nie wiem czy problemem jest zła autoryzacja oAuth2 czy robię błąd gdzieś indziej.
Pozdrawiam!

1

api

0

@asdros nie widziałem tego wcześniej w dokumentacji, korzystałem z innej strony. Dziękuję za wskazówkę!

1

Zainstaluj sobie Fidlera (https://www.telerik.com/fiddler) i podejrzyj co się faktycznie wysyła, porównaj z postmanem który jak twierdzisz działa.

Problemy mogą być różne

  1. Za "Bearer" powinna być spacja i token o ile mnie pamięć nie myli, u Ciebie nie ma
  2. Kodujesz UTF-8 ale czy idzie o tym header HTTP: content-type application/json charset=utf-8
  3. coś innego...

Bez porównania 2 requestów (działającego i nie działającego) niewiele da się powiedzieć...

0

@0xmarcin.
Zrobiłem tak jak napisałeś. Okazało się, że błąd jest banalny. ale ich status 103 absolutnie na to nie wskazywał.
Przekazywałem produkt jako obiekt (bo z dokumentacji korzystałem z podpunktu gdzie był przykład dla requestu z jednym produktem) ale co się okazało musi to być wysyłane jsonem jako lista obiektów. Szczegół kładł mi kod.
Pozdrawiam

0

Witajcie,
Niestety dalej mam problem z którym męczę się
drugi dzień.
Otóż po opłaceniu przez klienta powinienem dostać powiadomienie o statusie na adres podany w "notifyUrl". Niestety mój kontroler go nie dostaje.
Wysłałem zapytanie z Postmana wpisując wszystkie potrzebne dane i to już przeszło.
Wyłączyłem firewall jednak to nic nie dało,
Moja akcja wygląda następująco:

        [AllowAnonymous]
        [HttpPost]
        [Route("notify")]
        public async Task<IActionResult> notify([FromBody]Rootobject income)
        {
                ....kod
        }

Pozdrawiam!

Edit:
W Fiddlerze też nie widzę przychodzącego requesta. Jednak paramter notifyUrl na pewno jest wysyłany bo tak samo wysyłam continueUrl

            notifyUrl = "https://localhost:44335/Verify/notify/";
            continueUrl = "https://localhost:44335/Verify/Veryfication";

EDIT: Czy może mieć na to wpływ że aplikacja jest na localhoście?

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