3.1.5. Zrozumienie adresów URL realizacji#

Zamówienia i kontrakty Taler muszą zawierać fulfillment_url lub fulfillment_message, które są używane przez portfel po opłaceniu kontraktu. Ten samouczek wyjaśnia, jak prawidłowo ustawić te wartości.

3.1.5.1. Komunikat dotyczący realizacji#

To pole jest po prostu wiadomością, która zostanie wyświetlona użytkownikowi przez portfel Taler po dokonaniu zakupu. Może być ustawiony na dowolny rodzaj tekstu UTF-8 i powinien być używany jako przyjazna wiadomość końcowa od sprzedawcy na koniec transakcji biznesowej.

Informacja

Portfele Whe uczą się tekstu przed dokonaniem zakupu, więc użytkownicy mogą otrzymać wiadomość o realizacji przed faktycznym zakupem. W rezultacie nie powinien on zawierać żadnych rzeczywistych danych uwierzytelniających ani informacji, które użytkownik może kupić za pomocą umowy.

Wiadomości dotyczące realizacji są używane, gdy sprzedawca nie ma adresu URL realizacji, do którego mógłby przekierować użytkownika.

3.1.5.2. Adresy URL realizacji#

Kontrakty mogą zawierać fulfillment_url zamiast fulfillment_message. fulfillment_url musi odnosić się do strony internetowej (zaczynającej się od http:// lub https://), a użytkownik zostanie tam przekierowany natychmiast po dokonaniu zakupu i ewentualnie później z okna dialogowego szczegółów zakupu w historii transakcji portfela.

Adresy URL realizacji służą drugiemu celowi, a mianowicie są również używane do wykrywania ponownego zakupu. Dlatego należy zachować ostrożność, aby prawidłowo używać adresów URL realizacji. Wyjaśnimy dwa odpowiednie scenariusze i ich motywację w kolejnych dwóch sekcjach.

3.1.5.3. Wykrywanie odkupu#

Możliwym problemem dla sprzedawców sprzedających dostęp do artykułów cyfrowych jest to, że klient może zapłacić za artykuł na jednym urządzeniu, ale może następnie chcieć go przeczytać na innym urządzeniu, być może takim, które nawet nie ma zainstalowanego portfela Taler.

Oczywiście w tym momencie klient zostanie poproszony o ponowne opłacenie artykułu. Jeśli klient następnie otworzy link taler:// w portfelu, który wcześniej zapłacił za artykuł (na przykład skanując kod QR na pulpicie za pomocą aplikacji na Androida), portfel zażąda umowy, wykryje, że adres URL realizacji jest identyczny z tym, za który już dokonał płatności w przeszłości, i zainicjuje przekierowanie zakupu: W tym przypadku portfel skontaktuje się ze sprzedawcą i odtworzy poprzednią płatność, ale tym razem przy użyciu (bieżącego) identyfikatora sesji przeglądarki (uczy się identyfikatora sesji z kodu QR).

Backend sprzedawcy aktualizuje następnie identyfikator sesji istniejącego zamówienia do bieżącego identyfikatora sesji przeglądarki. Gdy status płatności dla „nowego” nieopłaconego zamówienia jest sprawdzany (lub już w trakcie długiego głosowania), backend wykrywa, że dla session ID przeglądarki i fulfillment URL istnieje już opłacona umowa. Następnie nakazuje przeglądarce natychmiastowe przekierowanie do adresu URL realizacji, gdzie dostępny jest już opłacony artykuł.

Dlatego ważne jest, aby sprzedawcy konsekwentnie używali tego samego adresu URL realizacji dla tego samego produktu cyfrowego, w przypadku gdy pożądane jest wykrywanie odkupu.

Informacja

Zmiana identyfikatora sesji na inne urządzenie wymaga zaangażowania oryginalnego portfela, który dokonał płatności, co rozsądnie ogranicza możliwość szerokiego udostępniania cyfrowych zakupów.

3.1.5.4. Zezwalanie na wielokrotne zakupy#

Aby upewnić się, że wykrywanie odkupu nie uniemożliwia klientom zakupu tej samej usługi lub towaru fizycznego po raz drugi, sprzedawcy muszą upewnić się, że nie używają tego samego adresu URL realizacji dla różnych produktów lub produktów fizycznych, w przypadku których można oczekiwać, że klienci wielokrotnie kupią artykuł.

Wygodnym sposobem na utworzenie unikalnego adresu URL realizacji jest osadzenie identyfikatora zamówienia w adresie URL realizacji. Aby umożliwić użycie identyfikatora zamówienia w adresie URL realizacji, nawet jeśli pole order_id nie jest ustawione przez sprzedawcę podczas POST nowego zamówienia (a zatem rzeczywisty identyfikator zamówienia zostanie wybrany przez backend sprzedawcy), można użyć tekstu zastępczego ${ORDER_ID} w fulfillment_url podczas wysyłania go do backendu sprzedawcy. Backend sprzedawcy natychmiast zastąpi ${ORDER_ID} w adresie URL rzeczywistym identyfikatorem zamówienia (przed utrwaleniem warunków umowy lokalnie).