Problem z API Sandbox w lvlup-js

MatStef132 | 2021-05-17 15:30:18 UTC | #1

Podczas korzystania z API sandbox, mimo, iż płatność została zaakceptowana, nie dostaję ani redirecta ani żadnego połączenia do wybranego webhooka. Używam do tego express.js + https://www.npmjs.com/package/lvlup-js. Czy ma ktoś pomysł, co tu jest nie tak. Czy może custom port jest problemem?
Kod:
const linkForPayment = await lvlup.createPayment('30', 'http://2.domena.eu:port/pfinished/', 'http://2.domena.eu:port/api/giverank/'); res.redirect(linkForPayment.url)
(jako domena i port są oczywiście moja domena i port lecz preferował bym ich nie podawać jeżeli nie jest to konieczne)


KMatuszak | 2021-05-17 15:33:21 UTC | #2

U mnie nie chciało to działać po http, zadziałało dopiero z https.


MatStef132 | 2021-05-17 16:03:46 UTC | #3

W tym momencie spróbowałem https (z certyfikatem cloudflare) oraz na głównym porcie 443 i niestety wyszło to samo, nie przyszło nic na webhooka ani nie dostałem redirecta.


KMatuszak | 2021-05-17 16:38:31 UTC | #4

a cloudflare przypadkiem nie blokuje czegoś? :stuckouttongue:


MatStef132 | 2021-05-17 16:41:55 UTC | #5

Jeżeli dobrze mi się wydaje i to jest to, to nie
image|690x386


MatStef132 | 2021-05-21 21:35:40 UTC | #6

Próbowałem to zrobić ponownie i niestety problem się utrzymał, więc nie był tymczasowy. Ma ktoś jakiś pomysł co jest tutaj nie tak? Czy może to jest jakiś błąd w API.


SystemZ | 2021-05-22 11:18:15 UTC | #7

Sprawdzę to w przyszłym tygodniu.
Sandbox nie jest 100% zgodny z produkcją, mogą być pewne braki


MatStef132 | 2021-05-25 11:51:51 UTC | #8

I jak?


KMatuszak | 2021-05-25 14:15:14 UTC | #9

Tydzień jeszcze się nie skończył, SystemZ poinformuje gdy sprawdzi :wink:


SystemZ | 2021-05-28 11:29:51 UTC | #10

Sprawdziłem webhooki na sandboxie i działają one poprawnie od strony lvlup.

Skorzystałem z kontenera dockera w którym jest serwer http “lustro”. Pokaże to w konsoli wszystkie requesty HTTP wraz ze szczegółami, bez potrzeby pisania kodu.

# https://github.com/mendhak/docker-http-https-echo
docker run -p 9000:8080 --rm -t mendhak/http-https-echo:18

Dodatkowo uruchomiłem tymczasowy, prosty i darmowy tunel do portu http na którym słucha ten serwer.

# https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/trycloudflare
cloudflared tunnel --url http://localhost:9000

W ten sposób uzyskałem globalnie dostępny serwer z poprawnym certyfikatem https którego użyłem do sprawdzenia webhooków.
Link tunelu wprowadziłem do dosłownie copy-paste kodu pokazanego jako przykład w bibliotece:

// source: https://www.npmjs.com/package/lvlup-js
const LvlupApi = require('lvlup-js');
const lvlup = new LvlupApi('KEY', {env: 'sandbox'});

(async () => {
  const linkForPayment = await lvlup.createPayment('32', 'https://CHANGEME.trycloudflare.com/redirect', 'https://CHANGEME.trycloudflare.com/webhook');
  console.log(linkForPayment);
})()

W momencie użycia endpointa POST /v4/sandbox/wallet/up/{id}/ok, otrzymałem webhook zgodny ze specyfikacją w dokumentacji.

Tak czy inaczej, może występować niedoskonałość którą da się ulepszyć.
API nie powinno zawracać powodzenia jeśli wiadomo od razu, że nie da rady dostarczyć webhooka pod dany URL np. bez https czy z portem innym niż 443.

Daj znać jakie szablony URLi przechodzą w wysłaniu do API i uzyskują HTTP 200 jako webhook np. http://example.com:9000 a nie dostajesz powiadomienia ale jesteś jednocześnie pewien, że ten serwer faktycznie działa.


system | 2021-06-29 11:28:41 UTC | #11

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.