Author Archives: Admin

Pi goes north to Canada

Category:Uncategorized

Pi is partnering with a prominent Canadian processor, a North American leader in EMV-compliant payment services and innovation.  The same PiConnect API’s that offer simple integration for U.S. processing, will work seamlessly with our Canadian solutions.


PiConnect DLL 3.4.0 released

Category:updates

Today we released a new and improved version of our piconnect.dll. Please visit Nuget Gallery to download the recently update library.

PiConnect 3.4.0 on Nuget Gallery

In this version we have added several new transaction types, improved functions and a few bug fixes. PiConnect 3.4.0 is less than 100 KB and includes unique features such as:

  • Call past transactions
  • Full tokenization (when offered by the device)
  • Automatic IP update
  • Error corrections and transaction re-try
  • Close batch for all PAX devices on the network

and much more.

Our PiCommander product has also been updated by utilizing PiConnect 3.4.0.

 


PI Cloud Emulator

Category:Sample codes

We are glad to announce the release of our first PAX S300 emulator and development tool for our PI Cloud product.

PI Cloud is our  answer to the need for a solution that provides total and complete platform independence. This product has multiple patents pending.

PI Cloud Emulator comes with a PAX S300 emulator, sample codes and notes for developers to start building their semi-integrated solution instantly.

As a developer you don’t need to buy, or borrow, a PAX terminal and that simply means you save a lot of precious development time and also a few hundred dollars.

I don’t know if any of our competitors offer an emulator or not, but I am sure what we have built for the developers has no match.

Download a free copy of PI Cloud Emulator.


PIPay in Windows app Store

Category:updates

We are proud to announce the release of the very first and the only solution for semi-integrated EMV and chip card processing for PAX credit card terminals and Pinpads.

As of December 25th 2017, PIPay is available for download on Windows app store. The app is free and you can get it from Windows Store.

We are especially excited about this product, because it was made possible, after our PIConnecr PCL was released. Without PIConnect PCL you will not be able to build and app for Windows store, iOS or Android by merely using PAX’s original library (POSLink).

PIConnect PCL is a library for PAX semi-integrated devices, developed entirely by our developers at PI Technologies,  that provides a great set of tools to developers in order to build apps with chip and EMV card processing capabilities, for iOS, Android and Windows Universal Platform (UWP).

PIConnect PCL uses .NET 4.5 and newer and also .Net Core, which makes a great tool for semi-integrated development in Xamarin.

PIPay app, presents two solutions in one:

  1. Card-present transactions with PAX terminals.
  2. Card-not-present transaction by using PIConnect HPF (Hosted Payment Page).

PIPay app benefits from our very own proprietary solutions for semi-integrated payments and hosted payment pages.

Please visit PIConnect PCL product page to learn more about this exclusive product and download your free copy.


Using PICommander

Category:Sample codes

Introduction

The following is the Know-How you need to build apps with credit cards processing capabilities (including chip and contactless cards) for any platform (iOS, Android, Windows) for a PAX credit card terminal.

Background

PAX pinpad terminals are PCI compliant devices and certified by many credit card processors to process chip cards, Contacless(ApplePay,SmasungPay, etc.) and magnetic stripe credit cards with semi-integration techniques. To take advantage of semi-integrated devices, and to avoid using a gateway, I developed PI Commander.

PICommander uses PIConnect (See this article), which is an agile and very lean dll. PI Commander maintains a HTTP persistent connection (keep-alive) to provide HTTP GET methods for processing credit and debit cards on your PAX EMV-Enabled device.

Using the code

PICommander by Payment Innovators

Start by downloading a free copy of PICommander from here.

To setup your PICommander HTTP server, enter the IP address of the PC, where PICommand is installed. Enter a port number and set the rest of fields as shown in the figure.

Click on the PICommander button to start your server. Now open a browser and navigate to the  address: e.g.

http://10.0.0.2:7001

At this point you should see the PICommander home page, which has details of commands, parameters and transaction types:

Your local HTTP server is now up and running and it is ready to launch your commands:

CreditSale() Transaction:

This is one of the most commonly performed transaction type. This transaction charges a dollar amount to the card:

http://10.0.0.2:7001/method=CreditSale&amount=10.25&ticketid=12&sn=5313125

Required parameters are method, amount to be charged, ticket (or invoice) number and finally serial number of the PAX device. Send the URL and watch your PAX terminal to fire up. Tap or swipe

a credit card. The following is the JSON response from PI Commander:

{
   "TransactionID":"3",
   "TicketID":"12",
   "TransType":"SALE",
   "Timestamp":"20171221195459",
   "ResponseMsg":"OK",
   "ResponseCode":"000000",
   "ExtraBalance":null,
   "RawResponse":null,
   "RefNum":"88888888",
   "CardHolder":"DOE/JOHN ",
   "HostResponse":"DEMO APPROVED",
   "HostCode":"0",
   "CvResponse":null,
   "CardType":"VISA",
   "AccountNum":"1443",
   "AvsResponse":null,
   "ApprovedAmount":10.25,
   "AmountDue":0.0,
   "TipAmount":0.0,
   "AuthCode":"000000",
   "CVM":null,
   "CID":"40",
   "ARC":"00",
   "IAD":"06010A0360AC02",
   "APPPN":null,
   "APPLab":"VISA CREDIT",
   "ATC":"0061",
   "TSI":"E800",
   "AID":"A0000000031010",
   "TVR":"0080008000",
   "TC":"7B940AFFF1D7D717",
   "CardBin":"406095",
   "SerialNo":" 5313125",
   "EntryMode":"Chip",
   "TransactionResult":true,
   "UniqueId":"5313125-3",
   "Token":null,
   "ExpirationDate":"0321"
}

C# Implemention

The following code demonstrates how you can perform a CreditSale() transaction in C#. Keep in mind that PI Commander is running in the background and maintains a HTTP persistent connection (keep-alive) :

 private async void CreditSale()
{
	string request;
	string result;
	request = "http://10.0.0.2:7001/method=creditsale&amount=10.25&ticketid=12&sn=53132532";
	using (HttpClient client = new HttpClient())
	using (HttpResponseMessage response = await client.GetAsync(request))
	using (HttpContent content = response.Content)
		{
			result = await content.ReadAsStringAsync();
		}
	Console.Write(result);
}

By calling this method, my PAX S300 terminal was fired up and it asked for the credit card. I inserted the chip card and the transaction was approved. The following is the JSON Response:

{
   "TransactionID":"4",
   "TicketID":"12",
   "TransType":"SALE",
   "Timestamp":"20171222124731",
   "ResponseMsg":"OK",
   "ResponseCode":"000000",
   "ExtraBalance":null,
   "RawResponse":null,
   "RefNum":"88888888",
   "CardHolder":"JOHN DOE",
   "HostResponse":"DEMO APPROVED",
   "HostCode":"0",
   "CvResponse":null,
   "CardType":"VISA",
   "AccountNum":"5588",
   "AvsResponse":null,
   "ApprovedAmount":10.25,
   "AmountDue":0.0,
   "TipAmount":0.0,
   "AuthCode":"000000",
   "CVM":null,
   "CID":"40",
   "ARC":"00",
   "IAD":"06010A03602400",
   "APPPN":null,
   "APPLab":"VISA DEBIT",
   "ATC":"00FC",
   "TSI":"6800",
   "AID":"A0000000031010",
   "TVR":"8080008000",
   "TC":"69C76F6EAC915930",
   "CardBin":"480209",
   "SerialNo":"53132532",
   "EntryMode":"Chip",
   "TransactionResult":true,
   "UniqueId":"53132532 -4",
   "Token":null,
   "ExpirationDate":"0320"
}

You can build the same process in any programming language with support for HTTP Request. Here is the same call in php for a web app:

$data=file_get_contents("http://10.0.0.2:7001/method=CreditSale&amount=10.25&ticketid=12&sn=5313125")	;
print_r($data)

As long as you can run PI Commander on a Windows machine on your network, other devices of any platform (iOS, Android) on the same network will be able to make transaction calls and produce the results.

Points of Interest

The need for processing chip and contactless credit cards on semi-integrated devices are on the rise. Two major factor in any viable solution are :

  1. Platform independence, or Platform Agnostic
  2. Credit Card processor independence, or Processor Agnostic

PI Commander brings you both both advantages . PI Commander gives you the freedom to focus on the development without any string attached and as a result you can let your customers to choose their own processor.


Using PIConnect

Category:Sample codes

Introduction

Semi-integrated techniques have provided many opportunities for software developers to directly, and without using any third party middleware or gateway, integrate their software to credit card processing terminals and pinpads. This article is an introduction to piconnect.dll, a library for semi-integration to PAX terminals such as the PAX S300, D210, etc.

Background

Since October 2015, what is known as the liability shift, forced all merchants who accept and process credit cards to accept chip cards or be responsible for charge backs and fraudulent charges. This naturally, put a lot of stress on point of sale software developers to add chip card processing capabilities to their software.

Several device manufacturers, including PAX, introduced semi-integration. In a semi-integrated solution, you integrate to a device, which in turn is fully integrated and certified with one or more major credit card processors, such as First Data, Global, Heartland, Vantiv, TSYS, etc.

PIConnect DLL by PI Technologies, is a dll for semi-integration into PAX. This is a small and very fast dll, written in C#, which supports every major transaction type, such as Credit Sale, Credit Auth, Credit Adjust, Credit Return, Debit Sale, Debit Return and EBT transactions.

Using the PIConnect DLL reduces your development time from weeks to minutes.

Using the code

This DLL is  now available on Nuget.  You can start by using a free developer account number from PI Technologies.

Reference to piconnect.dll in your software

In Visual Studio, expand your project and right click on the References and select Manage Nuget Packages. On Nuget go to the Browse tab and search for piconnect.

Create instances of PiPay() and DeviceSettings() classes:

PiPay myClass = new PiPay();
DeviceSettings myDevice = new DeviceSettings();

DeviceSettings() class prepares your PAX teminal:

myDevice.DeviceIp = ip; // IP Address of your PAX device
myDevice.PortNo = paxPort; // Port number of your PAX device, usually 10009
myDevice.Timeout = paxTimeout; // A timeout in microseconds. e.g: 30000 (30 seconds)
myDevice.DeviceSn = sn; // Serial number of your device. You will this on the device.
myDevice.AccNumber = Account; //your PI Technologies account number.

You could use a .ini file to store the device info, or if you are going to have a database, simply store this information in a table.

Perform a CreditSale() transaction

Most common transaction type is CreditSale().

PiPay myClass = new PiPay();
PaymentResponse myResp = new PaymentResponse();
DeviceSettings myDevice = new DeviceSettings();
myResp = myClass.CreditSale(amount, ticket);
jsonData = JsonConvert.SerializeObject(myResp);

CreditSale() method, requires an amount and a ticket number only.

As you can see we have introduced an instance of PaymentResponse() . This class has all the returned fields:

  • TransactionID
  • TicketID
  • TransType
  • Timestamp
  • ResponseMsg
  • ResponseCode
  • RefNum
  • CardHolder
  • HostResponse
  • HostCode
  • CardType
  • AccountNum
  • ApprovedAmount
  • AmountDue
  • TipAmount
  • AuthCod
  • CVM
  • SerialNo
  • EntryMode
  • TransactionResult
  • UniqueId
  • Token
  • ExpirationDate

In addition to these fields you will also receive several fields related to EMV.

If you use JSON.NET you can easily serialize myResp object into a JSON object.

Acceptable transaction types re listed below:

  1.             creditsale,
  2.             creditvoid,
  3.             creditreturn,
  4.             creditauth,
  5.             creditcapture,
  6.             creditadjust,
  7.             debitsale,
  8.             debitvoid,
  9.             debitreturn,
  10.             closebatch,
  11.             closeallbatches,
  12.             clearbatch,
  13.             initialize,
  14.             quickread,
  15.             transactiondetails,
  16.             failedtransactions,
  17.             totaltransactions,
  18.             lastbatch,
  19.             forcebatchclose,
  20.             ebtsale,
  21.             ebtreturn

Other Object Classes

PIConnect contains the following object classes:

  • BatchManage()
  • BatchResponse()
  • DetailReportResponse()
  • DeviceInit()
  • DeviceSettings()
  • PaymentResponse()
  • FailedReportResponse()
  • LastBatchReport()
  • ReadResponse()
  • ReportResponse()
  • SaResponse()
  • ShowMessageResponse()

CloseBatch()

At the end of each business day, merchants close their credit card transactions batch. Batch closing process could be automated or manual. The following example shows how to close a bacth:

PiPay myClass = new PiPay();
BatchResponse myResp = new BatchResponse();
DeviceSettings myDevice = new DeviceSettings();

myDevice.DeviceIp = ip;
myDevice.PortNo = paxPort;
myDevice.Timeout = paxTimeout;
myDevice.DeviceSn = sn;
myDevice.AccNumber = piAccount;

myClass.DeviceSetting = myDevice;
myResp = myClass.CloseBatch();
jsonData = JsonConvert.SerializeObject(myResp);

Tokenization

I did not want to close this article without talking about tokenization. Tokenization is a method in which your credit card processor converts sensititive credit card information into an encrypted token and you can use this token to perform a CreditSale() or CreditReturn(). Since piconnect.dll always returns a token (when your device has tokenization enabled) after CreditSale() transactions, you can perform subsequent tokenized CreditSale() transactions without access to the actual card number.

Look at the following CreditSale() with a token:

PiPay myClass = new PiPay();
PaymentResponse myResp = new PaymentResponse();
DeviceSettings myDevice = new DeviceSettings();
myResp = myClass.CreditSale(amount, ticket,token, expdate,cardtype );
jsonData = JsonConvert.SerializeObject(myResp);

Additional fields to be sent are the Token, Expiration date and Card type. All these fields are available to you after you perfom a CreditSale(). Future CreditSale() calls could just use the token and card is not required.


PIConnect Goes Level 2

Category:updates

PIConnect HPF and Omni now support level 2 business and corporate card processing, assuring merchants the best possible rates.

Three additional fields including Tax, Customer code and PO number are all that’s required.


PIConnect HPF

Category:updates

PIConnect HPF with golden chip is the latest innovation from PI Technologies. HPF as a hosted payment form to process card-not-present transactions, has been utilized to also launch card-present transactions.