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"
}