1. Wstęp
  2. Usługi internetowe
  3. Płatności w serwisie „billon.me”

Płatności w serwisie „billon.me”

  1. Definicje
  • Klucz współdzielony, ciąg znaków służący do zabezpieczania zapytań w API dostępny na stronie ustawień serwisu „billon.me”.
  • ID transakcji, unikalny identyfikator transakcji, nadawany przez sprzedawcę. Obowiązkiem sprzedawcy jest zapewnienie, aby ID transakcji nigdy się nie powtórzył.
  • Adres powiadomień, URL ustalany przez sprzedawcę w panelu billon.me, na który będą wysyłane powiadomienia o finalnym statusie transakcji.
  • Adres powrotu, URL ustalany przez sprzedawcę w panelu billon.me, na który zostaje przekierowany płacący po pomyślnym zakończeniu płatności.
  1. Bezpieczeństwo

Wszystkie zapytania są zabezpieczone hashem parametrów. Hash jest obliczany następująco:

  1. Należy ,,skleić’’ wartości parametrów zapytania w jeden ciąg znaków. Na końcu ciągu znaków należy dodać klucz współdzielony.
  2. Z powstałego ciągu należy stworzyć hash za pomocą funkcji SHA-256. Wynik należy przedstawić jako ciąg znaków w formacie szesnastkowym.

Otrzymany hash dodajemy do parametrów zapytania. Sprzedawca ma też obowiązek weryfikacji parametru hash w powiadomieniach wysyłanych przez serwis billon.me. Obowiązkiem sprzedawcy jest utrzymanie poufności klucza współdzielonego; w szczególności proces obliczania hasha musi mieć miejsce na zabezpieczonym serwerze. Przykłady obliczeń znajdują się w punkcie 5.

  1. Inicjacja płatności

Sprzedawca ustala kwotę transakcji i ID transakcji, następnie przekierowuje użytkownika na adres:

https://billon.me/:username/:amount/:id/:hash

Początkowo transakcja ma status PENDING. Użytkownik ma 30 minut na rozpoczęcie transakcji. Jeśli żadna z transakcji rozpoczętych w tym czasie nie uda się, transakcja otrzyma finalny status EXPIRED. Jeśli środki zostaną poprawnie przesłane, finalny status to SUCCESS. Po płatności użytkownik zostaje przekierowany na adres powrotu.

  1. Powiadomienia

Po finalizacji transakcji, billon.me wysyła zapytanie POST na podany przez sprzedawcę URL. To samo powiadomienie jest wysyłane po zmianie statusu oraz co minutę aż serwis sprzedawcy wyśle w odpowiedzi string OK, ale nie dłużej niż przez 10 minut. Zapytanie to JSON w formacie:

{

    username: ‘sklep2’, // Nazwa sprzedawcy w billon.me

    amount: ‘30.50’,

    id: ‘1012001’, // ID przekazane wcześniej w linku inicjującym płatność

    status: ‘SUCCESS’,

    hash: ‘6d8df2630ec108372dc015f51552db68676796142f0178b140803f33a73177f1’

}

 

  1. Przykład

Sprzedawca o nazwie konta w billon.me ‘sklep2’ i kluczu współdzielonym ‘a3dcc05f’ nadaje nowej transakcji na kwotę 30,50 zł unikalne id ‘1012001’. Hash jest obliczany przez sklejenie parametrów w kolejności: username, amount, id i dodanie na końcu klucza współdzielonego:

sklep230.501012001a3dcc05f

Po zastosowanie funkcji SHA-256 na powyższym ciągu znaku serwis sprzedawcy otrzymuje hash:

6d8df2630ec108372dc015f51552db68676796142f0178b140803f33a73177f1

Następnie przekierowuje użytkownika na adres:

https://billon.me/:username/:amount/:id/:hash

czyli

https://billon.me/sklep2/30.50/1012001/6d8df2630ec108372dc015f51552db68676796142f0178b140803f33a73177f1

Użytkownik dokonuje płatności. Po przesłaniu środków serwis billon.me wysyła na URL podany w panelu przez sprzedawcę powiadomienie o nadaniu płatności finalnego statusu:

{

    username: ‘sklep2’, // Nazwa sprzedawcy w billon.me

    amount: ‘30.50’,

    id: ‘1012001’, // ID przekazane w linku inicjującym płatność

    status: ‘SUCCESS’,

    hash: ‘cf3a79ca80bfeba5288039458f95a8ba9f8092ff0a2bedda79f794040b1bec43’

}

 

Hash w powyższym powiadomieniu powstał z ciągu znaków sklep230.501012001SUCCESSa3dcc05f

Powiadomienie jest zapewnieniem, że środki znajdują się już na koncie sprzedawcy. Jest wysyłane co minutę przez 10 minut, aż serwis sprzedawcy wyśle w odpowiedzi string OK. W przypadku braku pomyślnego zakończenia płatności parametr status miałby wartość EXPIRED.

Natychmiast po zakończeniu płatności użytkownik zostaje przekierowany na adres powrotu ustalony przez sprzedawcę, do którego łańcucha zapytania (Query String) dodawane jest pole „transactionId” o wartości ID przekazywanego w linku inicjującym płatność, np. na adres „https://sklep2/return?transactionId=1012001”, jeśli adresem powrotu jest „https://sklep2/return”, lub „https://sklep2.sklep/r?=bm&transactionId=1012001”, jeśli adresem powrotu jest „https://sklep2.sklep/r?=bm”.

Czy ten artykuł jest dla Ciebie pomocny? Tak 1 Nie

Jak możemy pomóc?