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)

Para recibir la notificación sobre el cambio del estado de la solicitud, a la hora de crearla, tiene que enviar unos parámetros adicionales:

  • 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
  • hideOutData - ocultar los datos del receptor
  • ipnUrl - Enlace HTTP / HTTPS para notificar su servidor.
  • ipnSecret - Línea aleatoria para crear la firma de la solicitud (para mantener la integridad de la solicitud)
  1. La solicitud será enviada por el método POST
  2. IPN será enviado una vez
  3. 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

  1. 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;
  2. Puede guardar UID de la solicitud y secreto y manualmente acceder a la solicitud, indicando estos datos en la barra de direcciones

Pago

  1. Puede utilizar / payment / para visualizar la página de pagos

    // schema
    https://www.smartexpay.com//user-lang/payment/order-uid/order-secret
    // example result
    https://www.smartexpay.com//en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb
  2. 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/
  3. 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.