Integración con su servidor
Comerciante
Crear una solicitud
Utilice el método public/exchanger/order/create
Nombre | Descripción | Tipo |
routeId | id de la dirección | ObjectID |
partner | código del socio | STRING |
amount | importe | FLOAT |
fromValues[0][key] | clave del campo | ObjectID |
fromValues[0][value] | valor del campo | STRING |
toValues[0][key] | clave del campo | STRING |
toValues[0][value] | valor del campo | STRING |
routeValues[0][key] | clave del campo | ObjectID |
routeValues[0][value] | valor del campo | STRING |
lang | idioma (ru, ing) | STRING |
agreement | acuerdo | BOOLEAN |
hideOutData | ocultar los datos bancarios | BOOLEAN |
clientCallbackUrl | llamada de vuelta, una vez finalizada la aplicación, el cliente verá el botón de volver al sitio web y será redirigido a este url ?status=success o para ?status=error | STRING |
ipnUrl | Dirección URL de la notificación sobre el pago instantáneo (será llamado cuando se cambie el estado de la solicitud) | STRING |
ipnSecret | línea para crear un hash seguro en ipn url | STRING |
Puede encontrar la documentación del sistema de autorización en su perfil. Puede encontrar más información sobre el trabajo con métodos y datos extra en
IPN (Notificación sobre el cambio del estado de la solicitud de pago)
UclientCallbackUrl - {{ $t('page.merchants.clientCallbackUrl') }
UhideOutData - ocultar los datos del receptor
UipnUrl - Enlace HTTP / HTTPS para notificar su servidor.
UipnSecret - Línea aleatoria para crear la firma de la solicitud (para mantener la integridad de la solicitud)
La solicitud será enviada por el método POST
IPN será enviado una vez
No se garantiza el suministro de IPN (si el servidor no ha respondido a la solicitud, no será enviada de nuevo)
Ejemplo de IPN
POST
['Content-Type'] = 'application/x-www-form-urlencoded'
orderUID :Number() - solicitud uid
orderId :String(ObjectId) - solicitud id
newStatus :String() - solicitud estado actual
inAmount :String(number) - order in sum
outAmount :String(number) - order out sum
xml_from :String() - solicitud uid
xml_to :String() - solicitud uid
timestamp :Number() - tiempo de unix y notificaciones de ipn
toValues :Array([{key,name,value}]) - datos bancarios de la solicitud
Lista de estados
new - solicitud nueva
waitPayment - estamos esperando el pago del usuario
errorPayment - error del pago del usuario (error de envío del vendedor)
inProgress - en proceso (se espera el procesamiento por el administrador o el pago de la solicitud)
inProgressPayout - en cola para pagar (pago aceptado correctamente) (si está configurado el pago automático en moneda extranjera, será inicializado
errorPayout - error de pago (error producido a la hora de pagar)
hold - solicitud congelada (problemas con la aplicación)
done - solicitud pagada correctamente
returned - la solicitud fue pagada, pero no todas las condiciones del cambio y métodos de devolución del remitente fueron cumplidos
deleted - solicitud eliminada (cancelada)
Verificación del importe del control de la solicitud (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
Control de pagos
- Si necesita controlar el estado de solicitudes, crearlas a través de la autorización, entonces todas las solicitudes serán reflejadas en su cuenta;
- Puede guardar UID de la solicitud y secreto y manualmente acceder a la solicitud, indicando estos datos en la barra de direcciones
Pago
-
Puede utilizar / payment / para visualizar la página de pagos
// schema
https://nimlab.eu/user-lang/payment/order-uid/order-secret
// example result
https://nimlab.eu/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb - También puede simplemente dar el enlace al mercado de intercambio de la forma en que la ven sus clientes según el mismo esquema de la primera opción, a excepción de que /payment/ hace falta cambiarlo por /order/
- En el método existen unos parámetros que permiten visualizar los datos de pago o la forma de pago en su sitio web, que puede utilizar. IMPORTANTE: si se utiliza el método del pago anticipado, tiene que actualizar el estado del pedido con waitPayment hasta inProgress después del pago.