张凌翔领导的白旗军自出现以来,便让清政府感到震惊。为平息白旗军的威胁,时任云贵总督的徐之铭指派云南开化镇都司何占标率领滇军,并联合普安厅同知钱埙展开剿灭白旗军的行动。接下来的战斗中,双方各有胜负,形成了对峙的局面。面对这种僵持局面,徐之铭决定采取招抚策略,试图通过软化手段迫使白旗军屈服。他找来刚刚投降的马如龙商议,马如龙凭借同教身份,先后两次致函张凌翔,劝他停止抵抗,投降朝廷。然而,张凌翔表面上麻痹马如龙,表示愿意商议,实际上却毫不放松备战,依然积极进攻,继续攻占城池,先后攻克了普安厅城、安南、兴义县城、归化厅、罗斛厅城(今罗甸)等地。短短时间内,白旗军的势力空前壮大,令清朝政府感到焦虑。 同治二年(1863年)二月,劳崇光履新云贵总督职务,张亮基则接任贵州巡抚。他们上任后立刻展开了对白旗军的新一轮围剿。安义镇总兵赵德昌和罗孝连率领的清军向白旗军控制的州县进军。经过一番恶战,册亨和安南相继被清军攻占,但普安县和兴义县却陷入了持续的拉锯战。经过两个多月的攻防战,普安县城最终被攻克,而兴义县的争夺更是异常激烈,持续了近九个月。普安县和兴义县相继被攻占后,清军和白旗军的战斗进入了僵持阶段。劳崇光意识到单纯依靠军力无法彻底解决问题,于是决定采取剿抚并用的方针,进一步巩固对地方的控制。与此同时,法国主教胡缚理也积极参与其中,一方面扩展教务,另一方面劝说白旗军的将领投降朝廷。
同治三年(1864年)春夏之际,胡缚理开始在永宁等地对布依族群众进行开导劝说,成功瓦解了布依族的武装力量,并使教务得到扩展。六月,胡缚理通过使者向新城的白旗军送去招降信。对于胡缚理的招降,张凌翔、马河图等人坚决反对,认为这是一种投降行为,不可接受。但在白旗军内部,一些将领却表示愿意接受招抚,其中以马忠最为显眼。马忠曾是白旗军中最早带领回民攻打高家之人的英雄,他屡立战功,勇猛善战,但因未被授予元帅之位,心中郁结不满。在兴义县失守后,马忠对白旗军的未来感到失望,当胡缚理提出招降时,他迅速改变立场,转投清朝,接受了招安。 张凌翔之死发生在同治三年(1864年)九月十六日。当时,张凌翔和马河图联合进攻兴义府城,马忠向兴义知府孙清彦请求支援,双方合力反攻兴义府。在十月二十四日,趁张凌翔和马河图不备,马忠成功将二人擒获,白旗军的领导层因此出现严重分裂。张凌翔和马河图的死,标志着白旗军的走向衰败,新的领导人金万照接管了军队的指挥。 金万照,字盛斗,云南澄江府新兴州(今玉溪)龙门村的阿訇。早在同治元年(1862年),他以议抚游击的身份开始在贵州招降白旗军。金万照在抵达新城后,受到白旗军的感召,加入了张凌翔的行列,并被尊为主教经略大臣,在白旗军内部赢得了极高的声望。然而,当胡缚理派人再次劝降时,白旗军上下坚决反对,劝降活动以失败告终。到了同治四年(1865年)五月,白旗军主动出击,摧毁了清军营地二十余座,并击毙了普安游击傅得胜。尽管如此,随着战事的不断推进,白旗军逐渐陷入困境。 同治七年(1868年),云南巡抚岑毓英派兵剿灭黔西南的白旗军。双方在兴义府、县交界处展开了激烈争斗,经过反复的争夺,白旗军的领地逐渐缩小,最终只剩下兴义府城和新城。尽管白旗军在新城坚守数月,但由于围攻愈加紧密,最终在同治十一年(1872年)正月,滇黔两省五万兵力联手攻占了兴义府城。在长时间的围困后,清军最终成功突破白旗军的防线。在兴义府被攻破后,清军迅速集中兵力向新城发起最后的进攻。新城作为最后的抵抗堡垒,虽然粮草充足,城墙坚固,但面对清军的强大攻势,守军依然难以坚持下去。九月下旬,贵州提督周达武前来督军,发现新城久攻不克后,下令招抚。经过长时间的坚持,张定中认识到大势已去,于是同意接受招安。金万照也意识到战争已无法挽回,表示愿意以个人生命交换将士的性命。十月一日,金万照前往马家屯与周达武会面,达成了协议。十月五日,金万照被解往贵阳,十七日,在贵阳六广门外被处决。张定中被押往贵阳,最终在监禁中服毒自尽。新城的白旗军大多被杀害,只有少数人幸免。至此,经过十四年的顽强抵抗,贵州历史上空前的回民反清运动最终宣告结束。