Descripción general

ChainMyne Pay proporciona una interfaz REST basada en estándares que permite a los desarrolladores de aplicaciones interactuar con su cuenta comercial ChainMyne Pay. Uso de ChainMyne API de pago, los clientes pueden crear una dirección de billetera de depósito para aceptar BTC, ETH y LTC para el pago, activos digitales en tiempo real a tasas fiduciarias y recibir notificaciones de los pagos recibidos.

Ambiente

 Los siguientes entornos están disponibles

 

Base URL cadena de bloques BTC
Producción de BTC https://api.chainmynepay.com:5000/usr/wallet/btc/create red principal
Caja de arena BTC https://api.digitalpaydev.com:5000/usr/wallet/btc/create red de prueba
Producción de BCH https://api.chainmynepay.com:5000/usr/wallet/bch/create red principal
Caja de arena BCH https://api.digitalpaydev.com:5000/usr/wallet/bch/create red de prueba
Producción de ETH https://api.chainmynepay.com:5000/usr/wallet/eth/create red principal
Caja de arena ETH https://api.digitalpaydev.com:5000/usr/wallet/eth/create ropsten
Producción de LTC https://api.chainmynepay.com:5000/usr/wallet/ltc/create red principal
Caja de arena de LTC https://api.digitalpaydev.com:5000/usr/wallet/ltc/create red de prueba

 

Empezando

Para usar API comercial, el usuario tendrá que seguir unos sencillos pasos:

Clave API

Encabezado de autorización HMAC

Clave API

Para usar la API, los usuarios deberán obtener la clave pública y la clave secreta de la API, que se pasan a la API con cada solicitud. Las claves API se pueden generar en su tablero de comerciante en tablero.chainmynepay.com en la sección Configuración > Claves API.

 

Valor del encabezado de autorización de HMAC

Una vez que el usuario obtiene la clave API, ¡todo está configurado! Ahora, lo único que queda es formar una variable de encabezado de autorización HMAC. Para formar este encabezado, el usuario necesitará las siguientes variables:

var apikey = 'clave pública'; // clave obtenida de ChainMyne Pay

var secretkey = 'clave secreta'; // secreto obtenido de ChainMyne Pay

var marca de tiempo = Matemáticas.piso(Fecha.ahora() / 1000); // marca de tiempo en segundos

var nonce = Math.floor(Math.random() * Math.floor(1000000)); // entero aleatorio nonce

La última variable, que se necesita es Parámetros del cuerpo (JSON), la cadena consta de TODOS los parámetros del cuerpo separados por el signo '&' si hay más de uno (por ejemplo: 'ref_id=mk1231sa11×tamp=1588364168&nonce=900288).

bodyString='ref_id=mk1231sa11×tamp=1588364168&nonce=900288'

 

Si las variables de URL y/o moneda se pasan en el cuerpo, deben agregarse de la siguiente manera

bodyString='ref_id=mk1231sa11&url=https://yourwebhookurl.com×tamp=1588364168&nonce=900288¤cy=USD'

Finalmente, el usuario tiene que juntar todas las variables y codificarlas:

parámetros de url y cuerpo

var hmacDigest = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA512(bodyString, secretkey));

var autenticación = btoa(apikey + ':' + hmacDigest);

¡Eso es todo! El usuario ahora puede usar la variable 'autenticación' como encabezado para comunicarse con la API comercial.

Identificación del comerciante que se usará en el encabezado * Requerido

Se requiere pasar una identificación de comerciante en el encabezado.

 

El ID de comerciante del usuario se puede encontrar en el usuario ChainMyne Pay tablero en dashboard.chainmynepay.com o api.digitalpaydev.com en Configuración > sección Información de la cuenta.

 

Recibir pagos

Crear dirección de billetera de pago

Publicar Crear API de dirección de billetera

variable = btc, eth, bch

https://api.chainmynepay.com:5000/usr/wallet/<asset>/create

https://api.digitalpaydev.com:5000/usr/wallet/<asset>/create

 

Encabezados:

Clave API. 9c0c51ee6f3798e3aae63ea630ddd2b7265fe54f

(valor de clave pública)

mercantil_id (Identificación del comerciante en Información de la cuenta)

autenticación. (valor de autenticación generado)

CUERPO JSON SIN PROCESAR

{ “ref_id”: “referencia única de usuario/id de factura por cliente”,

“url”: “https://yourwebhookurl.com”, (campo opcional, esto anulará la URL del webhook establecida en las opciones de la clave API).

"marca de tiempo": 1550838976, "nonce": 693795, "moneda": "USD" (opciones USD, CAD, EUR. Si el campo no está incluido, USD se usa de forma predeterminada.)}

Ejemplo de respuesta exitosa

{

“estado”: “éxito”,

"datos": {

“ref_id”: “cor121121”,

“precio”: 8632.59,

“dirección”: “moep287CANJhZoyssrigoHtkMwBiz6uhDt”,

"moneda": "BTC",

“expira”: “2020-05-04 14:32:46.480”

}

}

Ejemplo de respuesta fallida

{

“estado”: “error”,

"mensaje": "Acceso no válido"

}

O

{

“estado”: “error”,

"mensaje": "No se pudo crear la dirección

}

Notificación de devolución de llamada de webhook de pago ChainMyne Pay:

Las notificaciones de pago instantáneas (IPN) se envían desde ChainMyne Pay con cada cambio de estado confirmado. Los IPN se publican en la URL de su webhook especificada en el panel ChainMyne Pay del usuario. Si la puerta de enlace ChainMyne Pay recibe una respuesta HTTP/1.1 200 OK de su servidor, se considera que el mensaje se entregó correctamente.

NOTA: Esto no significa que la aplicación del usuario manejó correctamente los datos, ¡solo que el servidor del usuario los recibió correctamente!

Si la puerta de enlace recibe un código de error HTTP, el servidor ChainMyne Pay intentará reenviar la IPN a intervalos de tiempo crecientes.

La cantidad de tiempo entre cada reenvío es la siguiente: 1 minuto de retraso, 2 minutos de retraso, 4 minutos de retraso, 8 minutos de retraso, 20 minutos de retraso, 40 minutos de retraso, 80 minutos de retraso, 160 minutos de retraso, 320 minutos de retraso, 640 minuto de retraso y 1.280 minutos de retraso. El sistema IPN deja de volver a publicar cuando:

ChainMyne Pay recibe una respuesta HTTP básica "200 OK" de su servidor web, o

cuando han pasado 1.280 minutos desde la publicación inicial.

Nota: Esta funcionalidad se aplica tanto a las cuentas de Sandbox como a las de Live.

Respuesta de URL de webhook (IPN)

Encabezados

firma CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA512(Cuerpo, clave secreta));

Cuerpo

{“ref_id”:”wm_123323″,

“precio”:8550.26,

“cantidad”:0.0006,

"total": 5.13,

“fecha_hora”:”1588354319000″,

“id_transacción”:”c3c2920e4705cc37c57d0937576d6346c27ca81f2b9e507fd47a1de113b7bba9″,

“moneda”:”BTC”,

“red”:”red de prueba”,

"Moneda: USD"

}

Obtener el estado de la transacción

https://api.chainmynepay.com:5000/usr/wallet/transactions

https://api.digitalpaydev.com:5000/usr/wallet/transactions

Encabezados

Clave API. 9c0c51ee6f3798e3aae63ea630ddd2b7265fe54f

(valor de clave pública)

mercantil_id (Identificación del comerciante en Información de la cuenta)

autenticación. (valor de autenticación generado)

CUERPO JSON SIN PROCESAR

{“dirección”: “bchtest:qpggts6de95hnutg8wrxx55mh9z2dnxp2v64tuqn73”,

"marca de tiempo": 1550838976, "nonce": 693795}

Ejemplo de respuesta exitosa

{

“estado”: “éxito”,

"datos": {

“fecha_hora”: “2020-07-31T22:10:21.000Z”,

“dirección”: “bchtest:qpggts6de95hnutg8wrxx55mh9z2dnxp2v64tuqn73”,

“estado”: “Pagado”, (Pagado, Pendiente)

“cantidad_de_pago”: 0.01655245,

“pago_total”: 6.54,

“txid”: “0bd4d3c2ab491649bc5c7328aba8d46b2c2c856ca5cd8261d489a7e01c2a5f12”,

“precio”: 395.23,

“moneda”: “USD”,

“moneda”: “BCH”

}

}

 

Obtener clave API

CORREO   https://api. .com:5000/keyauth

CORREO   https://api.digitalpaydev.com:5000/keyauth

Encabezados

'Tipo de contenido': 'aplicación/json'

Cuerpo

{“nombre de usuario”:”clientes@correo electrónico”,

“contraseña”:”contraseña del cliente”

}

Respuesta de éxito

{

    “estado”: “éxito”,

    "datos": {

        “nombre”: “Nombre del comerciante”,

“merchant_id”:”identificación del comerciante”

        “clave_pública”: “qw92332bb6f07da62f17fdec1f703e3214cf2d78vv6”,

        “clave_secreta”: “3w0482d4f3ea4f1f12f8fe250605472989990c6bsc”

    }

}

Respuestas de error

Credenciales no válidas

{

    “estado”: “error”,

    "mensaje": "Credenciales no válidas"

}

Cuentas KYC no verificadas

{

    “estado”: “error”,

    "mensaje": "No verificado"

}

es_ES