protected boolean extractCommonsCardData(final byte[] pGpo) throws CommunicationException {
		boolean ret = false;
		// Extract data from Message Template 1
		byte data[] = TlvUtil.getValue(pGpo, EmvTags.RESPONSE_MESSAGE_TEMPLATE_1);
		if (data != null) {
			data = ArrayUtils.subarray(data, 2, data.length);
		} else { // Extract AFL data from Message template 2
			ret = extractTrackData(template.get().getCard(), pGpo);
			if (!ret) {
				data = TlvUtil.getValue(pGpo, EmvTags.APPLICATION_FILE_LOCATOR);
			} else {
				extractCardHolderName(pGpo);
			}
		}

		if (data != null) {
			// Extract Afl
			List<Afl> listAfl = extractAfl(data);
			// for each AFL
			for (Afl afl : listAfl) {
				// check all records
				for (int index = afl.getFirstRecord(); index <= afl.getLastRecord(); index++) {
					byte[] info = template.get().getProvider()
							.transceive(new CommandApdu(CommandEnum.READ_RECORD, index, afl.getSfi() << 3 | 4, 0).toBytes());
					// Extract card data
					if (ResponseUtils.isSucceed(info)) {
						extractCardHolderName(info);
						if (extractTrackData(template.get().getCard(), info)) {
							return true;
						}
					}
				}
			}
		}
		return ret;
	}
protected boolean extractCommonsCardData ( final byte [ ] pGpo ) throws CommunicationException { boolean ret = false ; byte data [ ] = TlvUtil . getValue ( pGpo , EmvTags . RESPONSE_MESSAGE_TEMPLATE_1 ) ; if ( data != null ) { data = ArrayUtils . subarray ( data , 2 , data . length ) ; } else { ret = extractTrackData ( template . get ( ) . getCard ( ) , pGpo ) ; if ( ! ret ) { data = TlvUtil . getValue ( pGpo , EmvTags . APPLICATION_FILE_LOCATOR ) ; } else { extractCardHolderName ( pGpo ) ; } } if ( data != null ) { List < Afl > listAfl = extractAfl ( data ) ; for ( Afl afl : listAfl ) { for ( int index = afl . getFirstRecord ( ) ; index <= afl . getLastRecord ( ) ; index ++ ) { byte [ ] info = template . get ( ) . getProvider ( ) . transceive ( new CommandApdu ( CommandEnum . READ_RECORD , index , afl . getSfi ( ) << 3 | 4 , 0 ) . toBytes ( ) ) ; if ( ResponseUtils . isSucceed ( info ) ) { extractCardHolderName ( info ) ; if ( extractTrackData ( template . get ( ) . getCard ( ) , info ) ) { return true ; } } } } } return ret ; }
Method used to extract commons card data

@param pGpo
global processing options response
@return true if the extraction succeed
@throws CommunicationException communication error