My Profile_


Encrypted Force Post

Retrieves the locked funds and prepares them for settlement into the merchant’s account.

This is used when a merchant obtains the authorization number directly from the issuer by a third-party authorization method (such as by phone).

This transaction allows for the ability to key in data into a Moneris-provided encrypted MSR device and pass the encrypted track 2 value to process a card not present transaction.

Things to consider.

  • This transaction supports manually keyed card not present
  • For either swiped or manually keyed card present transaction using the encrypted MSR device please refer to Encrypted Mag Swipe Force Post.

Canada Code Sample

package Canada;

import JavaAPI.*;

public class TestCanadaEncForcepost
{
	public static void main(String[] args)
	{
		String store_id = "moneris";
		String api_token = "hurgle";
		java.util.Date createDate = new java.util.Date(); 
		String order_id = "Test"+createDate.getTime();
		String cust_id = "Ced_Benson32";
		String amount = "1.00";
		String device_type = "idtech_bdk";
		String crypt = "7";
		String auth_code = "12345";
		String descriptor = "my descriptor";

		String enc_track2 = "0284008500000000041608B84D1586DEDBA1F0DB3CECD296C41195AFECE7CA8F3A00E6DBA97A4EFDEF05D3935553E9E24B5AEFC7B2330431393035FFFF3141594047A0009A7FB103";
	
		String processing_country_code = "CA";
		boolean status_check = false;

		EncForcepost encforcepost = new EncForcepost();
		encforcepost.setOrderId(order_id);
		encforcepost.setCustId(cust_id);
		encforcepost.setAmount(amount);
		encforcepost.setEncTrack2(enc_track2);
		encforcepost.setDeviceType(device_type);
		encforcepost.setAuthCode(auth_code);
		encforcepost.setCryptType(crypt);
		encforcepost.setDynamicDescriptor(descriptor);

		HttpsPostRequest mpgReq = new HttpsPostRequest();
		mpgReq.setProcCountryCode(processing_country_code);
		mpgReq.setTestMode(true); //false or comment out this line for production transactions
		mpgReq.setStoreId(store_id);
		mpgReq.setApiToken(api_token);
		mpgReq.setTransaction(encforcepost);
		mpgReq.setStatusCheck(status_check);
		mpgReq.send();

		try
		{
			Receipt receipt = mpgReq.getReceipt();

			System.out.println("CardType = " + receipt.getCardType());
			System.out.println("TransAmount = " + receipt.getTransAmount());
			System.out.println("TxnNumber = " + receipt.getTxnNumber());
			System.out.println("ReceiptId = " + receipt.getReceiptId());
			System.out.println("TransType = " + receipt.getTransType());
			System.out.println("ReferenceNum = " + receipt.getReferenceNum());
			System.out.println("ResponseCode = " + receipt.getResponseCode());
			System.out.println("ISO = " + receipt.getISO());
			System.out.println("BankTotals = " + receipt.getBankTotals());
			System.out.println("Message = " + receipt.getMessage());
			System.out.println("AuthCode = " + receipt.getAuthCode());
			System.out.println("Complete = " + receipt.getComplete());
			System.out.println("TransDate = " + receipt.getTransDate());
			System.out.println("TransTime = " + receipt.getTransTime());
			System.out.println("Ticket = " + receipt.getTicket());
			System.out.println("TimedOut = " + receipt.getTimedOut());
			System.out.println("CardLevelResult = " + receipt.getCardLevelResult());
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}

                
USA Code Sample

package USA;

import JavaAPI.*;

public class TestUSAEncForcepost
{
	public static void main(String[] args)
	{
		String store_id = "monusqa002";
		String api_token = "qatoken";
		java.util.Date createDate = new java.util.Date(); 
		String order_id = "Test"+createDate.getTime();
		String cust_id = "Ced_Benson32";
		String amount = "1.00";
		String device_type = "idtech";
		String crypt = "7";
		String auth_code = "12345";
		String descriptor = "my descriptor";

		String enc_track2 = "0284008500000000041608B84D1586DEDBA1F0DB3CECD296C41195AFECE7CA8F3A00E6DBA97A4EFDEF05D3935553E9E24B5AEFC7B2330431393035FFFF3141594047A0009A7FB103";
	
		String processing_country_code = "US";
		boolean status_check = false;

		EncForcepost encforcepost = new EncForcepost();
		encforcepost.setOrderId(order_id);
		encforcepost.setCustId(cust_id);
		encforcepost.setAmount(amount);
		encforcepost.setEncTrack2(enc_track2);
		encforcepost.setDeviceType(device_type);
		encforcepost.setAuthCode(auth_code);
		encforcepost.setCryptType(crypt);
		encforcepost.setDynamicDescriptor(descriptor);

		HttpsPostRequest mpgReq = new HttpsPostRequest();
		mpgReq.setProcCountryCode(processing_country_code);
		mpgReq.setTestMode(true); //false or comment out this line for production transactions
		mpgReq.setStoreId(store_id);
		mpgReq.setApiToken(api_token);
		mpgReq.setTransaction(encforcepost);
		mpgReq.setStatusCheck(status_check);
		mpgReq.send();

		try
		{
			Receipt receipt = mpgReq.getReceipt();

			System.out.println("CardType = " + receipt.getCardType());
			System.out.println("TransAmount = " + receipt.getTransAmount());
			System.out.println("TxnNumber = " + receipt.getTxnNumber());
			System.out.println("ReceiptId = " + receipt.getReceiptId());
			System.out.println("TransType = " + receipt.getTransType());
			System.out.println("ReferenceNum = " + receipt.getReferenceNum());
			System.out.println("ResponseCode = " + receipt.getResponseCode());
			System.out.println("ISO = " + receipt.getISO());
			System.out.println("BankTotals = " + receipt.getBankTotals());
			System.out.println("Message = " + receipt.getMessage());
			System.out.println("AuthCode = " + receipt.getAuthCode());
			System.out.println("Complete = " + receipt.getComplete());
			System.out.println("TransDate = " + receipt.getTransDate());
			System.out.println("TransTime = " + receipt.getTransTime());
			System.out.println("Ticket = " + receipt.getTicket());
			System.out.println("TimedOut = " + receipt.getTimedOut());
			System.out.println("CardLevelResult = " + receipt.getCardLevelResult());
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}

                

Encrypted Force Post - Transaction Values

EncForcepost encforcepost = new EncForcepost();

HttpsPostRequest mpgReq = new HttpsPostRequest();

mpgReq.setTransaction(encforcepost);

Encrypted Force Post object mandatory values

VALUE TYPE LIMITS SET METHOD DESCRIPTION
Order ID String 50-character alphanumeric encforcepost.setOrderId(order_id); Merchant-defined transaction identifier that must be unique for every Purchase, Pre-Authorization and Independent Refund transaction. No two transactions of these types may have the same order ID.   For Refund, Completion and Purchase Correction transactions, the order ID must be the same as that of the original transaction.   Canada: The last 10 characters of the order ID are displayed in the “Invoice Number” field on the Merchant Direct Reports. However only letters, numbers and spaces are sent to Merchant Direct.   A minimum of 3 and a maximum of 10 valid characters are sent to Merchant Direct. Only the last characters beginning after any invalid characters are sent. For example, if the order ID is 1234-567890, only 567890 is sent to Merchant Direct.   US: The last 32 characters of the order ID are sent on to the Client Line settlement reports.   For either countries, If the order ID has fewer than 3 characters, it may display a blank or 0000000000 in the Invoice Number field.
Amount String 9-character decimal encforcepost.setAmount(amount); Transaction amount This must contain at least 3 digits, two of which are penny values. 
The minimum allowable value is $0.01, and the maximum allowable value is $999999.99. Transaction amounts of $0.00 are not allowed.
Authorization code String 8-character alphanumeric encforcepost.setAuthCode (auth_code); Authorization code provided in the transaction response from the issuing bank. This is required for Force Post transactions.
Encrypted Track 2 data String   encforcepost.setEncTrack2 (enc_track2); String that is retrieved by swiping or keying in a credit card number through a Moneris-provided encrypted mag swipe card reader. It is part of an encrypted keyed or swiped transaction only. This string must be retrieved by a specific device. (See Device Type below for the list of current available devices.)
Device Type String 30 – character alphanumeric encforcepost.setDeviceType (device_type); Type of encrypted mag swipe reader that was used to read the credit card. This must be a Moneris-provided device so that the values are properly encrypted and decrypted. This field is case-sensitive. Available values are: "idtech".
E-Commerce indicator String 1-character alphanumeric encforcepost.setCryptType(crypt); Supported values are:
  • 1 - Mail Order / Telephone Order—Single
  • 2 - Mail Order / Telephone Order—Recurring
  • 3 - Mail Order / Telephone Order—Instalment
  • 4 - Mail Order / Telephone Order—Unknown classification
  • 5 - Authenticated e-commerce transaction (VBV)
  • 6 - Non-authenticated e-commerce transaction (VBV)
  • 7 - SSL-enabled merchant
  • 8 - Non-secure transaction (web- or email-based)
  • 9 - SET non-authenticated transaction
 

Encrypted Force Post optional values

VALUE TYPE LIMITS SET METHOD DECRIPTION
Status Check Boolean true/false mpgReq.setStatusCheck (status_check); Status Check is a connection object value that allows merchants to verify whether a previously sent transaction was processed successfully. To submit a Status Check request, resend the original transaction with all the same parameter values, but set the status check value to either true or false. Once set to “true”, the gateway will check the status of a transaction that has an order_id that matches the one passed.
  • If the transaction is found, the gateway will respond with the specifics of that transaction.
  • If the transaction is not found, the gateway will respond with a not found message.
  • Once it is set to “false”, the transaction will process as a new transaction.
Things to consider:
  • The Status Check request should only be used once and immediately (within 2 minutes) after the last transaction that had failed.
  • Do not resend the Status Check request if it has timed out. Additional investigation is required.
Customer ID String 50-character alphanumeric encforcepost.setCustId(cust_id); This can be used for policy number, membership number, student ID, or invoice number. This field is searchable from the Moneris Merchant Resource Centre.
Dynamic descriptor String 20-character alphanumeric encforcepost.setDynamicDescriptor ("my descriptor"); Merchant defined description sent on a per-transaction basis that will appear on the credit card statement appended to the merchant’s business name. 
The combined length of the merchant’s business name and dynamic_descriptor may not exceed 25 characters.

Predecessors
  • Pre-Authorization completed on an independent system
Successors

Encrypted Mag Swipe Force Post

Retrieves the locked funds and prepares them for settlement into the merchant’s account.

This is used when a merchant obtains the authorization number directly from the issuer by a third-party authorization method (such as by phone).

This transaction allows for the ability to swipe or key in data into a Moneris-provided encrypted MSR device and pass the encrypted track 2 value to process a card present transaction.

Things to consider.

  • This transaction supports both swiped card present & manually keyed card present
  • For manually keyed card not present transaction using the encrypted MSR device please refer to Encrypted Force Post.

Canada Code Sample

package Canada;

import JavaAPI.*;

public class TestCanadaEncTrack2Forcepost
{
	public static void main(String[] args)
	{
		String store_id = "moneris";
		String api_token = "hurgle";
		java.util.Date createDate = new java.util.Date(); 
		String order_id = "Test"+createDate.getTime();
		String cust_id = "my customer id";
		String amount = "5.00";
		String pos_code = "00";
		String device_type = "idtech_bdk";
		String auth_code = "123456";
		String processing_country_code = "CA";
		boolean status_check = false;
		String descriptor = "my descriptor";
		String enc_track2 =
				"02D901801F4F2800039B%*4924********4030^TESTCARD/MONERIS^***************************************"
				+ "**?*;4924********4030=********************?*A7150C78335A5024949516FDA9A68A91C4FBAB1279DD1DE2283D"
				+ "BEBB2C6B3FDEACF7B5B314219D76C00890F347A9640EFE90023E31622F5FD95C14C0362DD2EAB28ADEB46B8B577DA1A1"
				+ "8B707BCC7E48068EFF1882CFB4B369BDC4BB646C870D6083239860B23837EA91DB3F1D8AD066DAAACE2B2DA18D563E4F"
				+ "1EF997696337B8999E9C707DEC4CB0410B887291CAF2EE449573D01613484B80760742A3506C31415939320000A00028"
				+ "3C5E03";           

		EncTrack2Forcepost enctrack2fp = new EncTrack2Forcepost();
		enctrack2fp.setOrderId(order_id);
		enctrack2fp.setCustId(cust_id);
		enctrack2fp.setAmount(amount);
		enctrack2fp.setEncTrack2(enc_track2);
		enctrack2fp.setPosCode(pos_code);
		enctrack2fp.setDeviceType(device_type);
		enctrack2fp.setAuthCode(auth_code);
		enctrack2fp.setDynamicDescriptor(descriptor);

		HttpsPostRequest mpgReq = new HttpsPostRequest();
		mpgReq.setProcCountryCode(processing_country_code);
		mpgReq.setTestMode(true); //false or comment out this line for production transactions
		mpgReq.setStoreId(store_id);
		mpgReq.setApiToken(api_token);
		mpgReq.setTransaction(enctrack2fp);
		mpgReq.setStatusCheck(status_check);
		mpgReq.send();

		try
		{
			Receipt receipt = mpgReq.getReceipt();

			System.out.println("CardType = " + receipt.getCardType());
			System.out.println("TransAmount = " + receipt.getTransAmount());
			System.out.println("TxnNumber = " + receipt.getTxnNumber());
			System.out.println("ReceiptId = " + receipt.getReceiptId());
			System.out.println("TransType = " + receipt.getTransType());
			System.out.println("ReferenceNum = " + receipt.getReferenceNum());
			System.out.println("ResponseCode = " + receipt.getResponseCode());
			System.out.println("ISO = " + receipt.getISO());
			System.out.println("BankTotals = " + receipt.getBankTotals());
			System.out.println("Message = " + receipt.getMessage());
			System.out.println("AuthCode = " + receipt.getAuthCode());
			System.out.println("Complete = " + receipt.getComplete());
			System.out.println("TransDate = " + receipt.getTransDate());
			System.out.println("TransTime = " + receipt.getTransTime());
			System.out.println("Ticket = " + receipt.getTicket());
			System.out.println("TimedOut = " + receipt.getTimedOut());
			System.out.println("MaskedPan = " + receipt.getMaskedPan());
			System.out.println("CardLevelResult = " + receipt.getCardLevelResult());
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}

                
USA Code Sample

package USA;

import JavaAPI.*;

public class TestUSAEncTrack2Forcepost
{
	public static void main(String[] args)
	{
		String store_id = "monusqa002";
		String api_token = "qatoken";
		java.util.Date createDate = new java.util.Date(); 
		String order_id = "Test"+createDate.getTime();
		String cust_id = "my customer id";
		String amount = "5.00";
		String pos_code = "00";
		String device_type = "idtech";
		String auth_code = "123456";
		String processing_country_code = "US";
		boolean status_check = false;
		String descriptor = "my descriptor";
		String enc_track2 =
				"02D901801F4F2800039B%*4924********4030^TESTCARD/MONERIS^***************************************"
				+ "**?*;4924********4030=********************?*A7150C78335A5024949516FDA9A68A91C4FBAB1279DD1DE2283D"
				+ "BEBB2C6B3FDEACF7B5B314219D76C00890F347A9640EFE90023E31622F5FD95C14C0362DD2EAB28ADEB46B8B577DA1A1"
				+ "8B707BCC7E48068EFF1882CFB4B369BDC4BB646C870D6083239860B23837EA91DB3F1D8AD066DAAACE2B2DA18D563E4F"
				+ "1EF997696337B8999E9C707DEC4CB0410B887291CAF2EE449573D01613484B80760742A3506C31415939320000A00028"
				+ "3C5E03";           

		EncTrack2Forcepost enctrack2fp = new EncTrack2Forcepost();
		enctrack2fp.setOrderId(order_id);
		enctrack2fp.setCustId(cust_id);
		enctrack2fp.setAmount(amount);
		enctrack2fp.setEncTrack2(enc_track2);
		enctrack2fp.setPosCode(pos_code);
		enctrack2fp.setDeviceType(device_type);
		enctrack2fp.setAuthCode(auth_code);
		enctrack2fp.setDynamicDescriptor(descriptor);

		HttpsPostRequest mpgReq = new HttpsPostRequest();
		mpgReq.setProcCountryCode(processing_country_code);
		mpgReq.setTestMode(true); //false or comment out this line for production transactions
		mpgReq.setStoreId(store_id);
		mpgReq.setApiToken(api_token);
		mpgReq.setTransaction(enctrack2fp);
		mpgReq.setStatusCheck(status_check);
		mpgReq.send();

		try
		{
			Receipt receipt = mpgReq.getReceipt();

			System.out.println("CardType = " + receipt.getCardType());
			System.out.println("TransAmount = " + receipt.getTransAmount());
			System.out.println("TxnNumber = " + receipt.getTxnNumber());
			System.out.println("ReceiptId = " + receipt.getReceiptId());
			System.out.println("TransType = " + receipt.getTransType());
			System.out.println("ReferenceNum = " + receipt.getReferenceNum());
			System.out.println("ResponseCode = " + receipt.getResponseCode());
			System.out.println("ISO = " + receipt.getISO());
			System.out.println("BankTotals = " + receipt.getBankTotals());
			System.out.println("Message = " + receipt.getMessage());
			System.out.println("AuthCode = " + receipt.getAuthCode());
			System.out.println("Complete = " + receipt.getComplete());
			System.out.println("TransDate = " + receipt.getTransDate());
			System.out.println("TransTime = " + receipt.getTransTime());
			System.out.println("Ticket = " + receipt.getTicket());
			System.out.println("TimedOut = " + receipt.getTimedOut());
			System.out.println("MaskedPan = " + receipt.getMaskedPan());
			System.out.println("CardLevelResult = " + receipt.getCardLevelResult());
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}

                

Encrypted Mag Swipe Force Post - Transaction Values

EncTrack2Forcepost enctrack2fp = new EncTrack2Forcepost();

HttpsPostRequest mpgReq = new HttpsPostRequest();

mpgReq.setTransaction(enctrack2fp);

Encrypted Mag Swipe Force Post object mandatory values

VALUE TYPE LIMITS SET METHOD DESCRIPTION
Order ID String 50-character alphanumeric enctrack2fp.setOrderId(order_id); Merchant-defined transaction identifier that must be unique for every Purchase, Pre-Authorization and Independent Refund transaction. No two transactions of these types may have the same order ID.   For Refund, Completion and Purchase Correction transactions, the order ID must be the same as that of the original transaction.   Canada: The last 10 characters of the order ID are displayed in the “Invoice Number” field on the Merchant Direct Reports. However only letters, numbers and spaces are sent to Merchant Direct.   A minimum of 3 and a maximum of 10 valid characters are sent to Merchant Direct. Only the last characters beginning after any invalid characters are sent. For example, if the order ID is 1234-567890, only 567890 is sent to Merchant Direct.   US: The last 32 characters of the order ID are sent on to the Client Line settlement reports.   For either countries, If the order ID has fewer than 3 characters, it may display a blank or 0000000000 in the Invoice Number field.
Amount String 9-character decimal enctrack2fp.setAmount(amount); Transaction amount This must contain at least 3 digits, two of which are penny values. 
The minimum allowable value is $0.01, and the maximum allowable value is $999999.99. Transaction amounts of $0.00 are not allowed.
Authorization code String 8-character alphanumeric enctrack2fp.setAuthCode (auth_code); Authorization code provided in the transaction response from the issuing bank. This is required for Force Post transactions.
Encrypted Track 2 data String   enctrack2fp.setEncTrack2 (enc_track2); String that is retrieved by swiping or keying in a credit card number through a Moneris-provided encrypted mag swipe card reader. It is part of an encrypted keyed or swiped transaction only. This string must be retrieved by a specific device. (See Device Type below for the list of current available devices.)
Device Type String 30 – character alphanumeric enctrack2fp.setDeviceType (device_type); Type of encrypted mag swipe reader that was used to read the credit card. This must be a Moneris-provided device so that the values are properly encrypted and decrypted. This field is case-sensitive. Available values are: "idtech".
POS Code String 2-character numeric enctrack2fp.setPosCode(pos_code); Supported values are:
  • 00 - normal presentment situations
  • 71 - If a Pre-Authorization transaction was card-present and keyed-in, then the POS code for the corresponding Completion transaction is 71.
  • 27 - In an unmanned kiosk environment where the card is present
If the solution is not “merchant and cardholder present”, contact Moneris for the proper POS code.

Encrypted Mag Swipe Force Post optional values

VALUE TYPE LIMITS SET METHOD DECRIPTION
Status Check Boolean true/false mpgReq.setStatusCheck (status_check); Status Check is a connection object value that allows merchants to verify whether a previously sent transaction was processed successfully. To submit a Status Check request, resend the original transaction with all the same parameter values, but set the status check value to either true or false. Once set to “true”, the gateway will check the status of a transaction that has an order_id that matches the one passed.
  • If the transaction is found, the gateway will respond with the specifics of that transaction.
  • If the transaction is not found, the gateway will respond with a not found message.
  • Once it is set to “false”, the transaction will process as a new transaction.
Things to consider:
  • The Status Check request should only be used once and immediately (within 2 minutes) after the last transaction that had failed.
  • Do not resend the Status Check request if it has timed out. Additional investigation is required.
Customer ID String 50-character alphanumeric enctrack2fp.setCustId(cust_id); This can be used for policy number, membership number, student ID, or invoice number. This field is searchable from the Moneris Merchant Resource Centre.
Dynamic descriptor String 20-character alphanumeric enctrack2fp.setDynamicDescriptor (descriptor); Merchant defined description sent on a per-transaction basis that will appear on the credit card statement appended to the merchant’s business name. 
The combined length of the merchant’s business name and dynamic_descriptor may not exceed 25 characters.

Predecessors
  • Pre-Authorization completed on an independent system
Successors
  • Mag Swipe Purchase Correction ( API )
  • Mag Swipe Refund ( API )
  • Vault Tokenize Credit Card ( API )