I think you can do this with named transactions. Perhaps you can store the names of open transactions in a table from the sp that begins them, then read and commit them by name from the second sp. So something like this:
DECLARE @tran_name VARCHAR(30)
SET @tran_name='test1'
INSERT INTO my_transactions
SELECT @tran_name
BEGIN TRANSACTION @tran_name
.
.
.
then in other sp:
DECLARE @tran_name VARCHAR(30)
SELECT @tran_name = transaction_name from my_transactions
COMMIT TRANSACTION @tran_name
DELETE FROM my_transactions WHERE transaction_name = @tran_name
No idea if this will work, but I'd be interested in what you come up with.