def track_transaction(self, transaction, session, visitor):
        transaction.validate()

        params = {
            'config': self.config,
            'tracker': self,
            'visitor': visitor,
            'session': session,
            'transaction': transaction,
        }
        request = TransactionRequest(**params)
        request.fire()

        for item in transaction.items:
            item.validate()

            params = {
                'config': self.config,
                'tracker': self,
                'visitor': visitor,
                'session': session,
                'item': item,
            }
            request = ItemRequest(**params)
            request.fire()
Combines _addTrans(), _addItem() (indirectly) and _trackTrans() of GA Javascript client.
dataset/ETHPy150Open kra3/py-ga-mob/pyga/requests.py/Tracker.track_transaction