Интеграция с вашата услуга
Търговец
Създаване на заявка
Използвайте метод public/exchanger/order/create
Име | Описание | Тип |
routeId | ID на посоката | ObjectID |
partner | код на партньора | STRING |
amount | сума | FLOAT |
fromValues[0][key] | поле ключ | ObjectID |
fromValues[0][value] | стойност на полето | STRING |
toValues[0][key] | поле ключ | STRING |
toValues[0][value] | стойност на полето | STRING |
routeValues[0][key] | поле ключ | ObjectID |
routeValues[0][value] | стойност на полето | STRING |
lang | език (бг, англ) | STRING |
agreement | съгласие | BOOLEAN |
hideOutData | Скриване на реквизитите | BOOLEAN |
clientCallbackUrl | Обратен линк, когато приложението завърши, клиентът ще види бутон за връщане на сайта и ще бъде пренасочен към този URL ?status=success или на ?status=error | STRING |
ipnUrl | URL за уведомление за незабавно плащане (ще бъде извикан при промяна на статуса на заявката) | STRING |
ipnSecret | низ за създаване на сигурен хеш в IPN URL | STRING |
Документацията за системата за авторизация може да намерите в личния си кабинет. Повече информация за работа с методите и допълнителни данни може да намерите на
IPN (Уведомление за промяна на статуса на платежната заявка)
UclientCallbackUrl - {{ $t('page.merchants.clientCallbackUrl') }
UhideOutData - Скриване на данните на получателя
UipnUrl - HTTP / HTTPS линк за уведомяване на вашия сървър.
UipnSecret - Произволен низ за създаване на подпис на заявката (за поддържане на целостта на заявката)
Заявката ще бъде изпратена чрез POST метод
IPN ще бъде изпратен веднъж
Доставката на IPN не е гарантирана (ако сървърът не отговори, заявката няма да бъде изпратена отново)
Пример за IPN
POST
['Content-Type'] = 'application/x-www-form-urlencoded'
orderUID :Number() - заявка uid
orderId :String(ObjectId) - заявка id
newStatus :String() - заявка настоящ статус
inAmount :String(number) - order in sum
outAmount :String(number) - order out sum
xml_from :String() - заявка uid
xml_to :String() - заявка uid
timestamp :Number() - unix време и IPN уведомление
toValues :Array([{key,name,value}]) - Реквизити на заявката
Списък на статусите
new - нова заявка
waitPayment - изчакване на плащане от потребителя
errorPayment - грешка в потребителското плащане (грешка при изпращане от продавача)
inProgress - в процес на обработка (очаква се администраторът да обработи или плащането да бъде извършено)
inProgressPayout - в опашката за плащане (плащането е успешно прието) (ако е настроено автоматично плащане, то ще бъде инициирано)
errorPayout - грешка при плащането (възникна грешка при плащането)
hold - заявката е замразена (проблеми с приложението)
done - заявката е успешно изпълнена
returned - заявката е платена, но не всички условия за обмен и методи за връщане на изпращача са изпълнени
deleted - заявката е изтрита (анулирана)
Проверка на контролната сума на заявката (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
Контрол на плащанията
- Ако трябва да контролирате статуса на заявките и да ги създавате чрез авторизация, всички заявки ще бъдат отразени в личния ви кабинет;
- Можете да запазите UID на заявката и секретния код и ръчно да я достъпите, като въведете тези данни в адресната лента
Плащане
-
Можете да използвате /payment/ за показване на страницата за плащане
// schema
https://nimlab.eu/user-lang/payment/order-uid/order-secret
// example result
https://nimlab.eu/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb - Можете също така да предоставите линк към обмена по същата схема, както виждат всички клиенти, като замените /payment/ с /order/
- Методът съдържа параметри, които ви позволяват да покажете платежните данни или формата за плащане на вашия сайт. ВАЖНО: ако се използва метод с предплащане, трябва да актуализирате статуса на поръчката от waitPayment на inProgress след плащането.