public JsonResult EncryptedBindPhone(string code, string iv, string data, string nickname, string city)
        {
            var bus = new Bus(this.DataSource);
            var pay = new JsApiPay(this.Request);

            pay.GetOpenidAndSession(code, city);
            Phone     phone  = new Phone();
            bool      state  = false;
            exterData exdata = null;
            var       wxuser = bus.GetUserInfo(pay.openid, WxPayConfig.APPID(city));
            var       isSign = bus.isSign(pay.openid, WxPayConfig.APPID(city), city);

            if (!string.IsNullOrEmpty(pay.session_key))
            {
                string result = bus.AESDecrypt(iv, pay.session_key, data);
                phone             = Bus.JsonDeserialize <Phone>(result);
                state             = true;
                wxuser.Mobile     = phone.phoneNumber;
                wxuser.DataDriver = this.DataSource;
                wxuser.Store();
                exdata = bus.Sign(pay.openid, nickname, Request.UserHostAddress, city);
            }
            return(Json(new { exdata = exdata, isSign = isSign, state = state, phone = phone }, JsonRequestBehavior.AllowGet));
        }