72 lines
1.5 KiB
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 ;
|