Devin Booker scored 30 points, including a late 3-pointer with 23.8 seconds left, as Phoenix recovered from blowing a 17-point lead to beat Charlotte 101-96.