Integracja z Twoim serwisem
Dokumentacja dla merchantów
Utwórz zamówienie
Użyj metody public/exchanger/order/create
| Nazwa | Opis | Typ |
| routeId | id kierunku | ObjectID |
| partner | link partnera | STRING |
| amount | kwota w | FLOAT |
| fromValues[0][key] | nazwa klucza | ObjectID |
| fromValues[0][value] | wartość dla tego pola | STRING |
| toValues[0][key] | nazwa klucza | STRING |
| toValues[0][value] | wartość dla tego pola | STRING |
| routeValues[0][key] | nazwa klucza | ObjectID |
| routeValues[0][value] | wartość dla tego pola | STRING |
| lang | język klienta (ru, en) | STRING |
| agreement | zgoda | BOOLEAN |
| hideOutData | zabezpiecz dane wyjściowe | BOOLEAN |
| clientCallbackUrl | callback po zakończeniu zamówienia: klient zobaczy przycisk powrotu na stronę i zostanie przekierowany na ten URL ?status=success lub ?status=error | STRING |
| ipnUrl | url natychmiastowego powiadomienia o płatności (zostanie wywołane, gdy zamówienie zmieni status) | STRING |
| ipnSecret | ciąg do utworzenia bezpiecznego hasha w ipn url | STRING |
Dokumentację systemu autoryzacji znajdziesz w panelu osobistym. Więcej o pracy z metodami i dodatkowymi danymi znajdziesz na
IPN (Powiadomienie o zmianie statusu zamówienia płatności)
Aby otrzymywać powiadomienie o zmianie statusu zamówienia podczas jego tworzenia, należy przekazać dodatkowe parametry:
clientCallbackUrl- callback po zakończeniu zamówienia: klient zobaczy przycisk powrotu na stronę i zostanie przekierowany na ten URLhideOutData- ukryj dane odbiorcyipnUrl- Link HTTP/HTTPS do powiadomienia Twojego serwera.ipnSecret- Losowy ciąg do utworzenia podpisu żądania (dla zachowania integralności żądania)
- Żądanie zostanie wysłane metodą POST
- IPN zostanie wysłane jednokrotnie
- Dostarczenie IPN nie jest gwarantowane (jeśli serwer nie odpowiedział na żądanie, nie zostanie ono wysłane ponownie)
Przykład IPN
- POST
- ['Content-Type'] = 'application/x-www-form-urlencoded'
orderUID:Number() - zamówienie uidorderId:String(ObjectId) -zamówienie idnewStatus:String() - zamówienie bieżący statusinAmount:String(number) - order in sumoutAmount:String(number) - order out sumxml_from:String() - zamówienie uidxml_to:String() - zamówienie uidtimestamp:Number() - unix-czas powiadomienia ipntoValues:Array([{key,name,value}]) - dane zamówienia
Lista statusów
new- nowe zamówieniewaitPayment- oczekiwanie na płatność użytkownikaerrorPayment- błąd płatności użytkownika (merchant wysłał błąd)inProgress- w trakcie (oczekuje na administratora lub płatność zamówienia)inProgressPayout- w kolejce do wypłaty (płatność przyjęta pomyślnie) (jeśli w walucie skonfigurowano autowypłatę, zostanie zainicjowana)errorPayout- błąd wypłaty (podczas wypłaty wystąpił błąd)hold- zamrożone (problemy z zamówieniem)done- zamówienie zrealizowane pomyślniereturned- zamówienie zostało opłacone, ale nie wszystkie warunki wymiany zostały spełnione i środki zwrócono nadawcydeleted- zamówienie usunięte (anulowane)
Weryfikacja sumy kontrolnej żądania (IPN)
sha256(orderId:newStatus:inAmount:outAmount:xml_from:xml_to:timestamp:ipnSecret)
const stringForHash = orderId+":"+newStatus+":"+inAmount+":"+outAmount+":"+xml_from+":"+xml_to+":"+timestamp+":"+ipnSecret;
// example string for hash 5d8e6002b80b7b4cd75a6424:inProgress:2:317.42:ETH:WMZ:1571328406072:SECRET123
const hash = crypto.createHash('sha256').update(stringForHash).digest('hex')
// example hash af3acf947e6f0e0f2c267e300b8582e504dba12d1f2d058652b7414163c09f48
Kontrola płatności
- Jeśli chcesz kontrolować status zamówień, twórz je z autoryzacją — wtedy wszystkie zamówienia będą widoczne w panelu osobistym;
- Możesz zapisać UID zamówienia i secret oraz ręcznie przejść do zamówienia, podając te dane w pasku adresu
Płatność
-
Możesz użyć /payment/ do wyświetlenia strony płatności
// schema
https://hellchange.top/user-lang/payment/order-uid/order-secret
// example result
https://hellchange.top/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb - Możesz też po prostu podać link do wymiany w takiej postaci, w jakiej widzą go wszyscy klienci, według tego samego schematu co w pierwszym wariancie, tylko /payment/ należy zastąpić przez /order/
- W metodzie są parametry, które pozwalają wyświetlić dane płatności lub formularz płatności na Twojej stronie — możesz z nich korzystać. WAŻNE: jeśli metoda z ręczną płatnością, po płatności należy zaktualizować status zamówienia z waitPayment na inProgress.
