×
INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Micros 3700 Example of integration through transaction services web service

Micros 3700 Example of integration through transaction services web service

Micros 3700 Example of integration through transaction services web service

(OP)
Hello to all

I have been working with SIM and now I must make a check to be initiated without the employee intervening in the process and with SIM I cannot do it, in another post they suggested me, that I must use Transaction Services by means of a dll and call it from a SIM, but I have never worked with TS and I would like to ask them the favor to share with me some example from which I can base myself to work. Thank you very much.

RE: Micros 3700 Example of integration through transaction services web service

Can't call a SIM from Transaction Services.

RE: Micros 3700 Example of integration through transaction services web service


In case this helps... Simple post of transaction to RES 3700 via TS attached below with some thoughts.. Not sure it hits your need.

There are creative ways to fire SIM from a TS post using idle no trans and evaluating for a specific transaction element, fairly rough to explain here though.

I have found that instead of a DLL (which can be rough depending on environment) you can achieve an awful lot of functional needs through a service that accepts RX/TX messages to do your more advanced stuff outside of SIM but make it feel like SIM code or features triggered by SIM.

A sample / simple post of a Transaction to TS below, check out SoapUI if you want to test and learn in a UI application that can enable posting various transactions to POS.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:res="http://schemas.micros.com/RESPOS">
<soapenv:Header/>
<soapenv:Body>
<res:PostTransaction>
<res:pGuestCheck>
<res:CheckID>Whatever-ID</res:CheckID>
<res:CheckTableObjectNum>0</res:CheckTableObjectNum>
<res:CheckRevenueCenterObjectNum>1</res:CheckRevenueCenterObjectNum>
<res:CheckOrderType>1</res:CheckOrderType>
<res:CheckEmployeeObjectNum>1</res:CheckEmployeeObjectNum>
<res:CheckGuestCount>0</res:CheckGuestCount>
<res:pCheckInfoLines>
<res:string>Test Line 1</res:string>
<res:string>Test Line 2</res:string>
</res:pCheckInfoLines>
<res:CheckStatusBits>1</res:CheckStatusBits>
</res:pGuestCheck>
<res:ppMenuItems>
<res:ResPosAPI_MenuItem>
<res:MenuItem>
<res:MiObjectNum>200</res:MiObjectNum>
<res:MiMenuLevel>1</res:MiMenuLevel>
<res:MiReference>TEST</res:MiReference>
</res:MenuItem>
</res:ResPosAPI_MenuItem>
</res:ppMenuItems>
<res:pTmedDetail>
<res:TmedObjectNum>101</res:TmedObjectNum>
<res:TmedPartialPayment>0.00</res:TmedPartialPayment>
</res:pTmedDetail>
</res:PostTransaction>
</soapenv:Body>
</soapenv:Envelope>

Hope this helps in some way.. Good luck.

RE: Micros 3700 Example of integration through transaction services web service

(OP)
Thank you very much indeed. Without wanting to abuse your trust I ask you to please share with me some code in c# complementing what you already shared with me. Thank you very much.

RE: Micros 3700 Example of integration through transaction services web service

Don't have it in C# but this should be close enough .. Should give you directional information on how to get a service for ISL comms working.

//Constants
package com.simComs.model;

import java.io.*;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Properties;
/*


*/

public interface SIM_COMS_Constants {

static final String VERSION_NUMBER = "3.39";



static int APPROVED = 1;
static int DECLINED = 2;
static int REFERRAL = 3;


static final char OUTER_SOH = 0x11; //
static final char OUTER_STX = 0x12; //
static final char OUTER_ETX = 0x13; //
static final char OUTER_EOT = 0x14; //



static final char SOH = 1; //
static final char STX = 2; //
static final char ETX = 3; //
static final char EOT = 4; //
static final char ACK = 6;
static final char NAK = 0x15;
static final char FS = 28;




static final char[][] MESSAGE_TOKEN_MAP = {
{OUTER_SOH, SOH},
{OUTER_STX, STX},
{OUTER_ETX, ETX},
{OUTER_EOT, EOT}
};


static final char XON = 0x11;
static final char XOFF = 0x13;



}

//Request Messages
package com.simComs.model;


public class RequestMessage implements SIM_COMS_Constants {



String workstationId = null;
String interfaceName = null;

String posSourceID = null;
String messageBody = null;
String[] messageParts = null;

String responseBody = null;

String applicationSequenceNumber = null;
boolean isRetransmit = false;
String messageType = null;

String operatorMessage = "";
RequestMessageHandler handler = null;


static int debugStatus = 0;

public RequestMessage( String pPosSourceID, String pMessageBody ) throws Exception {
this.posSourceID = pPosSourceID;
this.messageBody = pMessageBody;

if( this.messageBody.indexOf(String.valueOf( FS )) == 0 ) {
this.messageBody = this.messageBody.substring(1);
}



if( this.posSourceID.length() > 16 ) {

this.workstationId = this.posSourceID.substring( 0, this.posSourceID.length()-16 );

this.interfaceName = this.posSourceID.substring( this.posSourceID.length()-16 );
}

this.messageParts = this.messageBody.split( String.valueOf( FS ), -1 );
System.out.println("this.messageParts.length="+this.messageBody.indexOf(String.valueOf( FS ))+"#");


for( int i = 0; i < this.messageParts.length; i++ ) {
System.out.println("this.messageParts["+i+"]="+this.messageParts[i]+"#");

}
}









public static final void setDebugMode( int pStatusValue ) {
if( (pStatusValue >= 0) && (pStatusValue <= REFERRAL) ) {
debugStatus = pStatusValue;
}
}

public static final int getDebugMode() {
return debugStatus;
}


public static long getChecksum( String pData ) {
long respChecksum = 0;
char[] dataChars = pData.toCharArray();

for( int i = 0; i < dataChars.length; i++ ) {
respChecksum += dataChars[i];
}

return respChecksum;
}







public void setResponseBody( String pResponseBody ) {
this.responseBody = pResponseBody;
}


public void setOperatorMessage( String pOperatorMessage ) {
this.operatorMessage = pOperatorMessage;
}
public String getOperatorMessage() {
return operatorMessage;
}



public String getWorkstation() {
return this.workstationId;
}

public boolean isExtended() {
return ( messageParts.length > 10 );
}


public String[] getMessageParts() {
return messageParts;
}


public String getMessageType() {
return messageType;
}

public String getApplicationSequenceNumber() {
return applicationSequenceNumber;
}



public String toResponseString() {

StringBuffer respBuffer = new StringBuffer();

respBuffer.append( posSourceID ).append( STX ).append(applicationSequenceNumber).append(FS);

// append message body here
if( (responseBody != null) && (responseBody.length() > 0) ) {
respBuffer.append( responseBody );
}
else {
respBuffer.append( " " );
}

// close out the message
respBuffer.append( ETX );


//return SOH + respBuffer.toString() + EOT;
return SOH + respBuffer.toString() + String.format("%04x", getChecksum( respBuffer.toString() )) + EOT;


}


}

//Response handler
package com.simComs.model;

import java.util.HashMap;

public abstract class RequestMessageHandler implements SIM_COMS_Constants {
/**
* RequestMessage that this RequestMessageHandler handles
*/
protected RequestMessage requestMessage = null;

/**
* HashMap of the response values given to us by the bank
*/
protected HashMap responseParameters = null;



/**
* Sets the requestMessage attribute of the RequestMessageHandler object
*
* @param pMessage The new requestMessage value
*/
public void setRequestMessage( RequestMessage pMessage ) {
this.requestMessage = pMessage;
}



/**
* Gets the requestMessage attribute of the RequestMessageHandler object
*
* @return The requestMessage value
*/
public RequestMessage getRequestMessage() {
return this.requestMessage;
}





/**
* Sets the responseParameters attribute of the RequestMessageHandler object
*
* @param pRespParms The new responseParameters value
*/
public void setResponseParameters( HashMap pRespParms ) {
this.responseParameters = pRespParms;
}



/**
* Gets the responseParameters attribute of the RequestMessageHandler object
*
* @return The responseParameters value
*/
public HashMap getResponseParameters() {
return this.responseParameters;
}









/**
* Gets the command attribute of the RequestMessageHandler object
*
* @return The command value
*/
public String getCommand() {
String className = getClass().getName();
return className.substring( className.lastIndexOf( '.' ) + 1 );
}



}









Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members! Already a Member? Login

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close