How to handle Issuer Scripts un an EMV transaction?

Everything that you provide to the emv_completeEMVTransaction comes from the HOST (assuming you could contact the host where commError = FALSE).

71/72 does not come back from Authenticate Transaction (results from the transaction/card).

 

Example:

After authenticateTransaction, you get all the data you need to provide the HOST to make a decision  (or you need to retrieveTransactionResults if the tags you need are not provided by default).

You then send to host.

Host responds back with a response code (Tag 8A, two bytes of value), probably IAD (tag 91, 10 bytes of data), and in some cases issuer scripts, which can be either tag 71 or 72 (or they may be both provided back.

The host responds back with:

8A023030910A010203040506070830307103010203720401020304

We see:

8A 02 3030

91 0A 01020304050607083030

71 03 010203

72 04 0102030

So, we complete complete EMV Transaction with the following values:

commError = False

authCode = 0x3030

IAD = 0x01020304050607083030

tlvScripts = 0x7103010203720401020304

tlv = null

NOTE:  Some processors only return 91 (IAD), instead of both 8A + 91.  This is because the last two bytes of IAD = the value of 8A.  So they just want you to use the last to digits of tag 91 for authCode if they don't provide 8A.