Nissanka’s 113-ball hit was an important part of the 190-run starting stand with Dimuth Karunaratne (83), who took the game away from the West Indies.
Kusal Mendis (34) and Sadira Samaravikrama (17) did the rest to easily reach their target of 244, for which the Windies thanked Karthi (87) after Mahish Thakshana (4/34) ripped most of their top order.
West Indies got off to a strong start, scoring 31 points in the first four Weavers before Thackshana allowed just two goals in the first Weavers before taking out Brandon King (10) in the second.
The spinner struck again in the third as Shamarch Brooks (2) missed, and in the fourth, captain Shai Hope (2) was his third victim, pinning the leg in front of him.
The game’s opener, Johnson Charles (39), was back in the cage an hour later, caught by his leg by Matisha Patirana, and the Windies were left floundering with 62 points at 4.
But Carty and Nicholas Puran (14) led the return, and the pair stopped a flurry of wins until Dusan Hemanta scored Puran, which further dragged the West Indies into a mire at 81-5.
Carty, surviving a dropped ball at the nine, continued to lead the scoreboard and brought his team to 123 for seven by the time Sahan Arachchige struck out Kyle Myers (18) and Hemant caught Roston Chase (1) on the leg.
Late contributions from Romario Shepard (26) and Kevin Sinclair (25) got the Windies close to the 250 mark, followed by Carty.