2017-11-21 9 views
6

Ich bin ziemlich neu in Node, und ich versuche, eine Verbindung zu einem Clover Mini-Gerät über einen Websocket mithilfe der API von Clover bereitgestellt.Wie stelle ich eine Verbindung zu einem Clover Mini-Gerät mit ONLY-Knoten her?

Ich habe versucht, den folgenden Beispielcode zu ändern, um nur Knoten zu verwenden, aber wenn ich es in Knoten öffne passiert nichts. (Keine Fehler, passiert einfach nichts)

Es funktioniert in Chrome ganz gut, also was fehlt?

https://github.com/clover/remote-pay-cloud

var $ = require('jQuery'); 

var clover = require("remote-pay-cloud"); 
var log = clover.Logger.create(); 

var connector = new clover.CloverConnectorFactory().createICloverConnector({ 
    "oauthToken": "1e7a9007-141a-293d-f41d-f603f0842139", 
    "merchantId": "BBFF8NBCXEMDV", 
    "clientId": "3RPTN642FHXTX", 
    "remoteApplicationId": "com.yourname.yourapplication:1.0.0-beta1", 
    "deviceSerialId": "C031UQ52340015", 
    "domain": "https://sandbox.dev.clover.com/" 
}); 

var ExampleCloverConnectorListener = function(cloverConnector) { 
    clover.remotepay.ICloverConnectorListener.call(this); 
    this.cloverConnector = cloverConnector; 
}; 

ExampleCloverConnectorListener.prototype = Object.create(clover.remotepay.ICloverConnectorListener.prototype); 
ExampleCloverConnectorListener.prototype.constructor = ExampleCloverConnectorListener; 

ExampleCloverConnectorListener.prototype.onReady = function (merchantInfo) { 
    var saleRequest = new clover.remotepay.SaleRequest(); 
    saleRequest.setExternalId(clover.CloverID.getNewId()); 
    saleRequest.setAmount(10000); 
    this.cloverConnector.sale(saleRequest); 
}; 

ExampleCloverConnectorListener.prototype.onVerifySignatureRequest = function (request) { 
    log.info(request); 
    this.cloverConnector.acceptSignature(request); 
}; 

ExampleCloverConnectorListener.prototype.onConfirmPaymentRequest = function (request) { 
    this.cloverConnector.acceptPayment(request.payment); 
}; 

ExampleCloverConnectorListener.prototype.onSaleResponse = function (response) { 
    log.info(response); 
    connector.dispose(); 
    if(!response.getIsSale()) { 
     console.error("Response is not an sale!"); 
     console.error(response); 
    } 
}; 

var connectorListener = new ExampleCloverConnectorListener(connector); 
connector.addCloverConnectorListener(connectorListener); 
connector.initializeConnection(); 
+0

Möglicherweise müssen WebSocket POLYfill, vielleicht auch mehr. – dandavis

Antwort

2

Nachdem mit den Entwicklern bei Klee in Kontakt zu treten, hatte ihre Dokumentation einige Fehler. Für andere Benutzer ist hier der Link zu diesem Thema auf ihrem gitub sowie einige Beispielcode.

link to github issue

const endpoint = "ws://yourip:yourport/remote_pay"; 

var webSocketFactory = function() { 
    let webSocketOverrides = { 
     createWebSocket: function() { 
      // To support self-signed certificates you must pass rejectUnauthorized = false. 
      // https://github.com/websockets/ws/blob/master/examples/ssl.js 
      let sslOptions = { 
       rejectUnauthorized: false 
      }; 
      // Use the ws library by default. 
      return new WebSocket(endpoint, sslOptions); 
     } 
    } 
    return Object.assign(new clover.CloverWebSocketInterface(endpoint), webSocketOverrides); 
}; 

var ExampleWebsocketPairedCloverDeviceConfiguration = function() { 
    clover.WebSocketPairedCloverDeviceConfiguration.call(this, 
     endpoint, // endpoint 
     "com.cloverconnector.javascript.simple.sample:1.4", // Application Id 
     "Javascript Simple Sample", // posName 
     "Register_1", // serialNumber 
     null, // authToken().get(
     webSocketFactory, 
     new clover.ImageUtil()); 
}; 
Verwandte Themen