/** * * 撤销订单,如果失败会重复调用10次 * @param string out_trade_no 商户订单号 * @param depth 调用次数,这里用递归深度表示 * @return false表示撤销失败,true表示撤销成功 */ private bool Cancel(string out_trade_no, int depth = 0) { if (depth > 10) { return(false); } WeixinDataHelper reverseInput = new WeixinDataHelper(this._weixinKey); reverseInput.SetValue("out_trade_no", out_trade_no); WeixinDataHelper result = weixinPayApi.Reverse(reverseInput); //接口调用失败 if (result.GetValue("return_code").ToString() != "SUCCESS") { return(false); } //如果结果为success且不需要重新调用撤销,则表示撤销成功 if (result.GetValue("result_code").ToString() != "SUCCESS" && result.GetValue("recall").ToString() == "N") { return(true); } else if (result.GetValue("recall").ToString() == "Y") { return(Cancel(out_trade_no, ++depth)); } return(false); }