DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`tpvTransaction_start`( vAmount INT, vCompany INT, vUser INT) BEGIN /** * Start a new transaction with the virtual TPV, generating an identifier * of transaction and returning the parameters that should be sent to the * payment platform. * * @param vAmount Amount to pay in cents * @param vCompany The company identifier * @select Parameters that will be sent to payment platform */ DECLARE vSelf CHAR(12); DECLARE vMerchant INT; DECLARE vUrl VARCHAR(255); DECLARE vKey VARCHAR(50); DECLARE vEnvironment VARCHAR(255); DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; RESIGNAL; END; START TRANSACTION; IF vCompany IS NULL THEN SELECT companyFk INTO vCompany FROM tpvMerchantEnable LIMIT 1; END IF; SELECT merchantFk INTO vMerchant FROM tpvMerchantEnable WHERE companyFk = vCompany; SELECT environment INTO vEnvironment FROM util.config; IF vEnvironment = 'production' THEN SELECT c.url, m.secretKey INTO vUrl, vKey FROM tpvMerchant m JOIN tpvConfig c WHERE m.id = vMerchant; ELSE SELECT testUrl, testKey INTO vUrl, vKey FROM tpvConfig; END IF; INSERT INTO tpvTransaction SET merchantFk = vMerchant, clientFk = vUser, amount = vAmount; SET vSelf = LAST_INSERT_ID(); SELECT vAmount amount, vSelf transactionId, vMerchant merchant, currency, transactionType, terminal, merchantUrl, vUrl url, vKey secretKey FROM tpvConfig; COMMIT; END$$ DELIMITER ;