If the transaction IDs don't match then it means there is a serious bug in webpay or marketplace. I think that's fine to check but your else clause as is will raise an error if ``contrib.transaction`` is None. This is bad because it will always be None the first time this code runs :)