salix/db/routines/hedera/procedures/tpvTransaction_start.sql

72 lines
1.5 KiB
SQL

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 ;