Take your string, and use Split, then sort the array:
string query = @"id = 657ec95c439eb4a76e48c5ea7 & amount = 1 & notify_status = success & currency = USD & time = 20190403095815 & reference = 190403175800PTM03428 & notify_id = D0000036639 - a6d98e5d0a08d3e8850f & fields = id % 2Camount % 2Cnotify_status % 2Ccurrency % 2Ctime % 2Creference % 2Cnotify_id & sign = 997b961b0541fb64b4c31096bc059055";
string trimmed = query.Replace(" & ", "&");
string[] queries = trimmed.Split('&');
queries = queries.Select(q => q.Trim()).OrderBy(q => q).ToArray();
If it wasn't for the spaces around the '&' in your original string (which I think are probably spurious) you could just use Array.Sort:
string query = @"id = 657ec95c439eb4a76e48c5ea7 & amount = 1 & notify_status = success & currency = USD & time = 20190403095815 & reference = 190403175800PTM03428 & notify_id = D0000036639 - a6d98e5d0a08d3e8850f & fields = id % 2Camount % 2Cnotify_status % 2Ccurrency % 2Ctime % 2Creference % 2Cnotify_id & sign = 997b961b0541fb64b4c31096bc059055";
string[] queries = query.Split('&');
Array.Sort(queries);